0

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

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

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

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

4

2 回答 2

1

我想不出一种直观的方法来做到这一点,因为你有几个不同的自由度可以玩。如果您只想要一个基色而不是任意的 RGB 值,我会使用 HSV 并滚动浏览色调值。

于 2013-02-01T20:16:32.077 回答
1

你有一个立方体,你想线性且连续地走过它。

幸运的是,倒像不需要连续!

如果您看这里:http: //xkcd.com/195/,您会看到一种线性且连续地在二维空间中行走的方法。将此步行更改为 3 维步行从根本上来说并不棘手。

我们有 8 个位置的 2x2 立方体,编码为 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 是坐标中改变的位。

或者另一种看待它的方式是,我们在维度上行走的方式是格雷码模式。

于 2013-02-01T20:59:43.413 回答