我想随机化一些颜色,都具有相同的亮度(但不同的颜色)。现在有一个很好的颜色空间,如LAB
允许你这样做,但转换回RGB时有点棘手,因为你可以在LAB
空间中选择的所有颜色都不能正常表示RGB
。
我决定采用以下方法(糟糕的伪代码,更不用考虑范围和精确值):
L = some fixed value
while r, g or b not in range 0.0 to 1.0:
a = random value
b = random value
r, g, b = LABtoRGB(L, a, b)
现在这对于L=50
只需要1或2次迭代(因为RGB
可以代表该亮度的很大一部分颜色),但我不喜欢这种解决方案。
当然有更好的方法吗?干杯!
答案 0 :(得分:0)
最简单但不是最准确的做法是随机选择R, G & B
以sqrt(R^2+G^2+B^2) == L
(可能是通过平均值为{{1}的正态分布绘制R
}和L*sqrt(3)/3
来自平均值为G
的分布((L^2-R^2) / 2
现在为B
)