欧美成人高清,97精品国产福利一区二区三区,аⅴ资源天堂资源库在线,色999日韩自偷自拍美女

碰撞檢測算法有哪些(物理碰撞算法)

碰撞檢測算法有哪些(物理碰撞算法)

碰撞檢測算法之分離軸定理

碰撞檢測算法之包圍形法

孩子學習對于所有的家長來,最關心就是孩子的學習,對吧?如何幫孩子提升學習成績呢?影響孩子學習成績的因素有哪些?左養右學教育賴頌強團隊13年的家庭教育服務經驗總結,影響孩子學習的主要因素有22條之多,家長你了解幾條呢?

如上文所述,基于包圍形的方法是一種粗略的碰撞檢測方法,基于外接圓形的方法運算速度很快,但精度很差;基于軸對齊包圍矩形(AABB)的方法適合本身就是矩形的物體,其運算速度非常快,但檢測精度還是不夠。

碰撞檢測算法之分離軸定理

1、OBB

OBB 就是找一個最小的包圍物體的矩形,這在自動駕駛系統中也是最常用的,感知模塊給出物體的輪廓通常就是此形狀。另外,為了準確描述物體輪廓,感知模塊在 bounding box 的基礎上,通常還會給出 polygon(多邊形)的形式,如下圖所示。

碰撞檢測算法之分離軸定理

2、向量的點乘

向量點乘、叉乘的定義及幾何意義

向量法判斷點與線段的關系(一)

向量法判斷點與線段的關系(二)

在介紹分離軸定理之前,還需要先理解向量點乘的數學定義和幾何意義,如下圖所示,若 a 向量為單位向量,則向量 a 和向量 b 的點乘可以理解為 b 向量投影到 a 向量上的長度。

碰撞檢測算法之分離軸定理

有了上述背景知識,接下來我們介紹一種適用于 bounding box 和 polygon 的精細碰撞檢測算法:分離軸定理(Separating Axis Theorem,SAT)

3、分離軸定理

分離軸定理的理論依據為超平面分離定理,即 令 A 和 B 是兩個不相交的非空凸集,那么存在一個非零向量 v 和 實數 c,使得 <x, v> ≤ c 且 <y, v> ≥ c。其中,x 屬于 A,y 屬于 B。

簡單來說,就是對于兩個凸多邊形,若存在一條直線將兩者分開,則這兩個多邊形不相交。

碰撞檢測算法之分離軸定理

上圖中的黑線為分離線(Seperating line),與之垂直的綠線為分離軸(Separating axis),圖中虛線表示的是多邊形在分離軸上的投影。

實際應用中,遍歷所有角度的分離軸是不現實的,受益于多邊形的性質,對于兩個都是多邊形的物體,只需要依次在每條邊的垂直線做投影即可,如下圖所示。

碰撞檢測算法之分離軸定理

對于兩個都是矩形的物體,則更簡單,只需要做四次投影。

碰撞檢測算法之分離軸定理

以下圖中的兩個多邊形 A 和 B 為例,分離軸定理的具體步驟為:

  1. 首先根據邊1的兩個頂點位置坐標,計算出邊1的向量,設為(x,y);
  2. 進而求出邊1的法向量,作為分離軸,為(y, -x)或(-y,x)。若需要求兩個多邊形的最小分離距離,這里的法向量還需要化為單位向量;若只需判斷兩個多邊形是否相交,則不需要化為單位向量;
  3. 依次將多邊形 A 和 B 的所有頂點與原點組成的向量投影到這個分離軸上,并記錄兩個多邊形頂點投影到分離軸上的最小值和最大值(Pmin,Pmax),形成一個投影線段;
  4. 判斷這兩個投影線段是否發生重疊,若不重疊,則有 (PAmax < PBmin)||(PAmin > PBmax);
  5. 若兩個投影線段不重疊,則代表存在這樣一條直線將兩個多邊形分開,兩個多邊形不相交,可以直接退出循環;
  6. 若兩個投影線段重疊,則回到步驟1,繼續以邊2的法向量作為分離軸,進行投影計算;
  7. 當兩個多邊形的所有邊都檢查完之后,找不到這樣一條分離的直線,則意味著兩個多邊形相交。
碰撞檢測算法之分離軸定理

注意:分離軸定理是一種適用于凸多邊形的碰撞檢測算法,對于凹多邊形則不適用,如下圖所示,兩個多邊形沒有碰撞,但找不到這樣一條直線,能將兩者分開。所以如果是凹多邊形的話,需要先將其轉換成多個凸多邊形。

碰撞檢測算法之分離軸定理

綜上,分離軸定理是一種適用于 bounding box 和 polygon 的精細碰撞檢測算法,其優點是算法原理簡單,可準確判斷兩個多邊形是否相交;缺點在于當多邊形的邊數較多時,該算法的效率較低(當兩個多邊形相交時,需要遍歷完所有邊進行判斷)。

在實際應用中,為了提高效率,通常先使用 基于軸對齊包圍矩形(AABB)的方法進行粗略的碰撞檢測,然后再使用 分離軸定理(SAT)做精細碰撞檢測

版權聲明:本文內容由互聯網用戶自發貢獻,該文觀點僅代表作者本人。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如發現本站有涉嫌抄襲侵權/違法違規的內容, 請發送郵件至89291810@qq.com舉報,一經查實,本站將立刻刪除。
(0)
上一篇 2022年6月14日 下午10:30
下一篇 2022年6月14日 下午11:38

相關推薦

主站蜘蛛池模板: 永兴县| 乌兰浩特市| 永春县| 改则县| 漠河县| 盐亭县| 界首市| 奉节县| 灵丘县| 安泽县| 泽普县| 出国| 耒阳市| 九龙坡区| 石柱| 浦江县| 京山县| 深泽县| 额济纳旗| 方城县| 常州市| 定南县| 陵水| 阆中市| 西丰县| 基隆市| 灌云县| 盈江县| 哈尔滨市| 神农架林区| 咸丰县| 天津市| 临城县| 丰都县| 麻江县| 玉溪市| 柳江县| 株洲县| 大丰市| 洪江市| 镇原县|