一點 d 是否在三角形 abc 內,相對於ab邊來說,d點在三角形內一定要和c點在 ab 邊同側,對於a,b 點也用相同的方法去判斷d點是否於其在相應邊的同側,這種方法還可以用來判斷多點是不是可以構成乙個凸多邊形。
下邊以 ab 為邊例,驗證 c,d兩點是否在ab邊同側, ab 的在二維座標中的線性方程可以表示為
ay = bx +c1,
過 c,d兩點分別作平行於ab的平行線,其方程分別表示為
ay = bx + c2,ay = bx + c3,
當 a != 0 時,b/a 為三線斜率,c1/a,c2/a,c3/a分別的三線跟y軸的交點
當 a == 0 時 ,-c1/b,-c2/b,-c3/b分別的三線跟x軸的交點
上面兩種情況都可以歸納一種情況,要使c,d在ab邊同側,c1要麼同時大於等於c2,c3, c1要麼同時小於等於c2,c3,當然可以進一步比較c2,c3大小關系統,來確定 d 點是否在c點內側。
最後就是用簡單的代數知識,求出 a,b,c1,c2,c3,具體請見下面**
#include #include struct point;
int point_in_same_side(struct point *pa, struct point *pb, struct point *pc, struct point *pd)
if(c1 >= c2 && c1 >= c3)
return 0;
}int point_in_********(struct point *p)
int main(int argc, char **argv),
, ,
, };
printf("%d \n", point_in_********(p));
return 0;
}
判斷點是否在三角形內
概述 給定三角形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 ...