朱莉娅设置代码创建一个圆而不是一个分形

时间:2018-10-24 23:22:09

标签: python fractals mandelbrot

我有此代码:

from PIL import Image
import colorsys

xmin, xmax = -2.0, 2.0
ymin, ymax = -2.0, 2.0

depth = 12

imgx, imgy = 512, 512

maxIter = 256

image = Image.new("RGB", (imgx, imgy))

for y in range(imgy):
    cy = y * (ymax - ymin)/(imgy - 1) + ymin
    for x in range(imgx):
        cx = x * (xmax - xmin)/(imgx - 1) + xmin
        c = complex(cx, cy)
        z = 0
        for i in range(maxIter):
            if abs(z) > 2.0:
                break
            z = c + complex(0.25, 0.1)
        r = i
        g = int((i*50)%256)
        b = int(255 - i)
        image.putpixel((x, y), (r, g, b))

它创建一个圆的图像(下图),我不明白为什么。我认为这可能与for循环和if语句有关,但我无法弄清楚问题出在哪里。如果不是那样,那是什么?

旁注:此代码改编自我编写的Mandelbrot设置代码。唯一的区别是我有z = c + complex(0.25, 0.1),

而不是z = z**2 + c.

Julia Set

1 个答案:

答案 0 :(得分:0)

此行:

z = c + complex(0.25, 0.1)

在每次迭代中总是产生相同的值(当前点+一个常数),因此您的代码只画了一个圆。将该行更改为

z = z**2 + complex(0.25, 0.1)

并根据当前点初始化z(例如c在当前代码中)。