从标题中可以看出,我正忙于编写一个小程序,用于在 Java 中可视化分形。任何处理分形的人都会到达他/她寻找解决方案以消除这些愚蠢的“条带”的地步,而您只需按照逃脱所需的迭代次数为像素着色。所以我搜索了一种更高级的着色算法,找到了“标准化迭代计数”。我使用的公式是:
float loc = (float) 1 - Math.log(Math.log(c.abs())) / Math.log(2);
互联网上的每个人都对这个算法非常满意,每个人都使用它,每个人都得到了很好的结果。除了我。我想,这个算法应该提供一个介于 0 和 1 之间的浮点数。但这不会发生。我做了一些计算并得出结论,该算法仅适用于 c.abs() >= Math.E && c.abs() <= Math.exp(2) (即 Math.E * Math.E )。就数字而言,这意味着,我对这个等式的输入必须介于 2.718 和 7.389 之间。
但是,当复数 c 的大小大于 2 时,它被认为趋于无穷大。但是对于任何小于 Math.E 的 Input,我得到的值都大于 1。对于任何大于 Math.exp(2) 的数字,它都为负数。如果复数逃逸得非常快,就会出现这种情况。
所以请告诉我:我做错了什么。我很绝望。
谢谢。
编辑:
我错了:我发布的代码是正确的,我只是 1. 以错误的方式使用它,因此它没有提供正确的输出。2. 必须将 mandelbrot/julia 算法的救助值设置为 10,否则我将再次获得愚蠢的乐队。
问题解决了!