質問

アcuboidsその位置とサイズが指定された最小値と最大 x, yz 座標(その並列に主軸)。

例えばい、以下の3cuboids:

10.5 <= x <= 39.4,  90.73 <= y <= 110.2, 90.23 <= z <= 95.87
20.1 <= x <= 30.05,  9.4  <= y <=  37.6,  0.1  <= z <= 91.2
10.2 <= x <= 10.3,   0.1  <= y <=  99.8, 23.7  <= z <= 24.9

いるので、次の点など (25.3,10.2,90.65))あるので、迅速に判断する直方体(s)私はいますか?

  • あっけに対して繰り返し処理を実行すべてのcuboidsがす可能性がある何百万ものは、"こに行くよりも早く簡単に繰り返し処理(O(log n)又は良いがでるのです。

  • このことは私のような"ファジィマッチング"の問題とは思 Apache可能 対応 範囲問合せ, が、このうのうことによって、これまでうまく丸(ポイント直方体による直方体に含ます。

  • 若干複雑な事項は、さらに、次元数が以上の3なりますので注意してください(最大20);すなわち私が見るのは"hypercuboidsよcuboids.)

役に立ちましたか?

解決

一わかりやすく加速するこのクエリは以下の構築 均一なグリッド データ構造と呼ばれる箱として、前処理ステップ:を入れて n x n x n (3d)グリッド上でシーンのためのすべての細胞のグリッドのポインタを格納すべてのcuboids交差する。現在、クエリーの点で直接計算する細胞で、均一なグリッド、そしてチェックのみcuboidsに関連付けられている細胞はすべてのcuboids.

によってはできなスペースはどのように変化させる直方体のサイズはこの方法のような非常に効率がいいですが難しい場合があります。を選択するには良い n 解像度の加速のために十分な大量の細胞。そこでまいをより適応的なパターンを可能にするような空間 kd-木 (kd-木wikipedia), は、基本的にはバイナリの木々パーティショニングの空間軸を揃えて面:見例がなめらかになることから赤色面分割のボックスの二つの緑色の小さな部品、その後のブルー---

kd-tree

クエリを使用kd-ツリーが初のトラバースの葉のkd-ツリーのエリの位置がトレージエンジンはインデックスのcuboidsる。 その他の空間分割データ構造 オプションです こちらの.

別のオプションを利用する バウンディング量階層, は、グループのオブジェクトをまとめて、バウンディング量、およびそのグループのバウンディング量を大型のバウンディング量など...。得階層のバウンディングます。これらの対応をより良くシーンで楽を扱うシーンが物体の移動も考えて設定した空間分割仕事ができる。になっ詳細は この書籍の章の.

他のヒント

あなたは「空間分割法」と「衝突検出」の領土にverging。基本的なアイデアは、基本的に、彼らは小ぎれいなボックスに占めるスペースを分割し、ツリー型構造、に直方体を格納しています。各直方体を占める「空間の一部」についての決定は、ツリーstrucutreへの挿入時に行われます。

オクトリ上のGoogle検索を行います。

Efficently 3D空間を分割し、そのスペースに含まれるオブジェクトは、コンピュータ科学のかなり大きな部分です。主にコンピュータゲームの開発に使用されます。アルゴリズムのいくつかは考慮オブジェクトは仕切り空間の間を移動する時間係数を、すなわち取る。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top