NSColor及其色调成分

Chr*_*nle 2 cocoa objective-c nscolor hue

我不太明白为什么NSColor的色调组件表现得像它的行为.这有点奇怪:

NSColor *c = [NSColor colorWithCalibratedHue:0.1 
                                  saturation:1.0 
                                  brightness:1.0 
                                       alpha:1.0]; 
CGFloat hue = 0.0; 
[c getHue:&hue saturation:NULL brightness:NULL alpha:NULL]; 
NSLog(@"hue = %f", hue); 
Run Code Online (Sandbox Code Playgroud)

如果您运行此代码,则会看到记录"hue = 0.1".但是,如果您运行以下代码:

NSColor *c = [NSColor colorWithCalibratedHue:0.0 
                                  saturation:1.0 
                                  brightness:1.0 
                                       alpha:1.0]; 
CGFloat hue = 0.0; 
[c getHue:&hue saturation:NULL brightness:NULL alpha:NULL]; 
NSLog(@"hue = %f", hue); 
Run Code Online (Sandbox Code Playgroud)

您会看到记录"hue = 1.0".这是一个错误吗?我一般都阅读了很多关于色彩空间和颜色的文档,但找不到答案.

Fré*_*idi 5

在色彩理论中,色调是一个角度单位,通常用度数 模数 360 表示(与之相同360°).

NSColor映射到浮点值0.0360°1.0.因此,getHue返回1.0而不是返回是完全有效的0.0,因为两个值代表相同的色调.