随机化具有固定亮度的颜色



我想随机化许多颜色,所有颜色都具有相同的亮度(但不同的紫色)。现在有一个很好的颜色空间,比如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可以代表该亮度的很大一部分颜色),但我不喜欢这种解决方案。

肯定有更好的方法吗?干杯

实现这一点的最简单但不是最准确的方法是随机选择R, G & B,使sqrt(R^2+G^2+B^2) == L(可能通过从平均值为L*sqrt(3)/3的正态分布中绘制R,并从平均值(L^2-R^2) / 2的分布中绘制出GB现在是sqrt(L^2 - R^2 - G^2)

相关内容

  • 没有找到相关文章

最新更新