我使用內置函數UIColour:- (BOOL)getHue:(CGFloat *)hue saturation:(CGFloat *)saturation brightness:(CGFloat *)brightness alpha:(CGFloat *)alpha
將RGB轉換爲HSV,但對於某些RGB,它沒有給出正確的輸出。
getHue函數返回的不正確Hue
CGFloat h,s,v,a;
UIColor *tColor=[UIColor colorWithRed:(230.0/255.0) green:(226.0/255.0) blue:(226.0/255.0) alpha:1.0];
BOOL success=[tColor getHue:&h saturation:&s brightness:&v alpha:&a];
NSLog(@"Output-> Success:%d, hue:%f, sat:%f, value:%f, alpha:%f",success,h,s,v,a);
實際輸出:
輸出 - >成功:1,色調:1.000000,飽和:0.017391,值:0.901961,α-:1.000000
預期輸出:
色調: 0,sat:0.017391,值:0.901961,alpha:1.000000
注意:我已經從一些在線轉換工具(例如:http://www.rapidtables.com/convert/color/rgb-to-hsv.htm)中推導出此預期輸出
你可以在色調中看到明顯的區別嗎?那麼,爲什麼Hue有這樣的差異,我怎樣才能得到我的預期產出?
你告訴360°= 1.0。函數給我的色調:1.0在實際輸出中,所以度數將是360,但我的預期輸出是0而不是360 – Iducool 2013-04-10 05:47:32
我同意你提供的信息是正確的,但你也沒有包括如何將我的實際輸出轉換爲期望的輸出 – Iducool 2013-04-10 05:49:57
作爲一二三解釋,1.0 = 360°相當於0.0 = 0°。要將色調標準化到0.0 <= hue <1.0的範圍,只需使用'hue = fmodf(hue,1.0)'。 – 2013-04-10 05:54:08