请教一个渐变色的问题

一个数值x,,两个颜色(a,b),根据x数值的大小,数值越大越靠近b,越小越靠近a,这个如何实现?
通过webgl

阅读 1.5k
1 个回答

这个你需要先描述出颜色(a,b)间变化的规律啊,才能进行后一步工作。
此外你还需要规定数值范围[Xmin,Xmax],这样才能进行相应的映射。为了计算的方便,甚至还需要规定变化精度。

变化规律是需要你规定的,因为如果不规定,这样的方案有无穷种的。

我简单给你提一种渐变方案,比如颜色a和b都采用RGB颜色,这样从a到b的颜色渐变就是RGB分量渐变,
这样值X的RGB颜色就是

Rx=Ra+(Rb-Ra)(X-Xmin)/(Xmax-Xmin)
Gx=Ga+(Gb-Ga)(X-Xmin)/(Xmax-Xmin)
Bx=Ba+(Bb-Ba)(X-Xmin)/(Xmax-Xmin)

至于通过webgl显示就参考webgl的实现即可。这个计算中还涉及颜色分量真实取值问题(RGB色在不同量化精度系统中数值范围不同,是否取整和取整方法,比如常见的8bit量化,每种颜色分量是8bit的非负整数,所以计算后肯定需要取整,一般取整都采用floor取整),不过在webgl中是RGB是采用的单色分量归一化量化到[0.0,1.0],是支持浮点数的,所以你确定颜色的时候用RGB浮点数归一量化后,上面的公式就不存在取整问题。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏