四角形の上にマウスが乗ったら(マウスオーバー。四角形の中心を基準に大きくなる)

左上の点に変数x, yを使用して長方形を描く場合、幅(w)や高さ(h)を変化させると、左上の点を基準に大きく/小さくなってしまいます。四角形の中心を基準に大小させるようにしたい場合、変数x, yを四角形の中心として考えます。

しかし、rect()を使って長方形を描くには、左上の頂点の座標を求めなければなりません。中心が(x,y)で、それを幅(w)の半分、高さ(h)の半分ずつ移動した点が左上の頂点となるので、その座標は(x-w/2, y-h/2)になります。

この場合、rect()による描画命令は以下のようになります。

rect(x-w/2, y-h/2, w, h);   //x, yを中心と考えた場合の長方形の描画

あとはセオリー通り、長方形の四辺の座標を求めて、マウスの座標と比較すればいいわけです。

四辺の座標は以下のようになります。
・長方形の左辺のx座標は x-w/2
・長方形の右辺のx座標は x+w/2
・長方形の上辺のy座標は y-h/2
・長方形の下辺のy座標は y+h/2

これを元に図の①②③④に相当するif文の条件式を考えると、
x-w/2 < mouseX
mouseX < x+w/2
y-h/2 < mouseY
mouseY < y+h/2
というようになります。そしてこの4つの条件が全て満たされた場合のif文の条件式は以下のようになります。

if(x-w/2 < mouseX && mouseX < x+w/2 && y-h/2 < mouseY && mouseY < y+h/2){
}

ソースコード