ACM計算幾何 叉積應用

2021-08-15 04:14:07 字數 2229 閱讀 2268

目錄(?)

[-]

定義性質

應用判斷點與直線的相對位置

判斷線段與直線的位置關係

判斷直線與直線的位置關係

判斷線段與線段的位置關係

判斷多邊形是否是凸包

判斷點是否在凸多邊形內 若

oa→=

(x1,

y1)o

b→=(

x2,y

2)定義叉積:oa

如圖是一種簡單情況,叉積表示的面積即最大的矩形面積減去p1

p2t3

所構成的矩形面積。又t4

=s4,即要證

2(t1+t2

+t3)

=s1+

t1+s

2+t2

又已知s1

+p1=

t1+t

3+p2

,and

s2+p

2=t2

+t3+

p1兩式左右相加即證。 

另外的情況也可利用面積的加減證明。

已知直線上的兩點s、e,可以求出ax+by+c=0的引數 

a = s.y-e.y; 

b = e.x-s.x; 

c = s×e;

在直線上取兩點p,q,構成直線的方向向量pq

→。需要判斷的點a構成ap

→、aq

→兩個向量。則規定ap

→×aq

→的符號反映了點與直線的相對位置。當值為0時a在直線pq上。

poj 2318

2398

在直線外的兩個點分別作應用1中的叉積操作,若得到的結果同號則在同側,異號則在異側。

poj 3304:原題等價為是否存在一條直線(投影路徑)與所有的線段相交 

poj 1039:求從管子的一端到最遠到達**。暴力列舉所有可能的光線方向,與管子端點相交、與管重合均可穿過。需注意光線雖與管子不相交但超出管子的情況。

有以下兩種方法。

容易理解的是利用性質2,得到直線方程a1

x+b1

y+c1

=0與a

2x+b

2y+c

2=0。當

a1b2

=a2b

1時,直線平行(特判重合的情況);否則兩直線相交,直接解得x=

−c1b

2+c2

b1a1

b2−a

2b1分別在直線上取兩點,類似於應用2,將其中一條作為基準直線,得到兩個叉積結果。若都為0,則兩直線重合。若兩者不為0且值相等,則兩直線平行。否則相交。 

用叉積,而不是求出斜率,這樣能避免斜率不存在的情況。

poj 1269:過濾掉前兩種情況後,求直線的交點座標時再列出直線方程(ax+by+c=0)求解。

線段1、2所在的直線為3、4,則當1、4與2、3均相交時可得兩線段相交,否則不相交。也可以根據題目條件簡化其一,視條件而定。 注意

:要做四

組初始判

斷避免兩

線段共線

但不相交

的誤判。

poj 1556:列舉任意兩個端點是否存在直線通道時,需判斷該線段與其餘的豎直線段是否相交。 

poj 2653:該break時就break,否則t無休…… 

poj 3449:差不多可以當作模擬題來做。 

cf 589d:可以抽象成線段來做。

順次給出多邊形的點

判斷其是否構成凸包。由於不知道是順時針還是逆時針給出的,所以先記錄一組(p

1−p0

)×(p

2−p1

)的符號作為基準。之後每組(p

i+1−

pi)×

(pn+

2−pn

+1)的符號都與之比對,若異號,則不為凸包。 

注意:若題意允許三點共線,則先找到第乙個非0的符號,再進行判斷。並且允許有0存在。

先特判點o是否在邊上(可利用叉積為零)。

將點o作為頂點,順次連線多邊形的端點,得到n個角度。用叉積順次得到各個角度的符號,若全部同號則點在凸多邊形內。否則不在凸多邊形內。

poj 1584:先判斷給出的點是否構成凸包,再判斷圓心是否在凸包內,再看是否能容納下這個圓。

caioj 計算幾何 面積 計算幾何 叉積

題意 在乙個平面座標系上隨意畫一條有n個點的封閉折線 按畫線的順序給出點的座標 保證封閉折線的任意兩條邊都不相交。最後要計算這條路線包圍的面積。用叉積有關知識解決。重要結論 abs 三點的叉積 2為這三點圍成的三角形的面積。簡要證明 上圖中,黑色的三角形面積為矩形 三個三角形,設數,計算,合併同類項...

計算幾何 點積與叉積

a和b為兩個向量,a x1,y1 b x2,y2 a b的幾何意義為a在b上的投影長度乘以b的模長 a b a b cos 其中 為a,b之間的夾角 a b x1 x2 y1 y2 點積的應用 1 判斷兩個向量是否垂直 a b a b 0 2 求兩個向量的夾角,點積 0為鈍角,點積 0為銳角 向量積...

計算幾何之叉積(外積)得應用

這幾天學了一下計算幾何,很多內容以前都接觸過,但是這麼多得定理和意義卻從來沒想到過,也是吃驚得學習了一場 叉積 外積 是乙個具有大小和方向得量,方向和點a,b所在得平面垂直,滿足右手螺旋定則 a b得叉積是 double cross point p0,point p1,point p2 因為叉積經常...