我尝试迭代RGB值,得到一个连续的色板。通常,迭代3个值并得到它们,你可以像在二进制中那样做:
r g b 0 0 0 0 0 1 0 1 0
但我有一个主要问题。我们需要让他们的顺序看起来连续,所以例如,我去了红色,而不是正确的橙子,而不是黄色,绿色等。什么算法,或伪代码,我应该使用,让他们在该顺序??请参见随附的图片,颜色应该是什么样子:
5lwkijsr1#
从25500开始,然后向上计数g到2552550,然后向下计数红色到02550,然后向上计数蓝色到0255255,然后向下计数绿色到00255,然后向上计数红色到2550255,然后向下计数蓝色到25500。
sg24os4d2#
从HSB或HSL值开始,然后将其转换为RGB。选择亮度(B)和饱和度(S)时,通过连续更改色相(H)的值可以获得所需的效果如果你谷歌一下,你会发现公式做转换
jaql4c8m3#
你所需要的是颜色的线性插值,以使从一种颜色到另一种颜色的平滑过渡。我会给你一个简单的锻炼,以了解所涉及的数学。红色=(1,0,0)黄色=(1,1,0)(正好位于红色和黄色之间)绿色=(0,1,0)首先从红色到黄色进行插值。由于x和z保持不变,因此唯一需要插值的分量是y。平滑度取决于从一个极端到另一个极端的停靠次数。假设停靠次数= 4
x
z
y
+------------+------------+ |Red |(1, 0, 0) | +------------+------------+ | |(1, 0.2, 0) | + +------------+ | |(1, 0.4, 0) | + Yellowish +------------+ | Red |(1, 0.6, 0) | + +------------+ | |(1, 0.8, 0) | +------------+------------+ |Yellow |(1, 1, 0) | +------------+------------+ | |(0.8, 1, 0) | + +------------+ | |(0.6, 1, 0) | + Yellowish +------------+ | Green |(0.4, 1, 0) | + +------------+ | |(0.2, 1, 0) | +------------+------------+ |Green |(0, 1, 0) | +------------+------------+
如果你从Red -> Yellow -> Green -> Cyan -> Blue -> Magenta插值,你会得到一条线,一个极端是红色,另一个极端是洋红色。现在,要创建您在问题中发布的HSV wheel,需要同时执行径向和轴向插值。
Red -> Yellow -> Green -> Cyan -> Blue -> Magenta
+-------+-------+ |Angle° |Colour | +-------+-------+ |0/360 |Red | +-------+-------+ |60 |Yellow | +-------+-------+ |120 |Green | +-------+-------+ |180 |Cyan | +-------+-------+ |240 |Blue | +-------+-------+ |300 |Magenta| +-------+-------+
所以从圆心到圆周的0 °角连线的圆心是白色的(1,1,1),圆周是纯红色的(1,0,0),其他Angular 也是这样(直到你回到360/0 °),你就得到了你贴的轮子;它实际上是一个更大的(HSV)圆柱体的圆盘,其垂直轴将插入 * 亮度 *(图片在维基百科的优秀文章链接以上)。有关HSV控制盘的实时渲染,请参见下面的代码。一个二个一个一个
woobm2wo4#
使用HSV而不是RGB可以使在色轮上迭代变得非常简单,只需使用H值(色调)从0到360循环即可。HSV是RGB的另一种颜色表示法,RGB代表“色调、饱和度、明度"(或HSL / HSB中的无光/亮度)。使用HSB执行大多数颜色操作要简单得多,因为所有颜色都在色谱上按色调(H)排序。色相单位是色轮上的度数,如参考图像所示。色相从0开始,一直到360,两者都是红色。红色之后,色相60是黄色。色轮在色相300、洋红色之后结束。
4条答案
按热度按时间5lwkijsr1#
从25500开始,然后向上计数g到2552550,然后向下计数红色到02550,然后向上计数蓝色到0255255,然后向下计数绿色到00255,然后向上计数红色到2550255,然后向下计数蓝色到25500。
sg24os4d2#
从HSB或HSL值开始,然后将其转换为RGB。
选择亮度(B)和饱和度(S)时,通过连续更改色相(H)的值可以获得所需的效果
如果你谷歌一下,你会发现公式做转换
jaql4c8m3#
你所需要的是颜色的线性插值,以使从一种颜色到另一种颜色的平滑过渡。我会给你一个简单的锻炼,以了解所涉及的数学。
红色=(1,0,0)
黄色=(1,1,0)(正好位于红色和黄色之间)
绿色=(0,1,0)
首先从红色到黄色进行插值。由于
x
和z
保持不变,因此唯一需要插值的分量是y
。平滑度取决于从一个极端到另一个极端的停靠次数。假设停靠次数= 4如果你从
Red -> Yellow -> Green -> Cyan -> Blue -> Magenta
插值,你会得到一条线,一个极端是红色,另一个极端是洋红色。现在,要创建您在问题中发布的HSV wheel,需要同时执行径向和轴向插值。
所以从圆心到圆周的0 °角连线的圆心是白色的(1,1,1),圆周是纯红色的(1,0,0),其他Angular 也是这样(直到你回到360/0 °),你就得到了你贴的轮子;它实际上是一个更大的(HSV)圆柱体的圆盘,其垂直轴将插入 * 亮度 *(图片在维基百科的优秀文章链接以上)。
有关HSV控制盘的实时渲染,请参见下面的代码。
一个二个一个一个
woobm2wo4#
使用HSV而不是RGB可以使在色轮上迭代变得非常简单,只需使用H值(色调)从0到360循环即可。
HSV是RGB的另一种颜色表示法,RGB代表“色调、饱和度、明度"(或HSL / HSB中的无光/亮度)。使用HSB执行大多数颜色操作要简单得多,因为所有颜色都在色谱上按色调(H)排序。
色相单位是色轮上的度数,如参考图像所示。色相从0开始,一直到360,两者都是红色。红色之后,色相60是黄色。色轮在色相300、洋红色之后结束。