これは矩形を回転させ、回転した矩形同士が重なっているかの実験です。

さて任意の点がこのRotatedRectangleの内部にあるか、複数の回転している矩形が重なっているかはどうやって調べればいいでしょうか?

回転した矩形を描画する

最初に回転した矩形を描画してみます。これは回転した矩形を描画するためのクラスです。コンストラクタで中心の座標と幅、高さを指定します。CenterプロパティとAngleOfRotationプロパティを設定することで回転角度と描画位置を変更することができます。

上記のクラスをつかって回転された矩形を描画してみます。

点は矩形の内部にあるか?

ある座標が矩形の内部かどうかは以下の方法で調べることができます。

回転しているのであれば回転を戻して上記の方法で調べるのはどうでしょうか?

これはクリックされた座標が回転した矩形の内部かどうかを調べるプログラムです。

回転した矩形と矩形は重なっているか?

では点ではなく他の矩形と重なっているかどうかを調べるにはどうすればいいでしょうか? 大きくない矩形であれば矩形のまわりの点をあつめてRotatedRectangle.IsPointInside(Point pt)で判定できそうです。

回転した矩形同士は重なっているか?

ではRotatedRectangleをもうひとつ用意してお互いが重なっているかどうかはどうやって調べればよいでしょうか? これも境界線の点の集合を取得して考えることにします。