不使用范围值渲染温度图

发布于 2024-10-11 10:41:10 字数 656 浏览 0 评论 0原文

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

具有不同的颜色,而不仅仅是渐变,具有 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:
alt text

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

迷雾森÷林ヴ 2024-10-18 10:41:10

您可以使用 HSB 色彩空间(色调、饱和度和亮度)的平滑连续函数将温度映射到颜色。

色调映射可见颜色的光谱,如下所示:
色调比例

(http://en.wikipedia.org/wiki/File:HueScale.svg

在您的示例图像中,看起来饱和度和亮度可能是恒定的,因此您的函数可以简单地转换温度到色调:

hue = f(t)

根据您的需要,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:
hue scale

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

hue = f(t)

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文