分離軸の定理: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)
これは間違いないと思いますか?アルゴリズムがどのように動作するはずですか?
注:すべての凸多角形のコードを作成しようとしているので、この矩形の負の単位ベクトルは無視できません。
注:Wikipediaの記事は非常に不正確で、定理の記述は偽です。 R^2ではC1 = {(x、y)、y = 0}、C2 = {(x、y)、x> 0、y> = 1/x}とする。 C1とC2を分ける線はなく、それらは互いに素であり、両方とも凸である。真理である定理(文献ではハーン・バナッハ定理と呼ばれている)については、C1とC2のどちらかが開いていなければならず、C1とC2は閉じていなければならず、少なくとも1つはコンパクトでなければならない。 –