左上の点に変数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){
}


