加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 像油漆一样添加颜色(颜色)(蓝色黄色=绿色等)

发布时间:2020-12-16 03:40:49 所属栏目:百科 来源:网络整理
导读:我正在使用cocos2d库制作iOS游戏. 假设您有两个具有两种不同颜色的对象 – 以RGB格式定义 Blue: 0,255Yellow: 255,255,0 我想添加蓝色和黄色来制作绿色. 为了使事情复杂化,让我们说Blue对象比Yellow对象更大(为了说明,我们说比例为2:1),我加入的蓝色是黄色
我正在使用cocos2d库制作iOS游戏.

假设您有两个具有两种不同颜色的对象 – 以RGB格式定义

Blue:    0,255
Yellow:  255,255,0

我想添加蓝色和黄色来制作绿色.

为了使事情复杂化,让我们说Blue对象比Yellow对象更大(为了说明,我们说比例为2:1),我加入的蓝色是黄色的两倍 – 我如何计算这个新的(浅绿色)颜色正确.

我理解LAB * Color Space对于这种“自然色”的东西很有用,但我不知道如何使用它 – 特别是在cocos2d对象的上下文中,(AFAIK)仅限于在其中使用RGB配色方案.

我真的很感激如何实现这一点的实际帮助.谢谢堆!

21/4更新:所以在LAB *中蓝色黄色≠绿色(当你看到they’re at opposite ends of the same channel时这是有意义的).关于SO的讨论little bit实际上是一个非常棘手的问题.似乎最终的答案是使用Kubelka-Munk方法,即一种名为Krita的开源软件.我找不到任何地方(公式或代码本身).

This question有a link,它使用HSL以类似的方法进行绘画.我将尝试查看它是否有效,我将在此处反馈结果.

在此期间if anyone knows how to implement Kubelka-Munk或者我可以找到执行此操作的代码或其他解决方案,我会非常非常激动!

解决方法

没有颜色模型混合蓝色和黄色使绿色.用水粉自己尝试一下,它唯一的工作方式是青色和黄色.这就是为什么你应该尝试从RGB切换到CMYK,如果需要,可以返回.这是如何完成的
void toCMYK(float red,float green,float blue,float* cmyk)
{
  float k = MIN(255-red,MIN(255-green,255-blue));
  float c = 255*(255-red-k)/(255-k); 
  float m = 255*(255-green-k)/(255-k); 
  float y = 255*(255-blue-k)/(255-k); 

  cmyk[0] = c;
  cmyk[1] = m;
  cmyk[2] = y;
  cmyk[3] = k;
}

void toRGB(float c,float m,float y,float k,float *rgb)
{
  rgb[0] = -((c * (255-k)) / 255 + k - 255);
  rgb[1] = -((m * (255-k)) / 255 + k - 255);
  rgb[2] = -((y * (255-k)) / 255 + k - 255);
}

然后在您的代码中,混合青色和黄色

float cmyk1[4];
toCMYK(255,cmyk1);  // yellow

float cmyk2[4];
toCMYK(0,cmyk2);  // cyan

// Mixing colors is as simple as adding
float cmykMix[] = { cmyk1[0] + cmyk2[0],cmyk1[1] + cmyk2[1],cmyk1[2] + cmyk2[2],cmyk1[3] + cmyk2[3] };

float rgb[3];
toRGB(cmykMix[0],cmykMix[1],cmykMix[2],cmykMix[3],rgb);  

NSLog(@"RGB mix = (%f,%f,%f)",rgb[0],rgb[1],rgb[2]);

运行代码将产生:RGB mix =(0.000000,255.000000,0.000000)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读