Mandelbrot,将html变量转换为javascript
我有一个问题,我需要配置一个代码。这使得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
<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>