轉HSV的問題 |
尚未結案
|
yana125
一般會員 發表:16 回覆:17 積分:6 註冊:2006-10-24 發送簡訊給我 |
以下是RGB轉HSV的程式
請問 其中 min = MIN( r, g, b );
MIN 這個函數是怎麼運作的裡面有3個數值耶
我只知道MIN(a,b) (((a),(b)?(a):(b)) 這個函數只有2個數值
所以我不知道3個數值的MIN是怎麼運算的 <textarea class="cpp" rows="10" cols="60" name="code">
void RGBtoHSV( float r, float g, float b, float *h, float *s, float *v )
{
float min, max, delta; min = MIN( r, g, b );
max = MAX( r, g, b );
*v = max; // v delta = max - min; if( max != 0 )
*s = delta / max; // s
else {
// r = g = b = 0 // s = 0, v is undefined
*s = 0;
*h = -1;
return;
} if( r == max )
*h = ( g - b ) / delta; // between yellow & magenta
else if( g == max )
*h = 2 ( b - r ) / delta; // between cyan & yellow
else
*h = 4 ( r - g ) / delta; // between magenta & cyan *h *= 60; // degrees
if( *h < 0 )
*h = 360; } </textarea>
|
harpist
資深會員 發表:3 回覆:251 積分:430 註冊:2002-10-03 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |