別の提案(封じ込めをカバーし、より安価だと思います):
#1 の 4 つの頂点のいずれかが #2 の内側にあるかどうかを確認し、次に #2 の 4 つの頂点のいずれかが #1 の内側にあるかどうかを確認します。これについて私が提案する方法は次のとおりです。
チェックしている #1 の頂点が v で、#2 の 4 つの頂点が v1 ... v4 であるとします。#2 の向きで 5 つの頂点すべてを逆回転します。(方向行列 M でベクトル u を逆回転するには、u に M 転置: M^T u を乗算します。これは、慣例では方向が左乗算で機能すると仮定します。) 結果の 2 番目のボックスを #2' と呼びます。 v' が含まれているかどうかをすぐに確認できます。
#2 - stop の内側に #1-頂点が見つかった場合は、交差点があります。それ以外の場合 - 続行します。
いくつかの最適化がすぐに頭に浮かびます (おそらく、頂点の回転されていないコピーを各ボックスに保存できますか?サイズが固定されている場合は、それらを比較して、可能な封じ込めの 1 つをすぐに排除し、3 つの潜在的なテストを保存できますか?)膨大な数のボックス ペアに適用している場合、このテストはそのままで十分に安価なはずです。
動きに関しては、そこに好きなだけ深く入ることができます-「連続衝突」を調べて、自分の目で確かめてください. (ステファン・ルドンの素敵な作品を特に覚えています)。私は、この手の込んだことを行うゲームはないと心から信じています。実際に非常に速く動いている場合は、時間ステップを細分化して、各位置/方向のサブイテレーションで衝突チェックを実行できます。
(編集:) それについては、別の議論がありました。