2016-09-15 13 views
4

1軸に沿って3D貫通ベクトルを計算する際に問題があります。私はすでにSATを実装しています。最初のボックスを他のものからどのくらいオフセットする必要があるかを計算したいので、常に他のものの上に座ります。非常に長いボックスでシンプルなボックスキャストをすることの種類。分離軸定理MVTが1つの軸に沿ってのみ

指定された軸の方向に1つのオブジェクトをプッシュするオフセットを見つけるにはどうすればよいですか。

enter image description here

答えて

1

あなたが既に知っている必要があります。この最初の部分。それぞれの形状を各軸に投影するとき、形Aの最小値と最大値があるはずです。AMINAMAXとし、形B(BMIN/BMAX)と同じとしましょう。

オブジェクトが明らか軸に衝突している場合は、その投影がAMIN < BMIN < AMAX < BMAXまたはBMIN < AMIN < BMAX < AMAXのいずれかを意味し、オーバーラップします。最初のものを想定しましょう。

AMAX-BMINの値は、いずれかの形状を接触させるために必要な距離で、テストされている軸は方向を示します。

通常、すべての軸を反復するので、最小値とその対応する軸を追跡し、それは形状をアン衝突させるのに必要なベクトルになります。

あなたは、特定の方向にそれらを移動したい場合は、その特定の軸に対応する値を保存するだけで、それがあなたの変位になります(通常、「最小変位ベクトル」と呼ばれます)。ベクトル(それを分離するために1つの図形の位置に追加されます)。

「最小変位ベクトルが座っている」グーグルと、最初のいくつかのリンク、特にこれをチェックアウトすることを強くお勧めします。http://www.dyn4j.org/2010/01/sat/。ちょっと濃密ですが、SATについて私が知っていることすべてを学んだところです。

EDIT ...そして、私は作品が欠けていました。これはちょっとラフですが、別の軸(ボトムボックスの長辺の法線)から得られた変位ベクトルに基づいて、ある軸(例では垂直)に沿って形状を移動したい場合は、変位ベクトルを目的の(正規化された)軸にプロットして(内積を使用して)適切な距離を取得し、目的の軸と結合します。

関連する問題