◆ 矩形領域同士の重なりの判定 |
矩形領域の重なりを判定するには、次のようにします。 ■ 必要な情報: 矩形1の最小点・最大点 ptMin1(xmn1, ymn1) ptMax1(xmx1, ymx1) 矩形2の最小点・最大点 ptMin2(xmn2, ymn2) ptMax1(xmx2, ymx2) bool bCross = !(xmn1 > xmx2 || xmn1 > ymx2 || xmx1 < xmn2 || ymx1 < ymn2);※ 解説 矩形領域が重なっている、というのは下のような状態ですね。 これを見ると、X・Y両成分について、必ずどちらかの最大・最小の頂点の値が、もう一方の最大・最小の頂点値の間に存在していないと、領域は重ならないのが分かるでしょうか。 逆に考えると、片方の最小値が、もう片方の最大値よりも大きい場所にある、もしくは最大値がもう片方の最小値よりも小さい場所にあると、その領域は重ならない、と言い換えることができます。 上の式では、上図の①と②を『満たさない』かどうかを判定しているわけですね。 |