问题:我想在javascript中混合两种颜色,并获得结果颜色.在SO上有很多类似的问题,但我没有发现任何实际上正常工作的问题.我知道混合两种不同颜色的颜料(颜料)和灯会产生非常不同的结果(http://en.wikipedia.org/wiki/Color_mixing).
以下是我已经看到的问题和建议的解决方案,并尝试实施:
1: 混合两个RGB颜色矢量以得到结果
因此,混合RGB中的颜色.我实现了它,在某些情况下它可以在某些情况下使用它没有.
工作示例:red与yellow- > 混合orange.大!
http://jsbin.com/afomim/1/edit
不工作的例子:blue与yellow- > 混合gray.不太好!:)
http://jsbin.com/afomim/5/edit
我知道,在RGB混合blue使用yellow不会让green的,我明白为什么.
我们不会在这里找到答案,让我们继续前进.
让我们尝试使用本讨论中建议的CMYK值.混合cyan与yellow给出green:
http://jsbin.com/igaveg/1/edit
但混合blue使用yellow的结果black.
http://jsbin.com/igaveg/2/edit - >不工作!
3: 如何将"自然"与C#混合使用?
一个非常相似的问题.最受欢迎的答案建议将颜色转换为LAB,这个解决方案似乎很有希望.
所以我将我的颜色转换为LAB.转换算法是正确的,我测试了它!
http://jsbin.com/oxefox/1/edit
现在我在LAB中有两种颜色,但是如何混合呢?
注:我知道,可能我会找不到一个混合算法中blue使用yellow,并给完美的green,但我希望我能够生成类似于绿色的东西:)
我用两种不同的颜色创建不同的自定义视图.根据我的应用功能,当拖动对象相互重叠时,用户将在屏幕上拖动这些对象.我想区分重叠区域,如何设置重叠区域的组合颜色.请看下面的图片.这里我使用canvas来创建那些自定义视图,两个圆圈是两个不同的视图.
编辑: 如果我使用不透明度128我能够看到背景颜色,但我想要重叠对象颜色的组合颜色.
我目前正在尝试在RGB(红色,绿色,蓝色)色彩空间和RYB(红色,黄色,蓝色)色彩空间之间转换颜色并再次返回.
基于下面的文章中的细节,我能够使用三线性插值从RYB转换为RGB - 其中参数权重(s,t,u)是RYB颜色,并且立方体的顶点是RGB空间中的3d点.
为可视化绘制灵感的颜色混合和合成 - Gossett和Chen - 第2.1节 - 实现细节
我的困难在于扭转转换过程.
第二篇论文引用了该技术的使用,并且还表明使用牛顿法实现了逆转换.但没有提供进一步的细节.这可能表明在求解三线性插值方程时找到了根.
从注重色彩对比看绘画风格向摄影形象的转换 - 张晓燕,Zhang Xiaoyan 康斯特布尔,M.; 莹鹤;
在我用方程扩展这个问题之前,是否有人用Java/C/C++/C#等语言看到或解决了这个问题?
我目前的方法是采用三线性插值的正演方程(RYB到RGB),展开和重新排列,为3个未知数(参数权重:s,t和u)提供3个联立方程,然后找出如何使用Newton-Raphson方法.我是否以正确的方式解决这个问题?
我将很快编辑这个问题以提供方程式.
非常感谢你的时间,
本