Processing における色の表現方法
色を指定する方法(カラーモード)には次の4つがあります。
グレースケールモード
1つの数値を使い、黒から白までの明るさを、256段階の間で指定するモードです。
0で真っ黒、255で真っ白となります。
RGBモード
R(赤)、G(緑)、B(青)の3つの数値で色を指定するモードです。
R, G, Bの値が全て同じ数値である場合は色の無いグレースケールの色となり、
これはグレースケールモードでその数値で指定した場合と同じ色になります。
HSBモード
H(色相)、S(彩度)、B(輝度)の3つの数値で色を指定するモードです。
H(Hue)は赤・青・緑のような色味の違い、S(Saturation)は色の鮮やかさ、B(Brightness)は色の明るさです。
16進数カラーコードモード
#で始まる6桁の数字でRGB色を指定します。HTML/CSSでよく使われる色指定方法です。
2桁ごとにR,G,Bの値を指定し、例えば #ff0000 は赤色、#00ff00は緑色になります。
カラーモードは colorMode 関数を使って切り替えます。
カラーモードはデフォルトではRGBに指定されているので、RGBモードで色指定を行なう場合は colorMode 関数を使う必要はありません。
サンプル
コード
int x1 = 180; int x2 = 500; void setup(){ size( 850, 400 ); textFont( createFont( "Georgia", 18 ) ); } void draw(){ background( 255 ); // 縦線を255本、横に並べることでグラデーションを作ります for (int i = 0; i < 255; i++) { stroke( i ); // 引数が1つだとグレースケール値として指定される line( x1 + i, 25 , x1 + i, 125 ); colorMode( RGB ); // カラーモードをRGBに変更 stroke( i, 0, 0 ); // Rの値でグラデーションを作る line( x1 + i, 150 , x1 + i, 250 ); stroke( 0, i, 128 ); // Gの値でグラデーションを作る line( x2 + i, 150 , x2 + i, 250 ); colorMode( HSB ); // カラーモードをHSBに変更 stroke( i, 255, 255 ); // Hの値でグラデーションを作る line( x1 + i, 275 , x1 + i, 375 ); stroke( 0, i, 255 ); // Sの値でグラデーションを作る line( x2 + i, 275 , x2 + i, 375 ); } fill( 0 ); // 文字色を黒に(引数が1つなのでグレースケール値として指定される) text( "Grayscale" , 60, 75 ); text( "RGB" , 80, 205 ); text( "HSB" , 80, 330 ); }
色の数値の範囲を変更する
グレースケール値やRGB値、またHSB値は、デフォルトでは 0 から 255 の範囲の値になっています。
つまり、グレースケール値であれば 0 で最も黒く、255 で最も明るく(白く)なります。
この値の範囲は、変更することができます。colorMode 関数の引数に、各値の最大値を与えます。
colorMode( HSB, 360, 100, 100 );
Hは 0 から 359 までの360段階で、H, Bは 0 から 99 までの100段階で指定されるようになります。
colorMode( HSB, 100 );
H,S,Bの値はどれも 0 から 99 までの100段階で指定されるようになります。
サンプル
コード
void setup(){ size( 600, 400 ); noStroke(); } void draw(){ colorMode( RGB, 255 ); // RGBモードで、R,G,Bどの値も255を最大値に(デフォルト設定と同じ) background( 255 ); colorMode( HSB, 360, 100, 100 ); // Hを360、SBは100を最大値に fill( 0, 100, 100 ); ellipse( 100, 200, 100, 100 ); colorMode( RGB, 100 ); // RGBモードで、R,G,Bどの値も100を最大値に fill( 0, 100, 0 ); ellipse( 300, 200 , 100, 100 ); colorMode( RGB, 255 ); // RGBモードで、R,G,Bどの値も255を最大値に fill( 0, 100, 0 ); ellipse( 500, 200 , 100, 100 ); }
15行目と19行目はどちらも fill( 0, 100, 0 )と、同じ引数の値で色を指定しています。ですが、描かれる円の色は異なっています。
コメント