gpt4 book ai didi

java - 随机 HSV 颜色

转载 作者:行者123 更新时间:2023-12-02 06:54:20 25 4
gpt4 key购买 nike

我正在尝试获取随机 HSV 颜色,然后将其转换为 RGB 以便使用。有人对我如何做到这一点有任何想法吗?谢谢,萨姆。到目前为止我所得到的:第一种方法将 HSV 转换为具有指定值的 RGB,第二种方法是获取随机颜色。

public static float[] HSVtoRGB(float h, float s, float v) {
float m, n, f;
int i;

float[] hsv = new float[3];
float[] rgb = new float[3];

hsv[0] = h;
hsv[1] = s;
hsv[2] = v;

if (hsv[0] == -1) {
rgb[0] = rgb[1] = rgb[2] = hsv[2];
return rgb;
}
i = (int) (Math.floor(hsv[0]));
f = hsv[0] - i;
if (i % 2 == 0) {
f = 1 - f; // if i is even
}
m = hsv[2] * (1 - hsv[1]);
n = hsv[2] * (1 - hsv[1] * f);
switch (i) {
case 6:
case 0:
rgb[0] = hsv[2];
rgb[1] = n;
rgb[2] = m;
break;
case 1:
rgb[0] = n;
rgb[1] = hsv[2];
rgb[2] = m;
break;
case 2:
rgb[0] = m;
rgb[1] = hsv[2];
rgb[2] = n;
break;
case 3:
rgb[0] = m;
rgb[1] = n;
rgb[2] = hsv[2];
break;
case 4:
rgb[0] = n;
rgb[1] = m;
rgb[2] = hsv[2];
break;
case 5:
rgb[0] = hsv[2];
rgb[1] = m;
rgb[2] = n;
break;
}
return rgb;
}

public static int randomColor() {
int hue = (int) (Math.random() * 6.0f);
int saturation = (int) (Math.random());
int brightness = (int) (Math.random());

float[] rgb = HSVtoRGB(hue, saturation, brightness);

int red = (int) (rgb[0] * 255.0f);
int green = (int) (rgb[1] * 255.0f);
int blue = (int) (rgb[2] * 255.0f);

return (red << 16) | (green << 8) | blue;
}

最佳答案

您可以使用java.awt.Color.RGBtoHSB(...)您可以在此处找到相关文档:http://docs.oracle.com/javase/1.4.2/docs/api/java/awt/Color.html

然后生成随机颜色就变得微不足道了。

int red = (int) (Math.random() * 256)
int green = (int) (Math.random() * 256)
int blue = (int) (Math.random() * 256)

然后直接转换。请注意,同一类中还有一个 HSBtoRGB(...) 函数。

关于java - 随机 HSV 颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17577386/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com