[英]Render temperature map without using range values
我想渲染一个地图,例如:
具有不同颜色的颜色,而不仅仅是渐变,具有0 ... 1温度值的贴图,而不使用范围值,即,如果t = 0 ... 0.2,则使用red * 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颜色空间的平滑连续功能(色相,饱和度和亮度)将温度映射为颜色。
色相映射可见颜色的光谱,如下所示:
( http://en.wikipedia.org/wiki/File:HueScale.svg )
在示例图像中,看起来饱和度和亮度可能是恒定的,因此您的函数可以简单地将温度转换为色调:
hue = f(t)
根据您的需求,f可以是线性函数,对数,指数或任何看起来最合适的函数。
有关如何将HSB转换为RGB颜色空间的讨论,请查看此StackOverflow主题接受的答案: 生成唯一颜色的算法
有关色相的一般讨论,请参见例如WikiPedia的这篇文章: http : //en.wikipedia.org/wiki/Hue
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.