我正在尋找一種有效的方法來找到凸多邊形的最小面積矩形。
運行時間應該是 O(n),其中 n 是頂點數。
找到一般多邊形的邊界框有一個復雜的演算法,但是對于凸多邊形應該有一個更簡單的演算法。
對于凸多邊形,如何輕松做到這一點?
謝謝。
uj5u.com熱心網友回復:
旋轉卡尺是您最好的朋友。
最緊密的邊界矩形是它的一個邊與多邊形的一個邊重合。所以,
從任意邊開始,旋轉多邊形以使該邊水平,在底部;
找到分別最大化 Y、-X 和 X 的三個頂點。這樣,您就獲得了一個邊界框;
然后順時針移動到下一側,并調整旋轉;
通過更新最大值找到接下來的三個頂點(跟隨輪廓并在 Y 減小之前停止;與 -X 和 X 相同);
對于每個位置,計算面積并保持最佳。轉一圈后停下。

重要的是要意識到您不會將旋轉應用于所有頂點,而是僅在需要時應用。要獲得初始邊界框,您需要處理 O(N) 個頂點,但 N-1 次更新僅需要 O(N) 個額外作業(已攤銷),并且您不必計算兩個坐標。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/422781.html
標籤:
