KDツリーを実装する方法を見つけようとしています。
エリクソンによる「リアルタイム衝突検出」の322ページ
リンクをクリックしたときにGoogleブックのプレビューで表示できない場合に備えて、テキストセクションを以下に示します
関連セクション:
光線または有向線分とkdツリーの交差の背後にある基本的な考え方は簡単です。線はノードの分割平面と交差し、交差のt値が計算されます。tが線の間隔(0 <= t <= tmax)内にある場合、線は平面にまたがり、ツリーの両方の子が再帰的に下降します。そうでない場合、セグメントの原点を含む側のみが再帰的にアクセスされます。
だからここに私が持っているものがあります:(レタリングが表示されない場合、新しいタブで画像を開きます)
論理ツリー
オレンジ色の光線が3Dシーンを通過しています。xは平面との交差を表します。左から、光線が当たります:
- シーンを囲むキューブの前面、
- (1)分割面
- (2.2)分割面
- シーンを囲むキューブの右側
しかし、上記のEricsonの基本的な説明に素直に従うと、次のようになります。
- 分割面に対してテストします(1)。光線は分割面(1)に当たるため、分割面(1)の左右の子は次のテストに含まれます。
- 分割面(2.1)に対してテストします。レイは実際にその平面にぶつかるので(右に向かって)、両方の子が次のレベルのテストに含まれます。(これは直感に反します-最下位ノードだけを後続のテストに含めるべきではありません)
オレンジ色の光線がシーンを正しく通過したときに何が起こるかを説明できますか?