在您的頁面上包含raphaeljs,並在您的代碼的某處粘貼功能estimateColorForValue()
和toHex()
。 estimateColorForValue(hue, value, darkestValue, brightestValue)
計算某個值的顏色,通過查看範圍[darkestValue-brightestValue]
value
的位置來插補顏色。 hue
的範圍是[0-1]
:0.1
用於橙棕色,0.4
用於綠色,0.8
用於粉紅色,以及更多顏色之間。色調的微小變化徹底改變了視覺色彩。
例如:estimateColorForValue(.1, 15, 1, 20)
,可以解釋爲,對於範圍從1到20的數據,在橙色空間中計算值爲15的顏色。
toHex(estimateColorForValue(.1, 15, 1, 20)) ==> "#cf8415"
代碼:
<script src="https://raw.github.com/DmitryBaranovskiy/raphael/master/raphael.js"></script>
<script>
function toHex(hsb) {
return Raphael.hsb2rgb(hsb.h, hsb.s, hsb.b).hex;
}
function estimateColorForValue(hue, value, darkestValue, brightestValue) {
// Constants to determine saturation and brightness
var darkBrightness = 0.6;
var brightBrightness = 1;
var darkSaturation = 0.3;
var brightSaturation = 1;
// Compute saturation and brightness:
var gradient = (value - darkestValue)/(brightestValue - darkestValue);
var saturation = darkSaturation + gradient * (brightSaturation - darkSaturation);
var brightness = darkBrightness + gradient * (brightBrightness - darkBrightness);
return {h: hue, s:saturation, b:brightness};
}
</script>
感謝upvotes - 誠實,這是更容易了一大堆比它的聲音,ESP。如果你還記得一點點高中代數。我非常愚蠢,在過去的20年裏,我已經實施並重新實施了這麼多次。 – Pointy 2011-04-02 00:00:07
哦,如果不清楚:「整數」將映射到公式中的參數係數(「* t *」)。換句話說,這個值「沿着曲線移動」,可以這麼說。控制點是四個一組,所以你一次只能通過四個點生成點。 – Pointy 2011-04-02 00:07:29
非常非常敏捷!我會看看;) – 2011-04-02 00:11:15