【发布时间】: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 的其他值不同且有趣到足以包括在内?如果是这样,它们是哪些,你如何在它们之间循环,同时排除数百万看起来像白色或黑色的?