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