給定在 HSV 中 (h, s, v) 值定義的一個顏色,帶有如上的 h,和分別表示飽和度和明度的 s 和 v 變化于 0 到 1 之間,在 RGB 空間中相應的 (r, g, b) 三原色能夠計算為:

對于每一個顏色向量 (r, g, b),

對應的,Java實現(xiàn)這種轉(zhuǎn)變的代碼如下:
/*
?* 想構造一系列平滑過渡的顏色,用HSV顏色空間容易,用RGB較難。
?*
?* 將色彩由HSV空間轉(zhuǎn)換到RGB空間
?*
?* h? 顏色? ? ? 用角度表示,范圍:0到360度
?* s? 色度? ? ? 0.0到1.0? 0為白色,越高顏色越“純”
?* v? 亮度? ? ? 0.0到1.0? 0為黑色,越高越亮
?*/
Color HSVtoRGB(float h /* 0~360 degrees */, float s /* 0 ~ 1.0 */, float v /* 0 ~ 1.0 */ )
{
? ? float f, p, q, t;
? ? if( s == 0 ) { // achromatic (grey)
? ? ? ? return makeColor(v,v,v);
? ? }
? ? h /= 60;? ? ? // sector 0 to 5
? ? int i = (int) Math.floor( h );
? ? f = h - i;? ? ? // factorial part of h
? ? p = v * ( 1 - s );
? ? q = v * ( 1 - s * f );
? ? t = v * ( 1 - s * ( 1 - f ) );
? ? switch( i ) {
? ? ? ? case 0:
? ? ? ? ? ? return makeColor(v,t,p);
? ? ? ? case 1:
? ? ? ? ? ? return makeColor(q,v,p);
? ? ? ? case 2:
? ? ? ? ? ? return makeColor(p,v,t);
? ? ? ? case 3:
? ? ? ? ? ? return makeColor(p,q,v);
? ? ? ? case 4:
? ? ? ? ? ? return makeColor(t,p,v);
? ? ? ? default:
? ? ? ? ? ? return makeColor(v,p,q);
? ? }
}