Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mandelbrot,将html变量转换为javascript_Javascript_Html_Canvas_Mandelbrot - Fatal编程技术网

Mandelbrot,将html变量转换为javascript

Mandelbrot,将html变量转换为javascript,javascript,html,canvas,mandelbrot,Javascript,Html,Canvas,Mandelbrot,我有一个问题,我需要配置一个代码。这使得mandelbrot在画布上呈现分形,我需要从html表单中创建一个变量,将其转换为javascript变量,但这是我的问题。我还需要从表中得到测试数范围的最小值和最大值。有什么想法吗?请帮忙 <body> <h1>Mandelbrot fraktál</h1> <form> c: <input id="cid" type="text" name="firstname"> <input ty

我有一个问题,我需要配置一个代码。这使得mandelbrot在画布上呈现分形,我需要从html表单中创建一个变量,将其转换为javascript变量,但这是我的问题。我还需要从表中得到测试数范围的最小值和最大值。有什么想法吗?请帮忙

<body>
<h1>Mandelbrot fraktál</h1>
<form>
c: <input id="cid" type="text" name="firstname">
<input type="submit" value="Submit">
</form>

<!-- A vászon kijelölése, méretezése -->
<canvas id="myCanvas" width="500" height="500" style="border:1px solid #d3d3d3;">
Your browser does not support the HTML5 canvas tag.</canvas>

<script>
 // === Mandelbrot objektum létrehozása
 var mandelbrot = {
  // === Osztályváltozók
  maxiter : 32, // iterációk száma
  ////xmin : -2.0, xmax : 1.0, // valós rész 
  ////ymin : -1.5, ymax : 1.5, // képzetes rész

  // === Komplex szám eleme-e a Mandelbrot halmaznak?
  mandelcolor: function (c,b){
   // a: valós rész, b: képzetes rész
   var z=[c,b];
   var i=0;
   // A következő sorozatelem kiszámítása
   while(i<this.maxiter && z[0]*z[0]+z[1]*z[1]<=4.0 ){
    // Új elem = Z négyzete + kiinduló érték
    var aa=z[0]*z[0]-z[1]*z[1]+c;
    var bb=2*z[0]*z[1]+b;
    z[0]=aa; z[1]=bb;
    i++;
   }
   // Visszatérési érték a pixel színkódja
   return '#'+i.toString(16)+i.toString(16)+i.toString(16);
  },

  // === Mandelbrot fraktál rajzolása soronként
  fraktal: function(){
   for(var y=0;y<context.canvas.height;y++)
    // A vizsgált komplex szám képzetes részének
    // leképezése az Y koordináta alapján 
    var zy = this.ymin + (this.ymax - this.ymin) * y / context.canvas.height;

    for(var x=0;x<context.canvas.width;x++){
     // A vizsgált komplex szám valós részének leképezése
     // az X koordináta alapján
     var zx = this.xmin + (this.xmax - this.xmin) * x / context.canvas.width;
     context.fillStyle=this.mandelcolor(document.getelementById("cid"),zy); 
     context.fillRect(x,y,1,1);
    }
   }
  }
 }

 // === Globális változók deklarálása
 var canvas=document.getElementById('myCanvas');
 var context=canvas.getContext('2d');

 mandelbrot.fraktal();

</script> 

曼德布罗特·弗拉克塔勒
c:
您的浏览器不支持HTML5画布标记。
//===Mandelbrot objektum létrehozása
var mandelbrot={
//==Osztályváltozók
马克西特:32,//iterációk Szama
////xmin:-2.0,xmax:1.0,//valós rész
////ymin:-1.5,ymax:1.5,//képzetes rész
//===Komplex szám eleme-e a Mandelbrot halmaznak?
mandelcolor:函数(c,b){
//a:valós rész,b:képzetes rész
var z=[c,b];
var i=0;
//科维特凯兹·索罗扎泰勒姆·基萨姆塔萨

而(i给用户2输入类型=范围元素以选择其最小值和最大值

<input type=range id=minValue min=0 max=100 value=25>
<input type=range id=maxValue min=0 max=100 value=75>

MarkE正确地使用了JS中的事件,但是代码中也有一个错误,希望我在下面解决。使用分形,您可能想要设置中心复数,并通过缩放计算出最小值和最大值

您有一个复数输入,但这需要一些字符串解析来分离组件,因此我将它们分离为实部和虚部的输入(我也在其中放大)我不确定您打算如何处理表单提交-在我看来,您可能不想要表单,因为您不想每次都提交任何内容

也许应该有人对此进行清理以获得更完整的答案,我建议使用JQuery而不是getElementByID(区分大小写)

至少以下代码有效:

<h1>Mandelbrot fraktál</h1>

    <form>c:
        <input id="recid" type="text" name="Re(c)" value=-0.5>
        <input id="imcid" type="text" name="Im(c)" value=0.0>
        <input id="zoom" type="text" name="zoom" value=1.5>
        <input type="submit" value="Submit">
    </form>
    <!-- A vászon kijelölése, méretezése -->
    <canvas id="myCanvas" width="500" height="500" style="border:1px solid #d3d3d3;">Your browser does not support the HTML5 canvas tag.</canvas>

<script>
// === Mandelbrot objektum létrehozása
var mandelbrot = {
    // === Osztályváltozók
    ///document.getelementById("cid");

    maxiter: 32, // iterációk száma
    xmin: -2.0,
    xmax: 1.0, // valós rész 
    ymin: -1.5,
    ymax: 1.5, // képzetes rész

    zoom: 1.5,

    // === Komplex szám eleme-e a Mandelbrot halmaznak?
    mandelcolor: function (c, b) {
        // a: valós rész, b: képzetes rész
        var z = [c, b];
        var i = 0;
        // A következő sorozatelem kiszámítása
        while (i < this.maxiter && z[0] * z[0] + z[1] * z[1] <= 4.0) {
            // Új elem = Z négyzete + kiinduló érték
            var aa = z[0] * z[0] - z[1] * z[1] + c;
            var bb = 2 * z[0] * z[1] + b;
            z[0] = aa;
            z[1] = bb;
            i++;
        }
        // Visszatérési érték a pixel színkódja
        return '#' + i.toString(16) + i.toString(16) + i.toString(16);
    },

    // === Mandelbrot fraktál rajzolása soronként
    fraktal: function () {
        //console.log(document.getElementById("recid").innerHTML);
        this.zoom = parseFloat(document.getElementById("zoom").value);
        this.xmin = parseFloat(document.getElementById("recid").value) - this.zoom;
        this.ymin = parseFloat(document.getElementById("imcid").value) - this.zoom;
        this.xmax = parseFloat(document.getElementById("recid").value) + this.zoom;
        this.ymax = parseFloat(document.getElementById("imcid").value) + this.zoom;

        for (var y = 0; y < context.canvas.height; y++) {
            // A vizsgált komplex szám képzetes részének
            // leképezése az Y koordináta alapján 
            var zy = this.ymin + (this.ymax - this.ymin) * y / context.canvas.height;

            for (var x = 0; x < context.canvas.width; x++) {
                // A vizsgált komplex szám valós részének leképezése
                // az X koordináta alapján
                var zx = this.xmin + (this.xmax - this.xmin) * x / context.canvas.width;
                context.fillStyle = this.mandelcolor(zx, zy);
                context.fillRect(x, y, 1, 1);
            }
        }
    }
};

// === Globális változók deklarálása
var canvas = document.getElementById('myCanvas');
var context = canvas.getContext('2d');

mandelbrot.fraktal();
</script>
Mandelbrot fraktál
c:
您的浏览器不支持HTML5画布标记。
//===Mandelbrot objektum létrehozása
var mandelbrot={
//==Osztályváltozók
///文件.getelementById(“cid”);
马克西特:32,//iterációk Szama
xmin:-2.0,
xmax:1.0,//valós rész
ymin:-1.5,
ymax:1.5,//képzetes rész
缩放:1.5,
//===Komplex szám eleme-e a Mandelbrot halmaznak?
mandelcolor:函数(c,b){
//a:valós rész,b:képzetes rész
var z=[c,b];
var i=0;
//科维特凯兹·索罗扎泰勒姆·基萨姆塔萨

而(i<h1>Mandelbrot fraktál</h1> <form>c: <input id="recid" type="text" name="Re(c)" value=-0.5> <input id="imcid" type="text" name="Im(c)" value=0.0> <input id="zoom" type="text" name="zoom" value=1.5> <input type="submit" value="Submit"> </form> <!-- A vászon kijelölése, méretezése --> <canvas id="myCanvas" width="500" height="500" style="border:1px solid #d3d3d3;">Your browser does not support the HTML5 canvas tag.</canvas> <script> // === Mandelbrot objektum létrehozása var mandelbrot = { // === Osztályváltozók ///document.getelementById("cid"); maxiter: 32, // iterációk száma xmin: -2.0, xmax: 1.0, // valós rész ymin: -1.5, ymax: 1.5, // képzetes rész zoom: 1.5, // === Komplex szám eleme-e a Mandelbrot halmaznak? mandelcolor: function (c, b) { // a: valós rész, b: képzetes rész var z = [c, b]; var i = 0; // A következő sorozatelem kiszámítása while (i < this.maxiter && z[0] * z[0] + z[1] * z[1] <= 4.0) { // Új elem = Z négyzete + kiinduló érték var aa = z[0] * z[0] - z[1] * z[1] + c; var bb = 2 * z[0] * z[1] + b; z[0] = aa; z[1] = bb; i++; } // Visszatérési érték a pixel színkódja return '#' + i.toString(16) + i.toString(16) + i.toString(16); }, // === Mandelbrot fraktál rajzolása soronként fraktal: function () { //console.log(document.getElementById("recid").innerHTML); this.zoom = parseFloat(document.getElementById("zoom").value); this.xmin = parseFloat(document.getElementById("recid").value) - this.zoom; this.ymin = parseFloat(document.getElementById("imcid").value) - this.zoom; this.xmax = parseFloat(document.getElementById("recid").value) + this.zoom; this.ymax = parseFloat(document.getElementById("imcid").value) + this.zoom; for (var y = 0; y < context.canvas.height; y++) { // A vizsgált komplex szám képzetes részének // leképezése az Y koordináta alapján var zy = this.ymin + (this.ymax - this.ymin) * y / context.canvas.height; for (var x = 0; x < context.canvas.width; x++) { // A vizsgált komplex szám valós részének leképezése // az X koordináta alapján var zx = this.xmin + (this.xmax - this.xmin) * x / context.canvas.width; context.fillStyle = this.mandelcolor(zx, zy); context.fillRect(x, y, 1, 1); } } } }; // === Globális változók deklarálása var canvas = document.getElementById('myCanvas'); var context = canvas.getContext('2d'); mandelbrot.fraktal(); </script>