当前位置: 首页 > 知识库问答 >
问题:

如何使用Mandelbrot分形生成器解决此问题?

裴劲
2023-03-14

我一直在做一个渲染Mandelbrot分形的项目。对于那些知道的人,它是通过迭代以下函数生成的,其中c是复杂平面上的点:

function f(c, z) return z^2 + c end

迭代该函数将生成以下分形(忽略颜色):

当你把函数改为这个,(z提高到三次方)

function f(c, z) return z^3 + c end

分形应该呈现为这样(同样,颜色并不重要):

然而,当我把z提升到3的幂次时,我得到了一个非常类似于把z提升到2的幂次时的图像。如何正确进行分形渲染?这是完成迭代的代码:(实变量和虚变量只是将屏幕从-2缩放到2)

--loop through each pixel, col = column, row = row
local real = (col - zoomCol) * 4 / width
local imaginary = (row - zoomRow) * 4 / width 
local z, c, iter = 0, 0, 0
while math.sqrt(z^2 + c^2) <= 2 and iter < maxIter do
    local zNew = z^2 - c^2 + real
    c = 2*z*c + imaginary
    z = zNew
    iter = iter + 1
end

共有1个答案

戚翼
2023-03-14

所以我最近决定重新制作一个Mandelbrot分形生成器,它比我上次的尝试成功得多,因为我的编程技能随着实践而提高。

我决定使用递归对mandelbrot函数进行泛化,以满足任何人的需要。例如,你可以做f(z,c)z^2cf(z,c)z^3C

这是为可能需要它的任何人准备的:

function raise(r, i, cr, ci, pow)
    if pow == 1 then
        return r + cr, i + ci
    end
    return raise(r*r-i*i, 2*r*i, cr, ci, pow - 1)
end

它是这样使用的:

r, i = raise(r, i, CONSTANT_REAL_PART, CONSTANT_IMAG_PART, POWER)
 类似资料:
  • 生成Mandelbrot分形的方程是。问题是,在计算机程序中,C用于屏幕上的缩放/分辨率和位置。我的问题是,我怎样才能得到这样的分形: 沃尔夫拉姆 () 我的代码(来自罗塞塔代码):

  • 这个错误显示在logcat-java中。lang.NoSuchMethodError:没有静态方法zzce(Landroid/content/Context;)V类内Lcom/google/android/gms/common/GoogleAppAvailability;或者它的超类(声明'com.google.android.gms.common.GoogleAppAvailability'出现

  • 对于复杂变量,我使用以下复杂类文件。 下面的java代码是Mandelbrot集合的迭代计算器示例。 提前谢谢!

  • 为了理解我在某个地方读到的一句话,我真的在挠头:“我们在分形中放大的越多,我们最可能需要执行的迭代就越多”。 到目前为止,我还没有找到任何数学/学术论文证明这一说法。我还设法找到了一个计算mandelbrot集的小代码,取自这里:http://warp.povusers.org/Mandelbrot/但是,我们无法理解缩放是如何影响迭代的。 谢谢!

  • 我尝试使用openapi-Generater-maven-plugin与Spring Boot 2.4.3一起根据Internet上的一些示例,通过openapi.yaml中的规范生成代码,其中没有示例提供包含所需的完整依赖项。该插件生成一个名为的类,该类在内部使用导入的类。 AFAIK这个类不推荐使用class,但我找不到这个新类的存储库。 这是我的POM: 更新后的POM: openapi。指

  • 我有一个分区问题,需要建议。我得到了一个长度为偶数的一维数组。我需要编写一个布尔方法来确定数组是否可以划分为两个大小相等的子数组,并且具有相等的和,不允许循环。 例如,数组#1{-3,5,-12,14,-9,13}将返回false,因为-35-12 14=-9 13,但是在左侧有4个元素,在另一侧有2个元素。 数组#2将返回true:{-3,14,12,5,-9,13}:-3 5 14=12-9