我想随机化一种颜色,但有一些模糊的条件:颜色不能是灰色的阴影(因此,接近黑色/白色)。
有什么简洁的方法呢?
我想:
选择一个基本的调色板,然后随机选择一个,并"玩"它的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循环。