【问题标题】:Generating a random Color distinct enough to another [duplicate]生成与另一个足够不同的随机颜色[重复]
【发布时间】:2014-05-26 07:36:42
【问题描述】:

我愿意在 Java 中生成随机颜色(使用任何构造函数),但我需要它们在视觉上不太接近另一个颜色。影响可接受程度的变量将是完美的。

根据我们眼睛的工作方式,RGB 比较似乎不是很有效。我也不想要一个固定的列表。

HSV 或 HSB 会在那里工作得很好吗?

感谢您的帮助!

编辑:更具体地说,我需要显示一定数量的正方形(1 到 ~20+),它们都需要具有不会混淆的不同颜色。我不想要一个列表(即使是一个大列表),因为这是我已经在使用的,尽管有更好的。

【问题讨论】:

  • 谢谢!我试试看
  • 如果您所追求的只是 20 种“不同外观”的颜色,而没有将它们列在一个长长的列表中,您就不能只选择 12 种完全饱和的颜色,并且色调在0和1;然后是半饱和度的 6 种颜色,色调均匀分布在 0 和 1 之间;那么黑白呢?是否需要更复杂的东西?虽然老实说,我不明白你为什么不喜欢长名单的想法。
  • OlegEstekhin :帖子的“最佳”答案似乎以凯利和博因顿的名单告终,这非常好,但并不是我真正想要的结果。大卫华莱士:长长的名单很好,但它不像我想要的那样“动态”,因为在 X 次尝试后,主题总是会以相同的颜色结束,如果我最终愿意比 N 种颜色更多列表,我不能。不过,具有全/半饱和度的均匀间隔色调的想法非常好,我也会尝试一下!
  • 好的,但是如果你要处理一个非常大的 N 的情况,这将变得很难。我不确定你的眼睛能分辨出多少种“完全饱和”的色调,但我怀疑它大约是 25 种。所以这种通用方法将在 40 种颜色左右停止工作。您可能还想改变亮度,所以可能有一些颜色为半亮度或 3/4 亮度;以及以相同的方式改变饱和度。

标签: java colors


【解决方案1】:

这个解决方案显然在技术上是不可能的,因为如果我们能看到不同的颜色,那么只有有限的数量。但是,要将颜色更改为不同的颜色,您可以更改其色调或饱和度。色调是使颜色与其他颜色不同的一种,饱和度决定了它的鲜艳程度。因此,对您的问题的简短回答是 HSB 可以很好地工作,但您存储数据的实际模型不如您如何更改它重要。

如果您只需要高对比度的颜色,请考虑使用互补色。这取决于您要解决的问题。

【讨论】:

  • 我可以拥有的变量或参数越多越好,只要我能获得不会混淆的随机颜色!我只能使用高对比度的颜色,但如果我可以使用其他颜色会更好
猜你喜欢
  • 2013-12-31
  • 2017-08-03
  • 2017-09-11
  • 2018-05-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-29
  • 1970-01-01
相关资源
最近更新 更多