【问题标题】:Determine if we can obtain a target color by mixing colors from a list确定我们是否可以通过混合列表中的颜色来获得目标颜色
【发布时间】:2016-11-26 20:11:39
【问题描述】:

给定一个颜色列表(RGB 值)L 和一个颜色 C,确定我们是否可以混合列表 L 中的两种或多种颜色以获得 C。列表中的颜色可以任意比例混合。

【问题讨论】:

  • 你试过什么? StackOverflow 不是代码编写服务(也不是作业帮助服务)。 必须写MCVE来获得问题的帮助。

标签: java python arrays algorithm


【解决方案1】:

您可以将 RGB 值可视化为 3D 空间中的点。那么问题就变成了您是否可以将目标颜色的 RGB 值表示为颜色空间中其他点之间的插值。

一个理想的方法是使用Barycentric co-ordinates,条件是坐标(即混合比例)加为 1。因此,您需要遍历列表并找到一组 2 4 个点形成一条线、三角形或四面体单纯形,包围您的目标点。一个点的笛卡尔坐标(在本例中为 RGB 值)可以计算为单纯形点与重心坐标作为系数的线性组合,因此该点的 barycentric co-ordinates 将是您的混合比例。该点必须在单纯形内,否则您将得到不在 0-1 范围内的比例,我认为这是无效的。

如果您有大量点列表,并且您想了解是否存在一组有效的混合比例,请计算所有点的凸包并检查您的目标点是否位于其中。

【讨论】:

    【解决方案2】:

    您可以尝试使用协调压缩的直线变换。将其可视化为 3d 空间,然后组合三个点以达到目标颜色。 希望有帮助!

    【讨论】:

    • 嗨,Sahil,如果您能添加更多解释,那就太好了。希望得到更多帮助。
    猜你喜欢
    • 1970-01-01
    • 2015-01-12
    • 2010-11-23
    • 1970-01-01
    • 1970-01-01
    • 2015-09-19
    • 2022-01-17
    • 2016-05-30
    • 1970-01-01
    相关资源
    最近更新 更多