加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

Python-Mandelbrot设置平滑着色功能

发布时间:2020-12-17 17:39:59 所属栏目:Python 来源:网络整理
导读:我用python编程了Mandelbrot集,但是看起来很奇怪,所以我搜索了平滑的颜色. 我已经使用对数和线性插值对平滑的着色功能进行了编程,但是无论如何尝试,我都无法获得想要的结果: self.palette = [(3,25,61),(5,43,107),(7,61,153),(20,96,226),164,(74,181,(138

我用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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读