使用 colorsys 模块在曼德布洛特和朱莉娅布景上产生彩虹效果



我有一些代码可以创建两个图像:两个曼德布洛特集合和一个朱莉娅集合。但是,我想通过使用colorsys使它们"彩虹般"来为事情增添趣味。 这是我到目前为止的代码:

from PIL import Image
import colorsys
imgx, imgy = 512, 512
maxIter = 256
m1 = Image.new("RGB", (imgx, imgy))
m2 = Image.new("RGB", (imgx, imgy))
j = Image.new("RGB", (imgx, imgy))
def mandelbrot(xmin, xmax, ymin, ymax, image, name):
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 = z**2 + c
r = i
g = int((i*50)%256)
b = int(255 - i)
image.putpixel((x, y), (r, g, b))
image.save(name, "PNG")
def julia(xmin, xmax, ymin, ymax):
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 = c
for i in range(maxIter):
if abs(z) > 2.0:
break
z = z**2 + complex(-0.1, 0.651)
r = i
g = int((i*50)%256)
b = int(255 - i)
j.putpixel((x, y), (r, g, b))
j.save("julia.png", "PNG")

mandelbrot(-0.55, -0.5, -0.7, -0.65, m1, "m1.png")
mandelbrot(0.37, 0.38, 0.29, 0.3, m2, "m2.png")
julia(-0.6, 0.6, -0.6, 0.6)

我什至不知道如何开始。有人可以指出我正确的方向吗?我附上了两张图片,其中一张是我制作的图像,其中一张是我想制作的示例。

曼德布洛特 1
参考

文献

我取得了一些成功(在 C 而不是 Python 中(,通过创建一个 RGB 数组,该数组交叉淡入淡出 B 和 G 没有 R,然后是 G 和 R 没有 B,然后是 R 和 B 没有 G。然后使用迭代(模数组长度(为数组编制索引。除了M集本身是黑色的。

为了获得更平滑的结果,请过滤图像。

最新更新