我想渲染一张地图,例如:
具有不同的颜色,而不仅仅是渐变,具有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;
}
答案 0 :(得分:4)
您可以使用具有HSB色彩空间(色调,饱和度和亮度)的平滑连续函数将温度映射到颜色。
(http://en.wikipedia.org/wiki/File:HueScale.svg)
在您的示例图像中,饱和度和亮度可能会保持不变,因此您的功能可以简单地将温度转换为色调:
hue = f(t)
根据您的需要,f可以是线性函数,对数,指数或任何看起来最好的。
有关如何将HSB转换为RGB颜色空间的讨论,请查看此StackOverflow主题接受的答案:Algorithm For Generating Unique Colors
有关色调的一般性讨论,请参阅此WikiPedia文章:http://en.wikipedia.org/wiki/Hue