NSColor 及其色调分量

发布于 2024-11-27 07:28:38 字数 834 浏览 2 评论 0 原文

我不太明白为什么 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); 

如果您运行此代码,您会看到记录“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); 

您会看到记录了“hue = 1.0”。这是一个错误吗?我阅读了大量有关色彩空间和颜色的文档,但找不到答案。

I don't quite understand why the hue component of NSColor behaves like it behaves. Here is something strange:

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); 

If you run this code you see "hue = 0.1" being logged. But if you run the following code:

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); 

You see "hue = 1.0" being logged. Is this a bug? I read a lot of documentation on Color Spaces and Colors in general and couldn't find an answer.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

白云不回头 2024-12-04 07:28:38

在颜色理论中,色调角度单位,通常用 360(360° 相同)。

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

In color theory, hue is an angular unit, usually expressed in degrees modulo 360 ( being the same as 360°).

NSColor maps to the floating point value 0.0 and 360° to 1.0. Therefore, it's perfectly valid for getHue to return 1.0 instead of 0.0, because both values represent the same hue.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文