計算幾何學習筆記之旋轉卡殼

2021-07-10 22:09:38 字數 625 閱讀 3156

旋轉卡殼的用途太廣太廣了,而且每種用途**都大同小異,這裡只簡單介紹一下(畢竟我也沒怎麼寫過)

什麼是旋轉卡殼?可以想象成有一雙筷子(筷子是平行的),把凸多邊形夾了起來,然後不停地旋轉,旋轉。旋轉中筷子要麼是緊貼多邊形的邊要麼就是緊貼多邊形的頂點。

旋轉卡殼簡介:

計算凸多邊形上的最遠點對(又叫直徑)。這樣考慮方法:對於每乙個點,都求一求它到每個點的距離(這不就跟暴力沒有區別了嗎!!)。

這樣做會有很多無用功。如果一根筷子邊緊貼多邊形的一條邊,那麼離這條邊最遠的點不就是與它們構成的最大面積的三角形嗎?於是乎,每遍歷一條邊的時候,就把另外乙個點朝相同方向轉動直到面積最大(這個面積的變化是單峰的),然後求一求幾個點的最短距離。(為什麼是幾個點?)因為另外一根筷子有可能與多邊形的另外一條邊重合。如下圖:

計算幾何之旋轉卡殼

大佬部落格直通車 根據凸包上的邊的最遠點隨著邊逆時針轉動,一起逆時針轉動的性質,使用計算幾何的一些方法進行旋轉遍歷。例題1 二維平面上有若干個點,求該平面上最遠的兩個點的距離 首先,這兩個點一定凸包上。很容易想到個o n2 的演算法,暴力列舉凸包上的每兩點即可,想想更好的演算法。乙個我證明不來的定理...

計算幾何學習筆記

基礎部分 include using namespace std define type double define vector point define eps 1e 8 const double pi 3.14159265358979323 type deg2red type deg type...

計算幾何學習筆記

計算幾何是什麼東西?能吃嗎?給定 n 個點 x i,yi 問 歐幾里得 距離最近的點對。如果用樸素的兩兩枚舉,需要o n2 的時間。考慮用分治法,先將點按照先 x 後 y排序。考慮對一段點 l r 的處理。在 放一根平行於y軸的線,其左邊的答案為a,右邊為b,設 min a,b 考慮如果有跨這條線的...