Basics \ Processing.orgの、
Brightness \ Learning \ Processing.orgより。
画面内にマウスポインタを持っていくと、カラースペクトルに沿った縦長の長方形が描かれるサンプル。
マウスのY座標で、長方形の明度が決まる。
//変数宣言 int barWidth = 5;//長方形の幅 int lastBar = -1;//*1.最後に描いた長方形のナンバー(メインループで長方形に左から順番にナンバリングする) //初期化 void setup() { size(200, 200);//画面サイズ colorMode(HSB, 360, 100, height);//カラーモードをHSBにして、Bには画面高さ(200)を指定。 noStroke();//(長方形の)境界線描画を無効。 background(0);//背景色を黒に。 } //メインループ void draw() { int whichBar = mouseX / barWidth;//マウスのX座標を元にbarWidth毎に分割して、長方形をナンバリング。 if (whichBar != lastBar) {//*2 int barX = whichBar * barWidth;//長方形の位置 fill(barX, 100, mouseY);//塗りつぶし指定をHSBで。 rect(barX, 0, barWidth, height);//*3 barXの位置で幅5pxの長方形を描く。 lastBar = whichBar;// } }
- 最初にlastBarの初期値を-1に設定するのは、メインループ内のif文で最初の条件分岐に対応させるためなハズ。
初期値はwhichBarと同じにならない数値であれば何でもいいと思うけど、これはいわゆるプログラミングの慣習ということだと勝手に解釈。 - if文が無くても箱は描画されるけど、箱内でマウスを動かすと色が変わってしまうのを避けるためかと。(if文内の最後の行)
- mouseXではなく、barXで長方形の位置を決めているのは、それぞれの長方形の位置を固定するためかと。
解釈違いがあればツッコミをお願いします。