凸多邊形的判定方法
在計算幾何和地理資訊系統中,多邊形的凹凸性判定十分重要。那麼什麼是凹多邊形和凸多邊形呢?首先,我們從直觀上來理解,凸多邊形就是多邊形任意兩個頂點的連線在多邊形內,那麼凹多邊形就是至少能找出一條線在多邊形外。
一些基礎概念
頂點、向量、向量叉乘、
一般來說,多邊形是由首尾相連的頂點組成的。這裡的頂點就是幾何中的點。向量,在2D以及3D幾何中,點和向量可以用一個類或者結構體來表示,但是點和向量在數學上存在著本質的區別。點是有位置的,但是沒有方向。而向量是沒有位置,但是有方向,主要就是表達幾何中的位移。
在多邊形凹凸性判斷中,要用到向量叉乘,也就是向量叉乘。向量叉乘在圖形系統中有著非常重要的應用,包括CAD、地理資訊系統等。
幾種常見的凸多邊形判斷方法:
1)角度法:
判斷每個頂點所對應的內角是否小於180度,如果小於180度,則是凸的,如果大於180度,則是凹多邊形。
2)凸包法:
這種方法首先計算這個多邊形的凸包,關於凸包的定義在此不再贅述,首先可以肯定的是凸包肯定是一個凸多邊形。如果計算出來的凸多邊形和原始多邊形的點數一樣多,那就說明此多邊形時凸多邊形,否則就是凹多邊形。
3)頂點凹凸性法
利用以當前頂點為中心的向量叉乘或者計算三角形的有符號面積判斷多邊形的方向以及當前頂點的凹凸性。
假設當前連續的三個頂點分別是P1,P2,P3。計算向量P1P2,P2P3的叉乘,也可以計算三角形P1P2P3的面積,得到的結果如果大於0,則表示P3點線上段P1和P2的左側,多邊形的頂點是逆時針序列。然後依次計算下一個前後所組成向量的叉乘,如果在計算時,出現負值,則此多邊形時凹多邊形,如果所有頂點計算完畢,其結果都是大於0,則多邊形時凸多邊形。
4)辛普森面積法
利用待判別的頂點以及前後兩個頂點所組成的三角形,利用辛普森公式計算其面積,如果此三角形面積與整個多邊形面積符號相同,那麼這個頂點是凸的;如果此三角形面積與整個多邊形面積符號不同,那麼這個頂點是凹的,即整個多邊形也是凹多邊形。
結論:以上只是幾種最基本的判定方法,當然還有更優秀的演算法,由於個人能力就到此為止了。