我阅读了这篇文章: http://www.wikihow.com/Plot-the-Mandelbrot-Set-By-Hand
但是我在第七步卡住了。我正在使用javascript画布绘制集合。
我只需要基本的C值就可以了。
for (var y = 0; y < ImageHeight; y++) {
for (var x = 0; x < ImageWidth; x++) {
// Pixel-Position for ImageObject
var xy = (x + y * image.width) * 4;
// Convert Image-Dimension to a radius of 2
var xi = ((x / ImageWidth) * 4) - 2;
var yi = ((y / ImageHeight) * 4) - 2;
for (var n = 0; n < MaxIterations; n++) {
// Complex number stuff..?
z = (xi*xi) + (yi*yi) + c;
c = 0; // Somethig with z ..?
if (z < 4) {
image.data[xy] = inner_color[0];
image.data[xy+1] = inner_color[1];
image.data[xy+2] = inner_color[2];
image.data[xy+3] = Math.round(n * cdiff);
} else {
image.data[xy] = outer_color[0];
image.data[xy+1] = outer_color[1];
image.data[xy+2] = outer_color[2];
image.data[xy+3] = Math.round(n * cdiff);
break;
}
}
}
}
我也阅读了很多关于虚数等内容,但我并不太理解如何进行计算。并且它们似乎对我来说毫无用处,因为你还是必须将它们转换回实数才能在javascript中执行逻辑操作。
这是它的样子:[已删除]
如果您移除url末尾的2,您会看到另一种版本,其中我只是重写了一个小的c++代码片段。
但缩放有些奇怪,这就是为什么我想自己编写它的原因。
我理解迭代函数集合创建的基本概念,但正如我所说,复数部分令我困扰。或许还有更简单的解释呢?