【问题标题】:Iterating over colors迭代颜色
【发布时间】:2009-09-04 21:17:23
【问题描述】:

有没有一种好方法来迭代颜色?我知道这听起来像是一个奇怪的问题,但这是一个类比。

假设您编写了一款游戏,您可以在其中环游地球。您选择一个起点,然后定义一个重复应用的规则。例如:从您在地球上的当前位置开始,然后定义穿过您所在位置以及北极和南极的大圆圈。每走一步,沿着这个圆圈走 10 英里。每一步都会带你进入与前一步相似的气候(尽管有时你会因为在海洋中而湿透了)。或者每走一步走 6,000 英里。现在每一步都是截然不同的气候。

现在想象一个程序,它用随机颜色在屏幕上绘制元素。也许您将增量设置为较低的数字,并且每种颜色都与以前的颜色非常相似。可能你把它定高了,每一种颜色都和之前的很不一样。

如果您使用 RGB 值并将 R、G 和 B 分别增加少量,您会逐渐变化,直到其中一个值换行并且您会突然发生变化。

使用 HSB 值,色调的色域是圆形的,因此没有不连续性。 S 和 B 不是,您可能会遇到一系列无法​​区分的颜色,因为 S 太低以至于它们看起来都是白色的。将 S 和 B 保持在最大值是可能的,尽管它会遗漏很多颜色。

程序的每次运行只使用少量颜色(10 到 15)。我想随机选择一些值,这样一来颜色会和谐地混合,一会它们发生冲突,一会它们都是粉彩,一会它们是饱和和粉彩的混合,等等。

【问题讨论】:

  • 另一种思考方式是“循环使用颜色”。其中 H、S 和 B 各为 8 位,将 S 和 B 保持为 256,并将 H 增加 1 或 11 或 61。但这只会得到 256 种颜色。世界上只有256种颜色吗?或者是否有一些颜色与 S 和 B 的其他值不同且有趣到足以包括在内?如果是这样,它们是哪些,你如何在它们之间循环,同时排除数百万看起来像白色或黑色的?

标签: colors rgb hsb


【解决方案1】:

如果你画一个色轮,你可以从色轮的另一边选择互补色。

这是一个页面,该页面有几个关于该想法的变体,以及一个很好的交互式应用程序来探索它们。

http://colorschemedesigner.com/

【讨论】:

    【解决方案2】:

    通过考虑 HSL 双锥,您可以做得比 256 色更好(请参阅 wikipedia HSV/HSL page)。它看起来有点像一个球体,将球体上的每个点转换为双锥表面上的一个点并不需要太多的工作。现在,彩色行走与你的星球行走相同。你仍然错过了不饱和的颜色,包括灰色。您可以使用 RGB 颜色立方体做同样的事情:想象在表面上行走——选择一个恒定的方向或随机移动。

    可能更简单的方法是修改您原来的 RGB 想法以使用反射而不是环绕。如果您在 (50, 100, 255) 并且您的步长增量是 (1, 2, 3),那么您的下一个颜色是 (51, 102, 252) 并且您的增量调整为 (1, 2, -3) .

    【讨论】:

      猜你喜欢
      • 2022-01-13
      • 2010-11-07
      • 2020-11-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-27
      • 2019-04-04
      • 1970-01-01
      相关资源
      最近更新 更多