0

这与这个问题相关但不一样(点击进入)。然而,链接的问题需要在这个问题之前解决,或者至少要理解问题。这可以被认为是另一个的相反。

这个问题是,给定 RGB 中的 n 个颜色,例如

Color1 as RGB (255, 128, 128)
Color2 as RGB (128, 128, 128)
Color3 as RGB (128, 0, 128)

我们知道给定的颜色 C,找到每种颜色的分数权重,以便当这些颜色混合时,给定颜色的分数权重会导致已知颜色 C。分数权重在上面的链接问题中定义,它是一个值介于 0.0 和 1.0 之间,其中总权重等于 1.0。例如,Color1 可以是 0.2,Color2 可以是 0.2,Color3 可以是 0.6。

插值在 RGB 颜色空间中是线性的。

通常颜色的数量不会超过 5 种,通常是 2 或 3 或 4 种颜色。

请注意,很有可能无法将这些颜色混合以获得颜色 C,例如,如果我们有两种非常红色的颜色并且我想要颜色 C(即绿色),则无法混合两种红色以获得绿色. 所以在这种情况下,没有解决办法。

此外,在某些情况下,可能有多种方法可以混合颜色以制作颜色 C。

4

1 回答 1

0

是的,所以线性方程有助于解决问题。一些解决问题的 Java 代码位于此处,请注意它是使用 Scala SBT 构建的,但它的 Java 代码。

https://github.com/PhilAndrew/betweenrgb

这里测试加权颜色的合并:

https://github.com/PhilAndrew/betweenrgb/blob/master/src/test/java/between/rgb/FindWeightedColorsTest.java

于 2016-07-29T02:45:54.323 回答