Python-Mandelbrot设置平滑着色功能

前端之家收集整理的这篇文章主要介绍了Python-Mandelbrot设置平滑着色功能 前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我用python编程了Mandelbrot集,但是看起来很奇怪,所以我搜索了平滑的颜色.
我已经使用对数和线性插值对平滑的着色功能进行了编程,但是无论如何尝试,我都无法获得想要的结果:

self.palette = [(3,25,61),(5,43,107),(7,61,153),(20,96,226),164,(74,181,(138,211,242),(205,234,247),(225,237,(255,255,255)]

这是我的调色板

if n == self.max_iterations:
    self.screen.set_at((x,y),(110,13,13))
else:
    gradient = 1 + n - math.log(math.log(abs(m))) / math.log(2.0)
    iteration = n + 1 - gradient
    color1 = list(self.palette[n % 10])
    if n % 10 <= 8:
        color2 = list(self.palette[n % 10+1])
    else:
        color2 = list(self.palette[-1])

    color = [[],[],[]]
    for number,elt in enumerate(color):
        color[number] = color1[number] + (iteration % 1)*(color2[number]-color1[number])

    self.screen.set_at((x,tuple(color))

这是我的着色功能

而我得到的

如您所见,颜色是平滑的,但是以错误的方式,颜色没有连续性

我想要这样的东西:

理想的结果

 

我们看不到色差

最佳答案
看起来您正在基于离散值(n,转义时间)选择像素颜色.

我会建议:

1)在1D线上绘制颜色与-n的关系.它看起来连续吗?如果不是,请选择连续显示的颜色图.增加

2)找到一种使n连续而不是离散的方法.一种方法是通过计算查看窗口的最大退出时间,然后将所有其他退出时间除以该值,以产生更连续的场.请参阅以下有关逸出时间标准化的链接
https://linas.org/art-gallery/escape/escape.html

我相信,如果您同时满足以上两个条件,则主图像周围的场将显示为连续的,而不是具有“等值线”的外观.

猜你在找的Python相关文章