栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Mandelbrot-算法-背景色

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Mandelbrot-算法-背景色

这是我对另一个问题的回答的快速`n肮脏改编,该问题涉及将一系列值映射到伪颜色,从而使它们可以映射到整个RGB颜色调色板,而不是仅映射到两个。请注意,中间颜色是在RGB色彩空间而不是HSV中插值的(在我看来,这通常看起来更好,但需要更多的计算)。

我对它并不完全满意,但是这个周末我的时间非常有限,至少到目前为止,我的工作似乎可行,即使它不是最佳选择,因此我将其发布给您,以供您试用:

def palette_pseudocolor(val, minval, maxval, palette):    max_index = len(palette)-1    # convert val in range minval...maxval to range 0..max_index    v = (float(val-minval) / (maxval-minval)) * max_index    # split result into integer and fractional parts    i = int(v); f = v-i    # interpolate between two colors in the palette    c0, c1 = palette[i], palette[min(i+1, max_index)]    d = c1[0]-c0[0], c1[1]-c0[1], c1[2]-c0[2]    return c0[0]+f*d[0], c0[1]+f*d[1], c0[2]+f*d[2]if __name__ == '__main__':    numsteps = 10    palette = [(1,0,0), (0,1,0), (0,0,1)] # [RED, GREEN, BLUE]    print 'val       R      G      B'    for val in xrange(0, 100+numsteps, numsteps):        print ('%3d -> (%.3f, %.3f, %.3f)' %    ((val,) + palette_pseudocolor(val, 0, 100, palette)))

输出:

val       R      G      B  0 -> (1.000, 0.000, 0.000) 10 -> (0.800, 0.200, 0.000) 20 -> (0.600, 0.400, 0.000) 30 -> (0.400, 0.600, 0.000) 40 -> (0.200, 0.800, 0.000) 50 -> (0.000, 1.000, 0.000) 60 -> (0.000, 0.800, 0.200) 70 -> (0.000, 0.600, 0.400) 80 -> (0.000, 0.400, 0.600) 90 -> (0.000, 0.200, 0.800)100 -> (0.000, 0.000, 1.000)

这是示例中使用红色,绿色和蓝色调色板产生的颜色渐变:



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/611402.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号