0
나는 무작위 HSV 색깔을 얻고 그 후에 RGB로 그것을 사용하기 위하여 변환하고있다. 아무도 내가 어떻게 할 수있는 아이디어가 있습니까? 고마워, 샘. 지금까지 얻은 것 : 첫 번째 방법은 HSV를 지정된 값으로 RGB로 변환하고 두 번째 방법은 임의의 색상을 얻는 것입니다.무작위 HSV 색깔
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;
}
아니요, 임의의 HSV 값을 생성하려고합니다. 나는 "무작위"RGB 값을 얻고 HSV로 다시 변환하고 싶지 않습니다. – user1009569
위의 스 니펫에 나와있는 것처럼 랜덤 RGB 값을 쉽게 생성 한 다음이 RGB 값을 HSB 값으로 변환 할 수 있습니다. HSV가 무엇인지 전혀 알지 못합니다. Google은 귀하가 HSB를 의미하는 것으로 확인합니다. 여기를 참조하십시오 : http://stackoverflow.com/questions/2399150/convert-rgb-value-to-hsv – Kon
예, HSV와 HSB가 동일하며 HSB의 임의 값을 가져와야합니다. 답은 맞지만 HSB 값이 필요합니다. 감사합니다. – user1009569