計算幾何 凸包

2022-05-01 12:30:13 字數 979 閱讀 9222

凸多邊形:任意兩個頂點的連線都在多邊形內部,這樣的多邊形稱為凸多邊形

凸包的定義:乙個凸多邊形的頂點的集合

求凸包的一般形式:給出乙個點集,求出覆蓋所有點的最小凸多邊形

graham演算法:

時間複雜度:o(nlogn)極角排序耗時

先取出乙個端點,必須為凸包上的乙個點,取最下且最右的點即可

以端點進行極角排序,利用叉積的性質,按順/逆時針排序,同一線上的點從遠到近排

以下以順時針排序為例進行graham排序:

先將前兩個端點入棧,後續端點按如下判斷,如果棧頂兩個點和下乙個點順時針排列,則入棧並繼續;如果不是則將棧頂元素出棧,直到最後順時針排列,將下乙個點入棧,最後存在棧裡的點就是凸包的集合。

多邊形面積(不限凹凸):

已知任意乙個n邊形都能分解為(n-2)個三角形,然而該演算法既低效,又難以實現。

計算幾何當然是越抽象的演算法越出色,計算所有相鄰邊的叉積之和的絕對值,再除二,即為多邊形面積。

這裡涉及到叉積的幾何意義,叉積的值可以認為是由兩條邊形成的平行四邊形面積,當然這個面積是存在正負的(在凹多邊形中),實際畫圖示例的話,發現正負抵消恰好就是多邊形面積。

多邊形相交求相交面積:

求出多邊形的交點,這是乙個比較容易的過程,然後我們的思路可以分為兩類:

1.求相交多邊形的點集,再求面積

2.求出某個多邊形不與另乙個多變形相交部分的面積

自己還沒有做過這樣的題,發現很多人都是說用2做,等以後用兩個思路分別試一試看。

穩定凸包:

如果乙個凸包加入乙個新的點就能形成乙個比原來大,並且經過原來所有點的凸包,就是穩定凸包。

所以穩定凸包就是每條邊上都至少有三個點的凸包。

計算幾何 凸包

有多個手機訊號發射器,求解乙個最小區域,要求所有的發射器都包含在這個最小區域中,並且任意兩台發射器之間的交流包含於在這個區域內。將所有的發射器看做為點,任意兩個點之間的連線都包含於乙個平面s 乙個平面的子集s 是凸的,當且僅當 s中的任意兩個點之間的連線都包含於 s中。點集 p的凸包是所有包含 p的...

計算幾何 凸包

如求凸包周長 include include include include include include using namespace std define pi 3.1415926 define eps 1e 10 class point 建立point類,裡面包含很多point的運算子 定...

計算幾何 凸包演算法

凸包演算法總結 凸包是指覆蓋平面座標系內若干點的面積最小的凸多邊形。求凸包的第一步是確定 凸包的定點都在給定的點中。通過幾何方法反證很容易得到這一結論。所以,只要從所有點中挑選若干正確的點,按順序 順時針或逆時針 排列,就相當與求得了凸包。計算幾何中的凸包問題程式 graham演算法 include...