我已经成功地为 Mandelbrot 集着色,尽管在它变得“模糊”并且图案停止之前我无法放大很远。我通过增加 max_iteration 来解决这个问题,这是有效的,但我在 *1 放大倍率下得到的颜色很少,而且只有在放大时才会出现很多颜色。我理解为什么会发生这种情况,因为在“真正的”Mandelbrot-set 中没有颜色和增加 max_iterations 只会让它更接近那个。但我的问题是,在整个缩放过程中,像 youtube 上的缩放如何拥有美丽的色彩,同时仍然能够放大以获得永远的感觉?
我试过在网上到处寻找,但我找不到解决方案,当我查看这些 youtube 缩放的描述时,他们似乎几乎没有提供关于他们如何进行缩放的任何信息。
这里只是绘制 Mandelbrot 集的代码部分。下面的代码是在处理过程中编写的,它是带有添加视觉库的 java。您可以在此处了解有关该计划的更多信息:https : //processing.org/
//m is max_iterations
//mb is the function which calculates how many iterations each point took to escape to infinity. I won't be including the function since I know it works fine and it's quite messy.
//i'm using a HSB/HSV system to draw the mandelbrot
hue=(mb(x, y, m)*360)/m;
sat=255;
if (mb(x, y, m)<m) {
val=255;
}
else {
val=0; …Run Code Online (Sandbox Code Playgroud) 当我制作一个普通的曼德尔布罗集时,它工作得很好。但是,当我尝试将其反转为类似泪滴的东西时(请参阅此处了解更多背景信息:https://www.youtube.com/watch?v =mLJJUElQMRY),它完全扭曲了,看起来一点也不像泪滴。
我试过调查它,但似乎我做的一切都是正确的。我通过将 1 除以“c”变量来反转它。
这是我的代码的一部分,它是实际的公式,这是在处理中编写的,只是添加了可视化库的 Java:
zx2=zx*zx;
zy2=zy*zy;
zy = 2*zx*zy + 1.0/(y); //the "1.0/" is what makes it inverted, a normal Mandelbrot set is just y and x on its own.
zx = zx2-zy2 + 1.0/(x);
Run Code Online (Sandbox Code Playgroud)
当我运行代码时,它非常扭曲,甚至看起来都不像泪滴!它看起来是这样的:

然后我尝试通过实现答案的代码来修复它,代码如下:
zx2=zx*zx;
zy2=zy*zy;
zy = 2*zx*zy + (y/(x*x+y*y));
zx = zx2-zy2 + (x/(x*s+y*y));
Run Code Online (Sandbox Code Playgroud)
但虽然它看起来确实是倒置的,但它仍然是扭曲的,看起来不像泪滴。这是一张照片:
。
我在实现代码时做错了什么吗?
我知道这两者都是有效的并且含义完全相同:
首选:
void foo(int[] bar){
// do something
}
Run Code Online (Sandbox Code Playgroud)
不优选:
void foo(int bar[]){
// do something
}
Run Code Online (Sandbox Code Playgroud)
我不明白的是,遵循与上面相同的逻辑,为什么这无效?
void foo(int... bar[]){
// do something
}
Run Code Online (Sandbox Code Playgroud)
但这是:
void foo(int[]... bar){
// do something
}
Run Code Online (Sandbox Code Playgroud)