要了解发生了什么,请尝试创建一个程序,为 0-360 之间的每个值显示一行:
size(360,100);
colorMode(HSB, 360, 100, 100);
noStroke();
for (int i = 0; i < 360; i++)
{
fill(i, 100, 100);
rect(i, 0, 1, 100);
}
你会看到这个:
请注意,“鲜艳的黄色”带比绿色或蓝色带窄得多。这就是为什么简单地对每个 X 值进行采样不会生成黄色。
黄色在值附近60
,因此您可以修改增量,使其落在 60 上。绘制 12 个宽度为 30 的矩形可以让您落在黄色上:
size(360,100);
colorMode(HSB, 360, 100, 100);
noStroke();
for (int i = 0; i < 360; i++)
{
fill(i*30, 100, 100);
rect(i*30, 0, 30, 100);
}
或者,您可以提前提出所需的值并将它们放入数组中,而不是使用均匀分布:
int[] hueValues = {0, 15, 30, 60, 90, 120, 150, 180, 210, 225, 240, 270, 300, 330, 360};
size(360,100);
colorMode(HSB, 360, 100, 100);
noStroke();
for (int index = 0; index < hueValues.length; index++)
{
float rectWidth = width/hueValues.length;
fill(hueValues[index], 100, 100);
rect(index*rectWidth, 0, rectWidth, height);
}