我想創建一個12片餅,每片不同的顏色。色輪背後的數學是什麼
幾乎每一個色輪似乎都遵循相同的格式;例如:http://www.tigercolor.com/color-lab/color-theory/color-theory-intro.htm。
但是,有什麼算法來產生顏色? RGB(theta)背後的數學是什麼?對此肯定有一些確定的科學,但谷歌沒有給我任何線索。
我想創建一個12片餅,每片不同的顏色。色輪背後的數學是什麼
幾乎每一個色輪似乎都遵循相同的格式;例如:http://www.tigercolor.com/color-lab/color-theory/color-theory-intro.htm。
但是,有什麼算法來產生顏色? RGB(theta)背後的數學是什麼?對此肯定有一些確定的科學,但谷歌沒有給我任何線索。
看一看http://www.easyrgb.com它有很多背後的顏色轉換算法。這是RGB - > HSV之一。
var_R = (R/255) //RGB from 0 to 255
var_G = (G/255)
var_B = (B/255)
var_Min = min(var_R, var_G, var_B) //Min. value of RGB
var_Max = max(var_R, var_G, var_B) //Max. value of RGB
del_Max = var_Max - var_Min //Delta RGB value
V = var_Max
if (del_Max == 0) //This is a gray, no chroma...
{
H = 0 //HSV results from 0 to 1
S = 0
}
else //Chromatic data...
{
S = del_Max/var_Max
del_R = (((var_Max - var_R)/6) + (del_Max/2))/del_Max
del_G = (((var_Max - var_G)/6) + (del_Max/2))/del_Max
del_B = (((var_Max - var_B)/6) + (del_Max/2))/del_Max
if (var_R == var_Max) H = del_B - del_G
else if (var_G == var_Max) H = (1/3) + del_R - del_B
else if (var_B == var_Max) H = (2/3) + del_G - del_R
if (H < 0) H += 1
if (H > 1) H -= 1
}
請考慮upvoting /繼StackExchange色彩理論網站:https://area51.stackexchange.com /建議/ 110687 /色彩理論 – 2017-06-22 08:14:39
色輪(例如Mac OS X的顏色選擇器,下圖)顯示色調和飽和(兩個來自HSV colour space三種組分)。色調隨着角度而變化,並且飽和度隨着半徑而變化。通常,值(又名亮度)有一個單獨的滑塊。
See Wikipedia如何來回轉換HSV和RGB之間。或者可能有您的編程語言選擇的API。例如,Python的colorsys
library。
如果你想有一個色輪喜歡你提供的例子(就像你在一個工藝品商店的油漆部分找到最色輪),其中紅色是相對綠色和藍色是相反的橙黃色,紫黃相反,等等,你可以簡單地做下面的數學來修改HSL或HSV的色調以獲得傳統色調...
double ToLegacyHue(double modernHue) {
modernHue = ((modernHue % 360) + 360) % 360; // normalize 360 > modernHue >= 0
double ret = 0;
if(modernHue < 60) {
ret = modernHue * 2;
} else if(modernHue < 120) {
ret = modernHue + 60;
} else {
ret = (modernHue - 120) * 0.75 + 180;
}
return ret;
}
double FromLegacyHue(double legacyHue) {
legacyHue = ((legacyHue % 360) + 360) % 360; // normalize 360 > legacyHue >= 0
double ret = 0;
if(legacyHue < 120) {
ret = legacyHue/2;
} else if(legacyHue < 180) {
ret = legacyHue - 60;
} else {
ret = (legacyHue - 180)/0.75 + 120;
}
return ret;
}
是不是隻是'color(angle)= HSV(angle,1,1) '? – 2010-11-20 21:24:55
好的...但是這背後的數學是什麼? – 2010-11-20 21:30:12
你看過http://stackoverflow.com/questions/180/function-for-creating-color-wheels上的答案嗎? – 2010-11-20 22:20:05