3

N 等間隔の RGB 色を与える関数を作成したいと思います。この場合、「距離」をどのように定義しますか? よくわかりませんが、カラー ホイールの定義を使用することを考えていました。

カラーホイール

したがって、次のようなメソッドを作成できれば

public Color colorForAngle(int theta)

次に、360/N を割り、N 個の等間隔の色を抽出することができます。それは理にかなっていますか?Javaで等間隔の色を取得する方法を知っている人はいますか? 組み込まれているもので役立つものはありますか?

ここでのポイントは、十分に (または可能な限り) 異なる N 色を見つけることです。たとえば、N が 3 の場合、色[255, 0, 0], [0, 255, 0], and [0, 0, 255]は可能な限り離れて見えます。

4

3 に答える 3

2

色スペクトルの循環表現から等距離の色を抽出するのは簡単なので、これHSVは よりも使用するのに適しているように思えます。RGB

Andrew が指摘したように、次の関数を使用できます。Color.getHSBColor(H,S,B)

于 2013-01-14T07:27:55.837 に答える
1

ここで重要な点は、正確な答えはないということです。色空間が異なれば、カラー ホイールも (わずかに) 異なります。これは人間の視覚に近似するように設計されているため、この目的のための「最良の」色空間はCIELABであると思います。

ただし、JavaにはCIELABのサポートが組み込まれていないため、そのサポートを作成するか、HSBが「十分」であると言うことができます(おそらくそうです)、他の回答に記載されているように Color.getHSBColor を使用します。

于 2013-01-15T10:49:18.210 に答える
-1

ホイールについては言えませんが、かなり前にアニメーションを書きました。特定の時間が経過すると色が変わります。主な行は次のとおりです。

            colorIndex++;  // A number between 0 and 100.
            if (colorIndex > 100)
               colorIndex = 0;
            float hue = colorIndex / 100.0F;  // Between 0.0F and 1.0F.
            display.setColor( Color.getHSBColor(hue,1,1) );
于 2013-01-14T11:27:00.303 に答える