小编Mor*_*S42的帖子

找不到按照我的目标为 Mandelbrot-set 上色的方法

我已经成功地为 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)

java math processing fractals mandelbrot

5
推荐指数
1
解决办法
1178
查看次数

当尝试创建倒置曼德尔布罗特集时,它会扭曲

当我制作一个普通的曼德尔布罗集时,它工作得很好。但是,当我尝试将其反转为类似泪滴的东西时(请参阅此处了解更多背景信息: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)

但虽然它看起来确实是倒置的,但它仍然是扭曲的,看起来不像泪滴。这是一张照片:

扭曲的倒曼德尔布罗特

我在实现代码时做错了什么吗?

java processing fractals mandelbrot complex-numbers

2
推荐指数
1
解决办法
999
查看次数

在 Java 中,为什么这个语法有效而这个无效?

我知道这两者都是有效的并且含义完全相同:

首选:

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)

java arrays function ellipsis

-2
推荐指数
1
解决办法
182
查看次数