繁体   English   中英

渲染温度图而不使用范围值

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM