0
我需要將一系列正整數(例如1 - 15'000)映射到顏色空間,以使最小值爲綠色,最大值爲紅色。即我需要一個算法,我可以給一個整數(也可能是最小值,最大值)作爲輸入,並接收RGB值作爲輸出。如何將一系列整數映射到一個顏色空間?
我意識到可能將色彩空間分離,但我更喜歡解決方案,我不需要。
我需要將一系列正整數(例如1 - 15'000)映射到顏色空間,以使最小值爲綠色,最大值爲紅色。即我需要一個算法,我可以給一個整數(也可能是最小值,最大值)作爲輸入,並接收RGB值作爲輸出。如何將一系列整數映射到一個顏色空間?
我意識到可能將色彩空間分離,但我更喜歡解決方案,我不需要。
這應該讓你開始:
function getColourFromInt(int){
var num = Math.abs(int);
var b2 = Math.floor(num % 16);
var temp = num/16;
var b1 = Math.floor(temp % 16);
var temp2 = temp/16;
var g2 = Math.floor(temp2 % 16);
var temp3 = temp2/16;
var g1 = Math.floor(temp3 % 16);
var temp4 = temp3/16;
var r2 = Math.floor(temp4 % 16);
var temp5 = temp4/16;
var r1 = Math.floor(temp5 % 16);
var values = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f"]
r1 = values[r1]
r2 = values[r2]
g1 = values[g1]
g2 = values[g2]
b1 = values[b1]
b2 = values[b2]
var rgb = r1 + r2 + g1 + g2 + b1 + b2;
document.getElementById('colour').innerHTML = rgb;
}
getColourFromInt(Math.floor(Math.random() * 16*16*16*16*16*16))
我敢肯定的映射像你想要的是定義一個獨立的色彩空間(或子空間的色彩空間)。爲什麼你想避免你想要完成的事情? – zmbq
@zmbq通過離散我的意思是將色彩空間分成固定數量的顏色,例如n RGB值,然後將真實範圍映射到這個值。像這樣:1 +((value - realMin)/(realMax - realMin))* n)。但是,也許我用這個詞不正確,我不會說流利的英語。 – rob
你會使用像梯度比例嗎?如果是的話,也許你需要使用黃色像'中間點'。 – HugoLemos