获取颜色联合的可能性以生成另一种颜色
Get color union possibilities to generate another color
我有一组 RGB 十六进制颜色。我需要计算颜色组合以获得指定的十六进制颜色。
例如:
Input hex - #3A5F34
Output:
1 - 20% #FF0000 + 80% #00AA33
2 - 30% #FFAA00 + 40% #0A33BB + 30% #FFFFFF
3 - ...
...
例如,如果我只有红色、黑色和黄色,是否可以从该组的组合中生成另一种颜色(指定)。 objective 显示并集创建输入颜色的可能性。
我进行了大量搜索,但没有找到针对该问题的重要讨论。
在我的想法中,这在 HEX 的宇宙中盘旋 - RGB 转换和联合概率,但是,我的测试没有给出令人满意的结果。一些想象的可能性:
- 基于主色数组(原色、副色等)的并集计算的蛮力算法
- 人工智能使颜色组合进化种群?
有什么想法可以解决这个问题(或解决这个问题)?
这是一个3维的线性组合问题。你有一组基础向量。在您给出的示例中,这些是
b1 = (FF, 00, 00)
b2 = (00, AA, 33)
b3 = (FF, FF, FF)
您正试图找到这三个向量的线性组合来得到向量 (3A, 5F, 34)
。
将向量转换为整数并应用标准方法求解线性方程组:
b1 = (255, 0, 0)
b2 = ( 0, 176, 51)
b3 = (255, 255, 255)
need = ( 58, 95, 52)
您现在需要找到系数 x(对于 b1)、y (b2)、z (b3),使得
need = x*b1 + y*b2 + z*b3
展开,这是:
255x + 0y + 255z = 58
0x + 176y + 255z = 95
0x + 51y + 255z = 52
你在三个变量中有三个方程。
你能从这里拿走吗? Python 和 Java 都有线性求解包来为你做算术——不需要人工智能。
获取百分比
需要的比例是x, y, z
。请注意,这些是 而不是 百分比:不能保证给定的混合物会作为加起来为 1 的系数出现。考虑一个简单的情况:全强度绿色 00FF00
和蓝色0000FF
,但我们想要蓝绿色范围内的东西 00C0C0
。得到的混合物是 (0.0, 0.75, 0.75) -- 不是百分比。
确定多个解
这是一个线性系统,给我们三种可能的情况:
- 不一致:其中两个方程是平行平面,无解。
- 点解:方程描述三个平面,相交于一点。只有一个代数解。有可能一个或多个系数为负,这意味着没有实用的解决方案。
- 多重解:方程相交于一条公共线...或者所有三个方程描述相同平面。在任何一种情况下,求解系统都会得到一个(线)或两个(平面)变量的参数化方程。在这两种情况下,都有无限的解决方案。
无论您选择(或编写)什么工具来求解方程组,都应该return案例 3 的参数化形式。
我有一组 RGB 十六进制颜色。我需要计算颜色组合以获得指定的十六进制颜色。
例如:
Input hex - #3A5F34
Output:
1 - 20% #FF0000 + 80% #00AA33
2 - 30% #FFAA00 + 40% #0A33BB + 30% #FFFFFF
3 - ...
...
例如,如果我只有红色、黑色和黄色,是否可以从该组的组合中生成另一种颜色(指定)。 objective 显示并集创建输入颜色的可能性。
我进行了大量搜索,但没有找到针对该问题的重要讨论。
在我的想法中,这在 HEX 的宇宙中盘旋 - RGB 转换和联合概率,但是,我的测试没有给出令人满意的结果。一些想象的可能性:
- 基于主色数组(原色、副色等)的并集计算的蛮力算法
- 人工智能使颜色组合进化种群?
有什么想法可以解决这个问题(或解决这个问题)?
这是一个3维的线性组合问题。你有一组基础向量。在您给出的示例中,这些是
b1 = (FF, 00, 00)
b2 = (00, AA, 33)
b3 = (FF, FF, FF)
您正试图找到这三个向量的线性组合来得到向量 (3A, 5F, 34)
。
将向量转换为整数并应用标准方法求解线性方程组:
b1 = (255, 0, 0)
b2 = ( 0, 176, 51)
b3 = (255, 255, 255)
need = ( 58, 95, 52)
您现在需要找到系数 x(对于 b1)、y (b2)、z (b3),使得
need = x*b1 + y*b2 + z*b3
展开,这是:
255x + 0y + 255z = 58
0x + 176y + 255z = 95
0x + 51y + 255z = 52
你在三个变量中有三个方程。 你能从这里拿走吗? Python 和 Java 都有线性求解包来为你做算术——不需要人工智能。
获取百分比
需要的比例是x, y, z
。请注意,这些是 而不是 百分比:不能保证给定的混合物会作为加起来为 1 的系数出现。考虑一个简单的情况:全强度绿色 00FF00
和蓝色0000FF
,但我们想要蓝绿色范围内的东西 00C0C0
。得到的混合物是 (0.0, 0.75, 0.75) -- 不是百分比。
确定多个解
这是一个线性系统,给我们三种可能的情况:
- 不一致:其中两个方程是平行平面,无解。
- 点解:方程描述三个平面,相交于一点。只有一个代数解。有可能一个或多个系数为负,这意味着没有实用的解决方案。
- 多重解:方程相交于一条公共线...或者所有三个方程描述相同平面。在任何一种情况下,求解系统都会得到一个(线)或两个(平面)变量的参数化方程。在这两种情况下,都有无限的解决方案。
无论您选择(或编写)什么工具来求解方程组,都应该return案例 3 的参数化形式。