コードサンプル:Brightness

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;//
}
}
  1. 最初にlastBarの初期値を-1に設定するのは、メインループ内のif文で最初の条件分岐に対応させるためなハズ。
    初期値はwhichBarと同じにならない数値であれば何でもいいと思うけど、これはいわゆるプログラミングの慣習ということだと勝手に解釈。
  2. if文が無くても箱は描画されるけど、箱内でマウスを動かすと色が変わってしまうのを避けるためかと。(if文内の最後の行)
  3. mouseXではなく、barXで長方形の位置を決めているのは、それぞれの長方形の位置を固定するためかと。

解釈違いがあればツッコミをお願いします。

Author

  • Shinichi Kuroda - 黒田晋一
  • 香川県高松市 - Takamatsu-shi, Kagawa, Japan.
  • Mail - info@studiobusstop.com