這就是我目前正在做的:分離軸定理和Python
創建4個垂直於2個矩形的4個邊的軸。由於它們是矩形,我不需要爲每條邊生成一個軸(正常)。
我然後循環我的4個軸。
所以對於每個軸: 我得到矩形的每個角落到軸上的投影。 有2個列表(數組)包含這些投影。每個矩形一個。 然後我得到每個投影和軸的點積。這會返回一個標量值 ,可用於確定最小值和最大值。
現在2個列表包含標量而不是向量。我對列表進行排序,以便輕鬆選擇最小值和最大值。如果框B的最小值> =框A的最大值或框B的最大值B < =框A的最小值,那麼在該軸上不存在碰撞並且沒有碰撞。
此時函數完成並循環中斷。
如果這些條件都從未見過的所有的軸,然後我們有一個碰撞
我希望這是做它的正確途徑。
的Python代碼本身可以在這裏http://pastebin.com/vNFP3mAb
我有問題是,上面的代碼不起作用。即使在沒有碰撞的情況下,它也會始終檢測到碰撞。我輸入的內容正是代碼的功能。如果我錯過了任何步驟,或者只是不瞭解SAT如何工作,請告訴我。
這是什麼問題? – 2011-05-16 06:02:16
對於更一般的凸多邊形,我們會考慮與兩個多邊形的邊平行*的潛在分離軸,但由於您具體處理矩形,所以在這種情況下要求垂直於(或正常)軸以邊緣。 – hardmath 2011-05-16 09:26:49
我遇到的問題是上面的代碼不起作用。即使在沒有碰撞的情況下,它也會始終檢測到碰撞。對不起,不清楚。我將編輯我寫的內容,以便更清楚。 – 2011-05-16 17:15:07