輸入兩個分別有 m 和 n 個順時針給定頂點的凸多邊形 p 和 q
計算 p 上 y 座標值最小的頂點(稱為yminp) 和 q 上 y 座標值最大的頂點(稱為ymaxq)。
為多邊形在 yminp 和 ymaxq 處構造兩條切線 lp 和 lq 使得他們對應的多邊形位於他們的右側。 此時 lp和 lq 擁有不同的方向, 並且 yminp 和 ymaxq 成為了多邊形間的乙個對踵點對。
計算距離(yminp,ymaxq) 並且將其維護為當前最小值。
順時針同時旋轉平行線直到其中乙個與其所在的多邊形的邊重合。
1.只有一條線與邊重合, 那麼只需要計算「頂點-邊」對踵點對和「頂點-頂點」對踵點對距離。 都將他們與當前最小值比較, 如果小於當前最小值則進行替換更新。
2.兩條切線都與邊重合, 那麼情況就更加複雜了。 如果邊「交疊」, 也就是可以構造一條與兩條邊都相交的公垂線(但不是在頂點處相交), 那麼就計算「邊-邊」距離。 否則計算三個新的「頂點-頂點」對踵點對距離。 所有的這些距離都與當前最小值進行比較, 若小於當前最小值則更新替換。
重複執行步驟4和步驟5,直到新的點對為(yminp,ymaxq)。
輸出最大距離。
1.點乘與叉乘
2.計算幾何長到懷疑人生==
ac
POJ 3608 旋轉卡殼求解凸包間的最短距離
題意給你兩個凸包,求解兩個凸包間的最短距離。include include include include include using namespace std define max n 10000 10 define inf 0x3f3f3f3f define eps 1e 10 struct ...
凸包最近距離 旋轉卡殼
original link 題意 給出兩個順時針排序好的凸包,求這兩個凸包的最近點對距離。解析 旋轉卡殼的另外乙個應用。先找出p1p1 p1中的最低點,p2p2 p2中的最高點,然後旋轉 順時針逆時針隨意,要保證兩個切線旋轉方向相同 每次p1 p1p1 的切線旋轉到與一條邊重合,找出p2p2 p2中...
凸包問題 旋轉卡殼
1978年,m.i.shamos在 computational ceometry 中介紹了一種尋找凸多邊形直徑的線性演算法。1.支撐線 如果一條直線l,通過凸多邊形p的乙個頂點,且多邊形在這條直線的一側,稱l是p的支撐線。2.對踵 zhong,三聲 點 如果過凸包上的兩個點可以畫一對平行直線,使凸包...