Юлия установила код, создающий круг вместо фрактала - PullRequest
0 голосов
/ 25 октября 2018

У меня есть этот код:

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, но я не могу понять, в чем проблема.Если это не так, что это?

Примечание: этот код адаптирован из написанного мною кода Мандельброта.Разница лишь в том, что вместо z = c + complex(0.25, 0.1), у меня есть z = z**2 + c.

Джулия Сет

1 Ответ

0 голосов
/ 25 октября 2018

Эта строка:

z = c + complex(0.25, 0.1)

всегда выдает одно и то же значение (текущая точка + константа) в каждой итерации, поэтому ваш код просто рисует круг.Измените эту строку на

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

и инициализируйте z на основе текущей точки (например, c в вашем текущем коде).

...