コードサンプル: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で長方形の位置を決めているのは、それぞれの長方形の位置を固定するためかと。

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