algorithm - 在不使用范围值的情况下渲染温度图

标签 algorithm rendering

我想渲染一张 map ,例如: alt text

具有不同的颜色,不仅仅是渐变,具有 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 像这样映射可见颜色的光谱: hue scale

( 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/

相关文章:

algorithm - 超越逐项推荐

rendering - IE11 和渲染问题

OpenGL处理​​多个对象

c++ - 渲染到纹理 - ClearRenderTargetView() 有效,但没有对象渲染到纹理(渲染到屏幕工作正常)

pdf - Grails呈现具有特定布局和多个页面的PDF?

opengl - 如何在 3D 中使用 opengl 渲染海浪?

algorithm - 胶囊 - 射线(线段)相交,2D

algorithm - 树递归斐波那契算法需要线性空间?

algorithm - 从具有均匀分布概率的流中选择一个元素

arrays - 最小可能数组置换问题