tft每日頭條

 > 圖文

 > 怎麼判斷三角形是否成立

怎麼判斷三角形是否成立

圖文 更新时间:2024-08-12 15:23:12

怎麼判斷三角形是否成立(判斷一點是否在三角形内部)1

接上文:碰撞檢測算法之GJK算法

GJK算法中,需要判斷三角形(單純形)是否包含原點,來決定是否退出疊代循環。

同時,判斷一點是否在三角形内部的問題 也是一些互聯網公司對算法工程師面試中的一道算法題。

如下圖所示,已知點 A、B、C 三點 和 點P 的坐标,判斷點P是否在由A、B、C 三點 組成的三角形内。

怎麼判斷三角形是否成立(判斷一點是否在三角形内部)2

方法一:三角形面積法

如下圖所示,當點P在三角形内部時,三角形面積:

△PAB △PBC △PCA = △ABC

怎麼判斷三角形是否成立(判斷一點是否在三角形内部)3

當點P在三角形外部時,則三角形面積:

△PAB △PBC △PCA > △ABC

怎麼判斷三角形是否成立(判斷一點是否在三角形内部)4

已知三角形三點坐标,可先求得三條邊 a、b、c 的長度,再根據海倫公式,即可求得三角形面積。

怎麼判斷三角形是否成立(判斷一點是否在三角形内部)5

方法二:向量法

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

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

先來回顧一下向量叉乘的定義:

怎麼判斷三角形是否成立(判斷一點是否在三角形内部)6

向量的叉乘可以用來判斷點P是在向量AB的左側還是右側

通過觀察,可以發現:

  • 若點P在三角形内部時,沿逆時針方向,則點P一直在向量AB、BC、CA的左側;
  • 若點P在三角形外部時,則點P必然在AB、BC、CA某一向量的右側。

怎麼判斷三角形是否成立(判斷一點是否在三角形内部)7

若是三角形三點是順時針方向,則若點P在三角形内部時,點P一直在向量AB、BC、CA的右側。

對于點P在三角形的某一邊上或與某一頂點重合的特殊情況,上述兩種方法同樣适用,需要注意一下臨界條件的設置。

對于三角形,可以采用上面兩種方法,對于任意多邊形,則可根據射線法來判斷某點是否在多邊形的内部,該問題也稱為 PIP(Point in Polygon)問題。

怎麼判斷三角形是否成立(判斷一點是否在三角形内部)8

詳見:判斷一點是否在多邊形内部:射線法

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关圖文资讯推荐

热门圖文资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved