叉乘法判斷點是否在三角形內

2021-04-16 01:31:52 字數 686 閱讀 5150

叉乘法

沿著三角形的邊按順時針方向走,判斷該點是否在每條邊的右邊(這可以通過叉乘判斷),如果該點在每條邊的右邊,則在三角形內,否則在三角形外。這個演算法只用到了三次叉乘,沒有除法運算和三角函式、開根號等運算,所以效率很高,而且精度很高(沒有浮點誤差)。

設三角形三點a(x1,y1)b(x2,y2)c(x3,y3),已知點m(x,y),

1,先求出三個向量ma,mb,mc. 

2,計算ma x mb,mb x mc,mc x ma (x表叉乘)

3,如果此三組的向量叉乘的結果都是同號的(或都正,或都負),即方向相同的,則說明點m在三角形每條邊的同側,即內部。否則必在外部!

具體示例:

a(0,3) b(0,0) c(3,0)          

m(1,1)

ma (1,-2)

mb (1,1)

mc (-2,1) 

ma x mb = 3

mb x mc = 3

mc x ma = 3

n(3,3)

na (3,0)

nb (3,3)

nc (0,3) 

na x nb = 9

nb x nc = 9

nc x na = -9

根據以上規則可判斷m點在內 n點在外

判斷點是否在三角形內

概述 給定三角形abc和一點p x,y,z 判斷點p是否在abc內。這是遊戲設計中乙個常見的問題。需要注意的是,這裡假定點和三角形位於同乙個平面內。本文介紹三種不同的方法,由淺入深 一 內角和法 連線點p和三角形的三個頂點得到三條線段pa,pb和pc,求出這三條線段與三角形各邊的夾角,如果所有夾角之...

判斷點是否在三角形內

給定三角形abc和一點p x,y,z 判斷點p是否在abc內。這是遊戲設計中乙個常見的問題。需要注意的是,這裡假定點和三角形位於同乙個平面內。本文介紹三種不同的方法,由淺入深 連線點p和三角形的三個頂點得到三條線段pa,pb和pc,求出這三條線段與三角形各邊的夾角,如果所有夾角之和為180度,那麼點...

判斷點是否在三角形內

問題 在二維座標系中,已知三角形頂點的座標,那麼對於座標系中的任意一點p,判斷是否在三角形內?double area point a,point b,point c bool is point a,point b,point c,point d 設s area abc s1 area abd s2 ...