|
HSV —> RGB
- if ( S == 0 ) //HSV from 0 to 1
- {
- R = V * 255
- G = V * 255
- B = V * 255
- }
- else
- {
- var_h = H * 6
- if ( var_h == 6 ) var_h = 0 //H must be < 1
- var_i = int( var_h ) //Or ... var_i = floor( var_h )
- var_1 = V * ( 1 - S )
- var_2 = V * ( 1 - S * ( var_h - var_i ) )
- var_3 = V * ( 1 - S * ( 1 - ( var_h - var_i ) ) )
- if ( var_i == 0 ) { var_r = V ; var_g = var_3 ; var_b = var_1 }
- else if ( var_i == 1 ) { var_r = var_2 ; var_g = V ; var_b = var_1 }
- else if ( var_i == 2 ) { var_r = var_1 ; var_g = V ; var_b = var_3 }
- else if ( var_i == 3 ) { var_r = var_1 ; var_g = var_2 ; var_b = V }
- else if ( var_i == 4 ) { var_r = var_3 ; var_g = var_1 ; var_b = V }
- else { var_r = V ; var_g = var_1 ; var_b = var_2 }
- R = var_r * 255 //RGB results from 0 to 255
- G = var_g * 255
- B = var_b * 255
- }
复制代码
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
- }
复制代码
|
|