随机化一个带有条件的颜色



我想随机化一种颜色,但有一些模糊的条件:颜色不能是灰色的阴影(因此,接近黑色/白色)。

有什么简洁的方法呢?

我想:
选择一个基本的调色板,然后随机选择一个,并"玩"它的RGB参数。

颜色可以用红、绿、蓝混合以外的方式来表示。一个更好的模型是称为HSV的方法(有一个类似的模型称为HSL),意思是色相,饱和度和值。色相是颜色的频率(在色轮上的旋转位置),而饱和度和值控制颜色的亮度和暗/亮程度。决定一个S和V的范围,然后选择一个随机的色调,你应该很好。

伪代码:

生成0 ~ 255范围内的value1

生成范围0到(value1 - 100)和(value1 + 100)到255的value2

生成0 ~ min(value1,value2) - 100和min(value1,value2) + 100 ~ 255的value3

随机分配value1,value2和value3给R G和b

生成红色(r)、绿色(g)和蓝色(b)的随机值,然后计算

(r - g) * (r - g) + (r - b) * (r - b) + (g - b) * (g - b)

这个数量将给你一个距离灰色有多远的度量。0表示它是灰色、黑色或白色的。一个大的数字意味着饱和。

因此,如果该数字小于某个阈值(可能是5000左右),则重新生成数字。您可能需要稍微摆弄一下以找到适合您需求的最佳阈值。

最简单的方法可能是使用do-while循环。

最新更新