如何确保多个随机生成的颜色在色调上不是太近?

问题描述 投票:-2回答:1

我们正在构建一个生成多种颜色的应用程序,我们需要确保没有两种颜色靠近在一起。这有什么好的库或算法吗? (JavaScript的)

javascript algorithm random
1个回答
2
投票

不,没有这样的图书馆。您可以轻松地在RGB,CMYK和/或HST表示之间进行转换,但这些表示并不能很好地映射到人类视觉系统的感知。对于“接近”的任何认知定义,您将在计算近似度量所需的代数中有显着变化。

为了说明,研究典型的artist's color tools的产品。您可以看到基于感知的工具与HST系统的不同之处。孟塞尔颜色“轮”中的三维映射显示了我们感知中的不对称。 JND(恰好显着的差异)可能是一个地方的单一程度,另一个地方的5度。

你也有各种变异的并发症 - 不仅仅是各种类型的遗传色盲,而是人与人之间的日常差异。 1/5度的差异并不是绝对的,只是我对“门槛”的回忆,50%的人会注意到差异。

我每天都这样生活:我的配偶是一位艺术家,所以我们对颜色描述很敏感。我对光谱中蓝绿色部分的变化更敏感;我的另一半有时会在红色范围内否决我的服装选择。


建议的解决方案

我猜测你将把它用于某种图形表示,而你只是希望你的视觉单元变化多样,容易区分。

不要“随机生成”你的颜色。相反,设计一大堆预定义的颜色。将它们放在某种相似性矩阵中(简单的HST邻接可能会很好地为您服务)。选择你的颜色作为一组或连续,但平衡他们在矩阵周围的传播,保持每个周围的“缓冲区”。例如,如果您选择了特定的颜色,那么您将不会选择该颜色的2个矩阵单位内的任何其他颜色。

您甚至可以参考一些关于平面设计的网站来获取调色板的想法。这可以通过使颜色不仅易于区分,而且组合愉快来增强您的应用。

© www.soinside.com 2019 - 2024. All rights reserved.