如何基于许多不同的int创建多种颜色

时间:2013-09-27 12:13:47

标签: c++ opengl colors

我想创建一个基于int变量创建唯一颜色的函数。问题是这些变量的范围(从1到10 000)。

所以我有一个包含10 000个字段的数组,每个字段都有自己的ID。现在我需要根据该ID设置每个字段的颜色;

void setColor(int ID); // set R G B 

有什么建议吗?

3 个答案:

答案 0 :(得分:4)

您有10,000个可能的输入选项,而256 x 256 x 256 = 1600万个输出选项。 假设你想要平均地改变RGB值,你可以最多使用R,G,B的21个diff值,因为它会产生21.5 ^ 3~10000。

所以你需要采取256/21~12的步骤来达到你的目的。

所以,基本上我的观点是:

int       RGB value
1         0,0,0
2         0,0,12
3         0,0,24
.
..
22        0,0,253
23        0,12,0
.
.
.
10000     255,255,255

答案 1 :(得分:0)

您可以省略表并构建哈希函数。 一个简单的问题是:

rgb(unsigned x) {
    b = x & 0xFF;
    x >>= 8
    g = x & 0xFF;
    x >>= 8
    r = x & 0xFF;
}

这里的分布并不好:2 ^ 24 - 10000 = 16767216

替代哈希可以计算distributed = id * 2 ^ 24/10000。

答案 2 :(得分:0)

最简单的解决方案是直接将ID转换为RGB值。然而,它肯定不会产生视觉上独特的颜色范围。