2016-05-29 8 views
0

私は今考えているよりもはるかに簡単なことを理解しようとしていますので、以下で説明することを理解するのを助けることができれば幸いです。球/錐体のオーバーラップテストの選択

3Dの6つの錐台面のうちの少なくとも1つ(左、右、下、上、遠方に近い)の真下に球があると、私は知っています。これは、下の例では、完全に左の平面の外側にある中心c2の円に当てはまります。オーバーラップテストは、球の中心座標を平面方程式に挿入して中心から平面までの距離を求め、球の半径と比較するだけで簡単に実行できます。

しかし、この方法を中心c1の球で使用すると、(上から見た場合に)球が右と遠い両方の平面の内側にあることがテストからわかるため、偽陽性となります。解決策は、球の中心から視錐台の最も近い角までの距離を決定することにより、より正確な重ね合わせ試験を使用することです。この距離が半径よりも大きい場合、球が錐台などの外にある

Spheres and viewing frustum

私は理解していないことである私たちは、この第二のアプローチを使用している場合、代わりに平面のコーナーを見て、中心c3のもののような位置にある球面上にある。球の中心から半径を差し引いた距離が0より大きく、したがって視体積の外にあることが試験によって分かりませんか?

したがって、0≤x≤20、-5≤15、-5≤z≤18、およびx、y、z座標+球の半径球体がその内側にあるのか外側にあるのかを判断するように言いました。実際に正解を得るためにどのような方法を選択すればよいですか?実際に

答えて

1

あなたは両方を必要とする:

  1. あなたが試験球体が交差するかどうか/錐(6面)の中身をチェックする必要があります - あなたのfirst approachを。
  2. (1が真である場合)、距離が< -Rの場合、球は完全に内側になります。
  3. そうでなければ、あなたが交差点をチェックする必要が(少なくとも1つのredクロスはあなたが交差点を持って、あなたのblackセグメント上にある場合)平面上の座標:3の enter image description here

実装はとてもここではトリッキーなことができ二つのリンクです:

http://www.realtimerendering.com/intersections.html http://www.geometrictools.com/Source/Intersection3D.html

ここで、Frustrum-Sphere交差点を見つけることができます。

しかし、geometrictoolsの実装では、より複雑なFindMinDistance algoが使用されます。その実装(Wm5DistPoint3Frustum3.cpp)を調べて、それを反復のみに適合させることができます。

+0

これは理にかなっています、今私は理解しています。ありがとう! –

関連する問題