我使用内置函数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