グラデーションを描くには

◆PROCESSING 逆引きリファレンス

 カテゴリー:図形描画

グラデーションを描くには

【解説】

画面に図形を描画する際、単色のベタ塗りではなくて徐々に色を変化させたい場合があります。

ちょうど青空が徐々に赤く染まる夕焼けを再現するようなものですね(笑)。

このように段階的に色を変更する為にはループ処理を使うのがよくある手です。例えば以下のような感じです。

<サンプル出力例>

ループ処理でも良いのですが、PROCESSINGには段階的な色の変化を簡単に実現する lerpColor 命令があります。

 

【構文】

int    cl  =  lerpColor(  int  c1,   int  c2,   float  amt  ) ;

 

【パラメータ】

int      cl : 生成された色情報
int      c1    :    開始色
int      c2    :    終了色
float  amt :   補完値(変化の割合)

c1からc2に向けて 、補完値の割合だけ色を変化させます。
補完値は 0.0 から 1.0 までの数値です。

 

【注意】

たとえば黒(0)を白(255)に段階的に変化させる場合、amt が 0.0 なら黒、amt が1.0なら白、amt が0.5なら灰色になります。

amtの最大値は 1 までに制限されます。amt に1より大きな数値を与えても 1.0が指定されたと見なして動作します。

その一方、0よりも小さな数値(-0.5など)を与えた場合は、指定された補完値通りに動作します(汗)。

たとえば黒(0)を白(255)に段階的に変化させる場合、前述の例では 0 から 1 に向かって変化させましたが、これを -1 から 1 に向かって変化させると、以下のようになります。
amtが0.0になるまで、ずっと黒が続き、その後で白に向かって急速に変化しているのがわかると思います。

ここは注意ですが、簡単に色を変更できるのはとても便利です。

 

【関連記事】

  • なし

サンプルプログラム

グラデーション例1:

amt を 0 から 1 に向かって段階的に変化させ、黒から白へと変化するグラデーションを作成します。
変化量は画面の幅に従って、なだらかになるようにしています。

<出力サンプル>

 

グラデーション例2:

先程とほとんど同じですが、今度は赤( 255, 0, 0 )から青( 0, 0, 255 )へ向けて段階的に変化させています。

<出力サンプル>

 


PROCESSING逆引きリファレンス一覧 へ戻る

本ページで利用しているアイコン画像は、下記サイト様より拝借しております。各画像の著作権は、それぞれのサイト様および作者にあります。