调色板的连续颜色

时间:2013-02-01 20:04:18

标签: java c++

通常我会创建红色,绿色,蓝色的颜色。但是我希望用户只使用滚轮选择颜色,因此不能让用户指定三个颜色通道。

我有一个可以递增到256 * 256 * 256的变量。

但是,如果我使用bitshift来获取颜色通道,我会突然“跳跃”颜色。

如何以整数的连续调色板的方式获取颜色通道?

2 个答案:

答案 0 :(得分:1)

我无法想到一种直观的方式,因为你有几种不同的自由度。如果您只想要基色而不是任意RGB值,我会使用HSV并滚动色调值。

答案 1 :(得分:1)

你有一个你想要线性连续走过的立方体。

幸运的是,反转图像不需要连续!

如果你看这里:http://xkcd.com/195/你会看到一种线性连续地走过二维空间的方法。将这个步行改为三维步行并不是一件非常棘手的事。

我们有2个2x2多维数据集,有8个位置,编码为000到111:

000 001
010 011

100 101
110 111

这些是立方体顶部和底部切片的坐标。

我们按此顺序走:

    1 -> 2
         |
         V
/-- 4 <- 3
|
|   6 -> 7
|   ^    |
|   |    V
\-> 5    8

导致我们退出“远角”的立方体。

现在,要在每个维度中将立方体的大小增加两倍,只需使用相同的算法获取上述8个角中的每一个。

8层深,我们以连续的方式走256 x 256 x 256立方体。

现在,我在实践中,这可能是一个坏主意 - 但尝试可能会很有趣。 :)

按顺序对位置的位值进行相对简单的模式:

000
001
011
010
110
100
101
111

即,0102101是坐标中改变的位。

或另一种看待它的方式是,我们行走尺寸的方式是格雷码模式。