1

そのため、HSV を使用してある程度の範囲内で色を循環させようとしましたが、色間をスムーズに移行できないようです。理想的には、特定の角度範囲 (80 ~ 140) 内で移動し、彩度と値を 0.5 ~ 1 の間で循環できるようにしたいと考えています。

int[] colors = HsvToRgb(h,s ,v );

私が使用した方法:

public static int[] HsvToRgb(double h, double S, double V) {
    double H = h;
    while (H < 0) {
        H += 360;
    }
    while (H >= 360) {
        H -= 360;
    }
    double R = 0, G = 0, B = 0;
    if (V <= 0) {
        R = G = B = 0;
    } else if (S <= 0) {
        R = G = B = V;
    } else {
        double hf = H / 60.0;
        int i = (int) Math.floor(hf);
        double f = hf - i;
        double pv = V * (1 - S);
        double qv = V * (1 - S * f);
        double tv = V * (1 - S * (1 - f));
        switch (i) {
            case 0:
                R = V;
                G = tv;
                B = pv;
                break;
            case 1:
                R = qv;
                G = V;
                B = pv;
                break;
            case 2:
                R = pv;
                G = V;
                B = tv;
                break;
            case 3:
                R = pv;
                G = qv;
                B = V;
                break;
            case 4:
                R = tv;
                G = pv;
                B = V;
                break;
            case 5:
                R = V;
                G = pv;
                B = qv;
                break;
            case 6:
                R = V;
                G = tv;
                B = pv;
                break;
            case -1:
                R = V;
                G = pv;
                B = qv;
                break;
        }
    }
    int r = Clamp((int) (R * 255.0));
    int g = Clamp((int) (G * 255.0));
    int b = Clamp((int) (B * 255.0));
    return new int[]{r, g, b};
}

public static int Clamp(int i) {
    if (i < 0) {
        return 0;
    }
    if (i > 255) {
        return 255;
    }
    return i;
}
4

1 に答える 1

0

HSLカラーをチェックしてください。その API を使用すると、次のようなメソッドを使用して色を簡単に変更できます。

  1. adjustHue– 色の度合いを指定する
  2. adjustLuminance– 輝度の絶対パーセンテージを指定する
  3. adjustSaturation– 彩度の絶対パーセンテージを指定する
  4. adjustShade– 色合いを調整すると、より暗い色になります。調整パーセントを指定して、色をどれだけ暗くするかを制御します。
  5. adjustTone– トーンを調整すると、明るい色になります。調整パーセントを指定して、色をどれだけ明るくするかを制御します。
于 2015-08-15T18:58:33.697 に答える