微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

原文地址:https://www.jb51.cc/python/533235.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐