計算幾何 點定位(線段,三角形,多邊形)

2021-07-27 11:05:48 字數 965 閱讀 3760

1.滿足向量 ac×ab == 0,使c點滿足在ab的直線上

2.滿足c在ab構成的矩形內,使c點排除在ab的延長線和反向延長線上

注意:考慮豎直和水平的情況,橫座標和縱座標都要判斷。

bool dot_line(point a,point b,point c)

點在平面內與三角形三個點構成的三個三角形的面積和 與 原三角形的面積比較

如果相等,即可判斷在三角形內

struct ********

;bool dot_********(point x,******** f)

1. 掃瞄線法

顧名思義,從要判斷的點構造任意射線,計算射線與多邊形的交點個數,一般情況下,個數為奇數則在多邊形裡面,反之在外面。

既然寫一般情況,那麼就有特殊情況。

除了要注意,在用多邊形的邊和射線相交來算交點,如果交於頂點處,射線與兩個邊相交,但只能算乙個點

也有可能射線與邊重合,還有可能點在多邊形邊上,

另外最麻煩的是如下圖情況,只能算乙個點,然而書上的解決方法(如果頂點是所屬邊上縱座標上較大的頂點)我不大認同,我想下圖反一下不就行不通了嗎,可能是我沒懂。。。

2. 叉乘判別法(只適用凸多邊形)

原理比較簡單,對於乙個處於凸多邊形內部的點,與所有頂點連線,生成以此點開始的向量,根據頂點的順序運算相鄰向量的叉積,叉積的符號一直不變。

特殊情況:叉積為0,其實繼續判斷即可。

3. 角度和的判斷法

原理更簡單,在多邊形內部,點和多邊形頂點連線組成的所有三角形角度(以所求點為頂點)和為360。

三角形 多邊形面積求法

三點順序 給三個點a,b,c的座標,判斷能否組成乙個三角形 若能,判斷a,b,c是順時針給出的還是逆時針給出的?利用向量叉積判斷是逆時針還是順時針。三角形兩邊的向量分別是 ab x2 x1,y2 y1 ac x3 x1,y3 y1 則ab ac x2 x1 y3 y1 y2 y1 x3 x1 利用右...

凸多邊形區域劃分為三角形問題

rt 乙個凸多邊形區域,有n條邊,將其劃分為三角形區域,問共有多少種分割方法。1.我們從最簡單情況開始 n 3,f 3 1 2.當n 4,f 4 2 3.n邊時 我們從節點1開始考慮,要想分割成三角形區域,1不能和與它相鄰的點連線,所以1可以連線3,4,n 1 假設1連線i,則分割成的兩個區域分別為...

ACM計算幾何 三角形問題

include struct point struct line double distance point p1,point p2 point intersection line u,line v 外心 point circumcenter point a,point b,point c 內心 p...