我想渲染一张 map ,例如:
具有不同的颜色,不仅仅是渐变,具有 0...1 温度值的贴图,不使用范围值,即如果 t = 0...0.2 使用红色*t,如果 t > 0.2并且 t < 0.4 使用橙色 * t 等
有什么建议吗?
编辑:“范围”的示例代码:
else if (layerType == "temperature") {
if (value <= 0.2) {
r = Math.round(value * 200)+100;
g = Math.round(value * 200)+100;
b = Math.round(value * 250)+150;
a = 1;
} else if (value > 0.2 && value <= 1) {
r = Math.round(value * 250);
g = Math.round(value * 250);
b = Math.round(value * 200);
a = 1;
}
最佳答案
您可以使用 HSB 颜色空间(色调、饱和度和亮度)的平滑连续函数将温度映射到颜色。
Hue 像这样映射可见颜色的光谱:
( http://en.wikipedia.org/wiki/File:HueScale.svg )
在您的示例图像中,饱和度和亮度看起来可能是恒定的,因此您的函数可以简单地将温度转换为色调:
hue = f(t)
根据您的需要,f 可以是线性函数、对数函数、指数函数或任何看起来最好的函数。
有关如何将 HSB 转换为 RGB 颜色空间的讨论,例如查看此 StackOverflow 主题接受的答案:Algorithm For Generating Unique Colors
有关色调的一般性讨论,请参阅此维基百科文章的示例:http://en.wikipedia.org/wiki/Hue
关于algorithm - 在不使用范围值的情况下渲染温度图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4641353/