【发布时间】:2013-01-26 23:06:44
【问题描述】:
问题:我想在javascript中混合两种颜色,并得到结果颜色。 SO上有很多类似的问题,但是我没有找到任何实际正常工作的东西。我知道混合两种不同颜色的颜料(颜料)和灯光会产生非常不同的结果(http://en.wikipedia.org/wiki/Color_mixing)。
以下是我已经看到并尝试实施的问题和建议的解决方案:
1: Mixing two RGB color vectors to get resultant
因此,在 RGB 中混合颜色。我实现了它,在某些情况下它可以工作,但在某些情况下却不行。
工作示例: 将 red 与 yellow 混合 -> orange。太好了!
http://jsbin.com/afomim/1/edit
无效示例: 将 blue 与 yellow 混合 -> gray。不太好! :)
http://jsbin.com/afomim/5/edit
我知道在 RGB 中混合 blue 和 yellow 永远不会产生 green,我明白为什么。
我们不会在这里找到答案,让我们继续前进。
2: Adding Colours (Colors) Together like Paint (Blue + Yellow = Green, etc)
让我们尝试使用本讨论中建议的 CMYK 值。将cyan 与yellow 混合会得到green:
http://jsbin.com/igaveg/1/edit
但将blue 与yellow 混合会得到black。
http://jsbin.com/igaveg/2/edit -> 不工作!
3: How to mix colors "naturally" with C#?
一个非常相似的问题。最受欢迎的答案建议将颜色转换为 LAB,这个解决方案似乎很有希望。
所以我将我的颜色转换为 LAB。转换算法是正确的,我测试过了!
http://jsbin.com/oxefox/1/edit
现在我在 LAB 里有了这两种颜色,但是如何混合它们呢?
注意我知道我可能找不到将blue 与yellow 混合并给出完美green 的算法,但我希望我能生成类似于绿色的东西: )
【问题讨论】:
-
我只是好奇:为什么蓝色和黄色要混合成绿色(或类似的东西)?
-
蓝色并不完全是#0000ff,或者黄色#ffff00,但在现实世界中,如果你将一些蓝色和一些黄色混合在一起,大多数时候你会得到一些绿色。这个应用程序:fiftythree.com/paper(由苹果公司授予)有一些很棒的颜色混合功能,他们说他们已经研究了一年多:) 如果你查看他们的页面,你会发现他们对蓝色和黄色应用了相同的理论.
-
除了死灵术,为什么不用 HSL/HSV 而不是 RGB/CMYK 来混色呢?我的意思是,如果可见色谱只不过是一个比例(以纳米为单位),那么合并两种色调只是取平均值,与饱和度和光/值相同。我错了吗??
标签: javascript math colors color-scheme