2011-01-09 54 views
0

我想呈現地圖如: alt text渲染溫度圖,而無需使用數值範圍

用不同的顏色,而不是僅僅梯度,與地圖,其具有0 ...溫度的1個值,而不使用範圍值,這是,如果t = 0 ... 0.2使用紅色* t,如果t> 0.2並且t使用橙色* t等於012 *

任何提示?

編輯:「範圍」的示例代碼:

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; 
    } 
+0

你是什麼意思,由`橙* *'? – 2011-01-09 20:01:51

回答

4

可以映射到的溫度用平滑連續函數與HSB顏色空間(色調,飽和度和亮度)的顏色。

色調的可見顏色類似這樣的頻譜圖: 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