不使用范围值渲染温度图
我想渲染一张地图,例如:
具有不同的颜色,而不仅仅是渐变,具有 0...1 温度值的地图,无需使用范围值,即,如果 t = 0...0.2 使用 red*t,如果 t > 0.2且t<0.2 0.4 使用orange * 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;
}
I'd like to render a map such as:
with different color, not just gradients, with a map that has 0...1 value of temperature, without using ranged values, this is, if t = 0...0.2 use red*t, if t > 0.2 and t < 0.4 use orange * t, etc.
Any tip?
EDIT: example code of "ranges":
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;
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您可以使用 HSB 色彩空间(色调、饱和度和亮度)的平滑连续函数将温度映射到颜色。
色调映射可见颜色的光谱,如下所示:
(http://en.wikipedia.org/wiki/File:HueScale.svg)
在您的示例图像中,看起来饱和度和亮度可能是恒定的,因此您的函数可以简单地转换温度到色调:
根据您的需要,f 可以是线性函数、对数函数、指数函数或任何看起来最好的函数。
有关如何将 HSB 转换为 RGB 颜色空间的讨论,请查看此 StackOverflow 主题接受的答案:生成独特颜色的算法
有关色调的一般讨论,请参阅此 WikiPedia 文章:http://en.wikipedia.org/wiki/Hue
You can map temperatures to colors using smooth continuous functions with the HSB color space (hue, saturation and brightness).
Hue maps the spectrum of visible colors like this:
(http://en.wikipedia.org/wiki/File:HueScale.svg)
In your example image, it looks like saturation and brightness might be constant, so your function could simply translate temperature to hue:
Depending on your needs, f could be a linear function, logarithmic, exponential or whatever looks best.
For a discussion on how to translate HSB to the RGB color space, look for example at the answer accepted to this StackOverflow topic: Algorithm For Generating Unique Colors
For a general discussion about hue, see for example this WikiPedia article: http://en.wikipedia.org/wiki/Hue