ZROI 19 08 02 計算幾何

2022-05-19 05:18:04 字數 2360 閱讀 2016

1.向量基礎知識

線段樹維護矩乘就好了,矩陣裡需要帶個常數字置。

不會積分,告辭。

2.簡單題

投影就是點積,直接積就行了,必修四怎麼學的。

跟上面的一模一樣。

叉積判出不共線的兩種,剩下的直接比較橫座標就可以了。

平行向量叉積為\(0\),垂直向量點積為\(0\)。

跨立實驗:對於一條線段,看另一條線段的兩個點是否在它兩側,兩邊都是的話就對。

在一條直線上的情況會鍋。

可以先判斷外接矩形是否相交。(必要條件,不充分)

發現答案是\(a\cdot k_a\)或者\(b\cdot k_b\)的形式,列兩個方程解就行了。

特判共線情況。

發現一定取在某條線段的端點,轉化為求點到線段距離。

計算\(a\)在\(p_1p_2\)上投影佔\(p_1p_2\)比例,\(\leq 0\)離\(p_1\)最近,\(\geq 1\)離\(p_2\)最近,否則離投影點最近。

一路叉積過去就好。

一路叉積過去,兩兩邊之間的叉積都要\(>0\)。

在多邊形上很好判。

射線法,交奇數次在內部,偶數次在外部,但是會出現一些問題。

一種簡單辦法是把射線斜率設為無理數。

否則就要特判。硬點射線斜率是\(0\),且水平向右。

依次考慮每條邊,平行的可以直接無視。

本質要解決的是穿過頂點的問題。

如果\(a\)在\(r\)上,且\(ab\)向上,或\(b\)在\(r\)上,且\(ab\)向下則算相交。

爛大街經典問題。

旋轉卡殼。從橫座標最小和最大的點開始,每次前移一條邊(類似雙指標)。

掃一遍凸多邊形,把符合要求的頂點和交點都拿出來求面積。

-\(n\)個點求最近點對。

分治,對於跨過中點的點對,只要找\(|x_i-x_j|\)不超過\(d\)的點即可。按\(y\)排序,每個點有貢獻的點是常數個。

求出弦心距,即可解出三角形,用夾角計算即可。

可以形成乙個三邊長為\(r_1,r_2,dis(o_1,o_2)\)的三角形,餘弦定理解出夾角即可。

解三角形求夾角。

判一下\(0,1\)條公切線的情況。否則一定有兩條外公切線。

由於公切線垂直於兩條半徑,可以平移一下,構造乙個\(r_1-r_2,d,len\)的直角三角形,解三角形即可。

內公切線形成了兩個相似三角形。

可以把多邊形切成若干個有向三角形,轉化成圓和三角形交的面積。

不妨把三角剖分的原點設為圓心。

如果整個三角形都在圓內,返回三角形面積。

如果整個\(ab\)都在圓外(垂線長\(\geq r\)),返回扇形面積。

否則按照\(ab\)與圓的交點切開,遞迴處理。發現最多遞迴常數次。

經典問題,隨機增量法。

3.較難題

對每個圓盤求出後面的圓盤覆蓋它的角度區間(求兩個交點),並一下即可求出可見弧長。

斜率優化的經典形式。啟發式合併或者dsu on tree都可以。

每個向量等價於乙個射線。相當於要找三個向量,使得兩兩之間極角差$ <\pi$。

每個向量取反之後插進去,發現答案一定首尾之間\(<\pi\),並且答案形如「正反正」的三個向量。

特判四個互相垂直的情況。

結論:兩個三角形不相交等價於它們有兩條內公切線。

可以列舉兩個點組成的公切線,求出兩邊點對數。

結論:過原點的圓反演後變成一條不過原點的直線。

在圓內部等價於反演後的點在反演後的直線特定的一側。

動態半平面交,分治維護凸包即可。

結論:不過原點的圓反演後還是不過原點的圓,且相交/相切等位置關係反演後仍然成立(因為同乙個點反演後還是同乙個點)。

圓反演後求公切線即可,需要一些特判。

多邊形不相交是很強的限制。

硬點多邊形的邊是逆時針給出的。

對每個點找到豎直往上走最近的邊,如果是從左往右則不在,否則在對應多邊形內部。

如果可以離線,按橫座標掃瞄線一下,維護線段之間的上下位置關係。由於線段不相交,上下關係只會在插入刪除時才會改變。用set維護就行了。

一大堆特判。

考慮乙個二維平面,橫軸時間,縱軸dfs序。

樹剖以後變成\(m\log n\)條線段,求最早相交時間。

按\(x\)掃瞄線,set維護\(y\)的大小關係。

如果兩條線段有交,它們一定在某個時刻在set中相鄰,否則任意兩條線段之間關係不會改變。

插入刪除的時候check一下前驅後繼即可。

設\(f(x)\)表示極角為\(x\)的射線左側-右側的面積。有\(f(0)=-f(\pi)\),所以必然存在零點,二分這個點即可。

考慮對叉積求字首和,先二分出射線落在哪兩條邊上,然後內部的變化是線性的,可以直接算。

4.微積分在計算幾何中的應用

這一段瘋狂掉線……我太菜了。

ZROI 19 08 02 雜題選講

顯然乙個絕對值最多選一次。這個性質非常強。如果所有都是偶數,可以直接除以 2 否則 1 或 1 必須選,暴力列舉選哪個然後遞迴,每層去重,發現最多隻會遞迴 log a 次。總複雜度 o n a log n 等價於線段樹上區間長度總和。等價於不下降序列。設 f x 表示最後乙個數 leq x 時的最優...

計算幾何與計算幾何與

博主這裡曾經學過計算幾何 下文簡稱jj 所以沒有證明或者說明某些演算法,不適合初學者食用 用一道例題及黃學長的 來理解 黃學長 include include include include include include include include include include define...

計算幾何 幾何基礎

這章早在2017年寒假就在培訓的時候由來自清華的hta老師上過了 但是本蒟蒻那時候並不是懂的太多 所以這週ww老師又上了一遍 大概記錄一下 大概就跟高中必修4的平面向量差不多 有上過的應該都會 a x1,y1 b x2,y2 a b x1x2 y1y2 a b a b cos a,b 運用 若a與b...