Mandlebrotのセットのようなものをいじっています。なぜなら、それが生成する写真はきれいだと思うからです。私は、JavaScriptで描画する問題に取り組み、自分に何ができるかを確認しようと思った。私はいくつかのアルゴリズムを見ました、すなわち:
http://library.thinkquest.org/26242/full/progs/a2.html
私はこれに翻訳しました:
drawGraph: function(canvas,resolution,iterations,colors,coefficent){
var context = canvas.getContext('2d');
for(var m = 0; m < resolution.x; m++){
for(var n = 0; n < resolution.y; n++){
var x = m,
x2 = x*x,
y = n,
y2 = y*y;
var i;
for(i = 1; i < iterations; i++){
if(x2 + y2 > 4) break;
var new_x = x2 - y2 + coefficent.a;
var new_y = 2*x*y + coefficent.b;
x = new_x;
y = new_y;
}
var color = i % colors;
DrawUtils.drawPoint(context,m,n,color);
}
}
}
これは基本的に1色のボックスを描画します。
それから私はこれを試しました:
http://en.wikipedia.org/wiki/Mandelbrot_set#Escape_time_algorithm
私はこれに翻訳しました:
drawGraph: function(canvas,resolution,iterations,colors,coefficent){
var context = canvas.getContext('2d');
for(var m = 0; m < resolution.x; m++){
for(var n = 0; n < resolution.y; n++){
var x = 0,
y = 0,
x0 = ((m/resolution.x) * 3.5) - 2.5,
y0 = ((n/resolution.y) * 2) - 1;
var i = 0;
while(x*x + y*y < 4 && i < iterations){
var x_temp = x*x - y*y + x0;
y = 2*x*y + y0;
x = x_temp;
i++;
}
var color = 0;
if(x*x + y*y >= 4){
color = i % colors;
}
DrawUtils.drawPoint(context,m,n,color);
}
}
}
これはブラックボックスを生成します。x0とy0のスケーリングはピクセルの要素であると言っていたので、アルゴリズムの言い回しは私を混乱させましたが、アルゴリズムの後、係数c = x0+iy0と言います。それで、それは私が関数に所定の係数を渡さないことを意味しますか?
これらのテストのほとんどで、係数0.25 + 0iを使用していましたが、まったく同じ結果が得られる他のテストを試しました。
私はここで何が間違っているのですか?