內心裡的一把火(判斷平面內的點是否在三角形內)

2021-09-02 22:15:35 字數 905 閱讀 5205

【分析】

給定平面上一點p(x0,y0),判斷該點是否在三角形abc中,三角形頂點座標分別為a(xa,xb),b(xb,yb),c(xc,yc)。可以使用面積法來判斷,方法如下:其中s(a,b,c)表示三角形abc的面積。

1、 若abs( s(a,b,c) ) = abs( s(p,b,c) ) + abs( s(a,p,c) ) + abs( s(a,b,p) ) ,則p在三角形abc的內部或邊上;如果還有abs( s(p,b,c) )、abs( s(a,p,c) ) 和abs( s(a,b,p) )全都大於0,則說明p在三角形abc的內部,否則p在三角形abc的邊上,具體為:s(p,b,c)為0,則說明p在bc邊上,s(a,p,c)為0,則說明p在ac邊上,s(a,b,p)為0,則說明p在ab邊上; 

2、 若abs( s(a,b,c) ) < abs( s(p,b,c) ) + abs( s(a,p,c) ) + abs( s(a,b,p) ) ,則p在三角形abc的外部; 

3、 對abs( s(a,b,c) ) > abs( s(p,b,c) ) + abs( s(a,p,c) ) + abs( s(a,b,p) ) 情況在理論上是不存在的

#include #include #include #include #include #include #include #include #include using namespace std;

int main()

else

}return 0;

}

就是面積選取哪兩個向量得有規定

float get********squar(const point_float pt0, const point_float pt1, const point_float pt2)

判斷一點是否在三角形內

一點 d 是否在三角形 abc 內,相對於ab邊來說,d點在三角形內一定要和c點在 ab 邊同側,對於a,b 點也用相同的方法去判斷d點是否於其在相應邊的同側,這種方法還可以用來判斷多點是不是可以構成乙個凸多邊形。下邊以 ab 為邊例,驗證 c,d兩點是否在ab邊同側,ab 的在二維座標中的線性方程...

判斷點是否在三角形內

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

判斷點是否在三角形內

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