引用:http://vision.twbbs.org/~jen/?p=78

SAT為一種可快速偵測不規則凸多邊是否碰撞的演算法,他的概念如下:給予兩個凸多邊形物體,如果我們能找到一個軸,使得兩個在物體在該軸上的投影互不重疊,則這兩個物體之間沒有碰撞發生,該軸並稱為其Separating Axis。 (紅色軸線)

Photo

Photo

對於2D的例子來說,可能存在的Separating Axis為垂直於該多邊形各個邊的軸(紅色軸線)。

Photo

因此,若我們要檢查兩多邊形是否碰撞,就去檢查兩多邊形在每個所有可能的軸上的投影是否重疊。

Photo

如果我們找到一個軸,使得兩多邊形在該軸上的投影互不重疊,則我們就可以知道這兩個多邊沒有碰撞發生。

Photo

如果是3D case的話,則需要考慮的可能的Saparating Axis包括各個面的normal,還有每個面中,兩兩edge之外積所形成的向量。

Metanet Software有一個很棒的互動式SAT教學
David Eberly也有發表一篇比較偏講解SAT理論方面的文章
Intersection of Convex Objects: The Method of Separating Axes

posted on 2006-11-17 11:30  FireYang  阅读(1634)  评论(1编辑  收藏  举报