6

私が取り組んでいるこのアルゴリズムの目標は、提供された色から色の進行を出力することです。色の進行とは、2 つの色 (色 A、色 B) の間に「フェード」効果を作成し、その間にすべての色の値 ((R、G、B) タプル) を格納することを意味します。

たとえば、提供されるものが完全な黒A = (0,0,0)と完全な白である場合B = (255,255,255)、進行結果は次のようになります。

P = ((0,0,0),(1,1,1),(2,2,2), .... ,(253,253,253),(254,254,254),(255,255,255)

最初は白く、徐々に黒くなっていきます。もちろん、白と黒の場合は非常に簡単です (RGB を各ステップで 1 つずつ 255 倍に増やすだけです)。しかし、A = (180,69,1) と B = (233,153,0) のように、任意の 2 つの色でこの手順を実行したい場合はどうすればよいでしょうか??

重要な注意: 16 進数 (またはその他の種類の色表記) を使用する方が簡単な場合は、それを使用することもできます。どのタイプを指定するかを指定するだけです (PIL (Python Imaging Library) に取り組んでいることを考慮に入れてください)。ですので、それに対応していれば大丈夫です)

明らかに、可能な限り均一な分布でなければならず、進行は均一でなければなりません。

フラクタル ジェネレーター (マンデルブロ セット、必要に応じてググってください) で使用できるように、このアルゴリズムを理解する必要があるため、進行ができるだけ穏やかで、しゃっくりがないようにすることが重要です。

前もって感謝します。

4

3 に答える 3

2

RGB座標をHSLまたはHSVに変換し、それらをステップスルーして、途中でRGBに戻します。

于 2011-05-05T16:44:33.157 に答える
0

RGB値を個別に補間するだけです。このスレッドを参照してください。

于 2011-05-05T17:18:02.727 に答える
0

特定の色のグラデーション (色の進行と呼ばれるものの一般的な名前) を生成する 1 つの方法を示しているため、疑似色に対する値の範囲というタイトルの SO の質問に対する私の回答が役立つ場合があります。

一般に、各色の成分間の差またはデルタ値を計算することにより、任意の色空間の任意の 2 つの色を補間し、それらを必要な中間ステップ数で割って、成分ごとの分数デルタ量を取得し、各色の後に適用することができます。ステップ。

次に、最初の色の各成分の値から始めて、対応する分数を繰り返し加算して、各中間段階の色を決定します。あるいは、そのアプローチに固有の算術誤差は、代わりに(step_number/total_steps) * fractional_delta開始色の初期色成分値に加算することによって減らすことができます。

これは@Jim Clayも彼の答えで言っていることだと思います。サンプル コードが必要な場合は、コメントにその旨を記載してください。

于 2012-06-14T22:28:13.520 に答える