目錄(?)
[-]
定義性質
應用判斷點與直線的相對位置
判斷線段與直線的位置關係
判斷直線與直線的位置關係
判斷線段與線段的位置關係
判斷多邊形是否是凸包
判斷點是否在凸多邊形內 若
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 因為叉積經常...