程式設計之美4 4 點在三角形內

2021-06-09 11:59:23 字數 698 閱讀 6180

第一種方法:面積相等法

如果點在三角形內部,則如果將三角形的三個頂點與這個點相連所得的三個小三角形的面積之和與原三角形的面積相等

s(a,b,d) + s(a,c,d) + s(b,c,d) = s(a,b,c)

第二種方法:向量叉積法

判斷點p3是否在向向p1p2的左邊,只需要通過兩個向量p1p2、p1p3做叉積就可以判斷

p1p2 x p1p3 > 0 則 p3在p1p2左邊

p1p2 x p1p3 = 0 則 p3在p1p2上

p1p2 x p1p3 < 0 則 p3在p1p2右邊

注:點(1,3)到(5,1)的向量可以用(4,-2)來表示

v1(x1, y1) x v2(x2, y2) = x1y2 – y1x2

struct point

;double distance(point a,point b)

double area(point a, point b, point c)

double crossproduct(point a, point b, point c)

bool isin********(point a,point b,point c, point d)

bool isin********2(point a, point b, point c, point d)

程式設計之美4 4點是否在三角形內擴充套件問題

不包括點在邊線上的情況,判斷點是否在三角形內,仍然用面積法進行判斷 邊線上的情形用向量平行的判定條件設向量ab x1,y1 向量ad x2,y2 若x1y2 x2y1 0則這兩向量平行,表面d要麼在邊線上要麼在三角形外 均屬於不在三角形內的情形 其餘的判定為點d與三邊圍成的面積之和是否等於三角形ab...

判斷點在三角形內

二維向量叉乘公式a x1,y1 b x2,y2 則a b x1y2 x2y1 設有向線段ab,兩端點a xa,ya b xb,yb 另一點c xc,yc float f xb xa yc ya xc xa yb ya if f 0 點c位於有向線段ab的左側 else if f 0 點c位於有向線段...

如何判斷一點在三角形內

假定在右手座標系中的三角形3點座標為a,b,c,判斷p是否在abc之內 主要來自 3d引擎研發 38224573 的各位朋友的討論 我僅僅算做個總結吧,特別感謝各位朋友的熱情支援。方法1 三個perplane的方法 設ab,bc,ac邊上的垂直平面為perplane 3 垂直朝向內側的法向為n 3 ...