2D 衝突検出に四分木を使用しようとしていますが、実装方法に少し困惑しています。まず、4 つのサブツリー (各象限を表す 1 つ) と、1 つのサブツリーに収まらないオブジェクトのコレクションを含む 4 つ木があります。
ツリー内のオブジェクトの衝突をチェックするときは、次のようにします ( 2D 衝突検出のための QuadTree のおかげです)。
- 現在のノード内のオブジェクトとの衝突についてオブジェクトをチェックします。
- スペースがオブジェクトと重なっているサブツリーについては、再帰します。
四分木ツリー内のすべての衝突を見つけるには:
- 現在のノード内の各オブジェクトを、現在のノード内の他の各オブジェクトに対してチェックします。
- 各サブツリーに対して現在のノードの各オブジェクトをチェックします。
四分木に挿入するには:
- オブジェクトが複数のサブツリーに収まる場合は、現在のノードに追加して戻ります。
- それ以外の場合は、それを含むサブツリーに再帰します。
四分木を更新するには:
- 各サブツリーに再帰します。
- 現在のノードのいずれかの要素が現在のツリーに完全に収まらなくなった場合は、それを親に移動します。
- 現在のノードのいずれかの要素がサブツリーに収まる場合は、それをサブツリーに挿入します。
これでいいですか?改善できますか?