日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

判断点P是否在三角形ABC内

發布時間:2024/3/13 编程问答 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 判断点P是否在三角形ABC内 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

已知:三角形ABC,點P

問題:點P是否在三角形內

1.面積法

????如果三角形PAB、PAC和PBC的面積之和與三角形ABC的面積相等,則可判定點P在三角形ABC內(包括在三條邊上)。

已知三角形頂點A、B、C)的坐標分別為(Ax, Ay)、(Bx, By)、(Cx, Cy),即可計算其面積:
?????S = |(Ax * By + Bx * Cy + Cx * Zy - Ay * Bx - By * Cx - Cy * Ax) / 2|

2.線段法

????如果線段PA與線段BC、或者線段PB與線段AC、或者線段PC與線段AB有交點,則可判定點P在三角形之外。

????如果點P到AB的距離比C到AB的距離短,并且點P到AC的距離比B到AC的距離短,并且點P到BC的距離比A到BC的距離短,則可以判定點P在三角形內。

3.向量法

????設三邊方程BC:fa(x,y)=0,AC:fb(x,y)=0,AB:fc(x,y)=0
以BC為例,在三角形內的點必須與點A在BC的同側,對于點P(x,y)在三角形內首先要滿足fa(x,y)*fa(Ax, Ay)>0,其他邊也同理,所以只要比較fa(x,y)*fa(Ax, Ay)、fb(x,y)*fb(Bx, By)、fc(x,y)*fc(Cx, Cy)
這三個數的正負性
1)三個數都是正數:D在三角形內
2)至少有一個負數:D在三角形外
3)有且只有一個0,另兩個為正數:在三角形邊上
4)有且只有一個0,一個正數一個負數:在三角形邊的延長線上,也算在三角形外,因為滿足2
5)有二個0:在三角形的頂點上
6)不可能出現3個0,或3個負數,或一個0兩個負數的情況

4.同向法

????假設點P位于三角形內,沿著ABCA的方向在三條邊上行走時,點P始終位于邊ABBCCA的右側。當選定線段AB時,點C位于AB的右側,同理選定BC時,點A位于BC的右側,最后選定CA時,點B位于CA的右側,所以當選擇某一條邊時,我們只需驗證點P與該邊所對的點在同一側即可。判斷兩個點在某條線段的同一側可以通過叉積來實現,連接PA,將PAAB做叉積,再將CAAB做叉積,如果兩個叉積的結果方向一致,那么兩個點在同一側。

總結

以上是生活随笔為你收集整理的判断点P是否在三角形ABC内的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。