2010-12-08 5 views
1

分離軸の定理:http://en.wikipedia.org/wiki/Separating_axis_theoremを使用して、異なる軸に長方形を投影する際に、ローカル座標とグローバル座標の変換に問題があります。最後に、別のオブジェクトとの衝突をチェックしたいと思います。分離軸定理とグローバル/ローカル座標の理解

のは、私がのグローバル座標系での頂点を持つ長方形としましょう:ローカル座標は、このようになります

(10,20),(10,10),(20,10),(20,20) 

(-5,5),(-5,-5),(5,-5),(5,5) 

これは4面の法線は以下になるだろう:(1用を各軸)

(1,0),(0,1),(-1,0),(0,-1) 

この場合の最小/最大ドット積はです。

(1,0) . (-5,5) = -5 
(1,0) . (-5,-5) = -5 
(1,0) . (5,-5) = 5 
(1,0) . (5,5) = 5 
したがって、この法線の最小/最大の対は(-5,5)であり、対称性のためにこの他のすべての対がある。

問題は、座標をグローバル座標に戻すときに問題になります。私の理解から、指定された軸をグローバルな位置に投影することによって、最小/最大のペアをシフトする必要があります。

正の単位ベクトルを使用する場合は、正常に動作:

unit center of rect 
(1,0) . (15, 15)  = 15 

これは、調整された最小/最大値は15-5,15 + 5 = 10,20正しい

であろうことを意味しますしかし、負の単位ベクトルに対してこれを行うと、次のようになります。

(-1,0) . (15, 15)  = -15, meaning that the min,max values are now (-20,-10) 

これは間違いないと思いますか?アルゴリズムがどのように動作するはずですか?

注:すべての凸多角形のコードを作成しようとしているので、この矩形の負の単位ベクトルは無視できません。

+0

注:Wikipediaの記事は非常に不正確で、定理の記述は偽です。 R^2ではC1 = {(x、y)、y = 0}、C2 = {(x、y)、x> 0、y> = 1/x}とする。 C1とC2を分ける線はなく、それらは互いに素であり、両方とも凸である。真理である定理(文献ではハーン・バナッハ定理と呼ばれている)については、C1とC2のどちらかが開いていなければならず、C1とC2は閉じていなければならず、少なくとも1つはコンパクトでなければならない。 –

答えて

0

あなたは単に座標枠をまっすぐにしないでください。 (-20, -10)の結果は完全に一貫しており、(その軸に沿って)分離のためにポリゴンをテストすると、正しい答えが得られます。

関連する問題