判斷點與多邊形的關係(3) 角度和法

2021-08-13 21:28:51 字數 863 閱讀 3673

「角度和法」的思路是:多邊形內的點,與所有頂點順次連線形成向量的夾角之和為2π。

圖例說明,如下圖所示:

o點在多邊形之內,其與多邊形所有頂點的連線,組成6個向量,順次形成6個向量夾角,顯而易見,這6個夾角之和為2π。

p點在多邊形之外,其與多邊形所有頂點的連線,組成6個向量,順次形成6個向量夾角,顯而易見,這6個夾角之和不等於2π。確切的說是小於2π。

計算夾角的方法可按如下公式實現: θ=

arccos(a

b∥a∥

∥b∥)

公式中,a和b就是組成夾角的兩個向量,在反余弦函式括號中,分子部分為兩個向量的點乘,分子部分為兩個向量各自的2範數相乘。在這裡要說明一下,如果要判斷的點就是多邊形頂點之一,則a和b其中之一的2範數為0,需要特別處理;如果點在多邊形的邊上,則有存在乙個夾角為π的情況。這兩種情況均可以認為該點在多邊形的邊上。

此方法和之前談到的向量積法、面積法一樣,可以直接適用於凸多邊形,至於凹多邊形,也可以用,不過要將凹的部分可能重複計算夾角的地方調整座標在集合中的順序後計算夾角。另外乙個問題和面積法相似,就是計算角度存在一定的捨入誤差,影響計算的精度。

int inpolygon_angle(const czpolygon& polygon, czpoint_t pt)

return abs(duangleall - 2*pi)效果和部落格一樣,這裡就不再重複貼了。

多邊形與多邊形 位置關係的判斷

c 判斷點的位置方法一 public intisleft point p0,point p1,point p2 private boolpointinfences point pnt1,point fencepnts else if wn 0 return false else return tru...

c 判斷點與圓 矩形 多邊形的關係

c 中並未提供型別gis的空間結構,把點 圓 矩形 多邊形等封裝在一起,但是基本的空間位置關係還是可以判斷的 判斷點與矩形 圓及多邊形的位置關係 public class pointhelper public static boolean pointincircle point p,point ci...

python射線法判斷點與多邊形的位置關係

部落格為本人的學習筆記,多多學習,一起交流。常見的判斷點與多邊形的位置關係有面積法,角度法以及射線法 射線法的思想為 以目標點為端點引一條射線,統計射線和多邊各邊的交點數目。如果交點個數為奇數,則點在多邊形的內部,反之則在多邊形外部。以射線法的實現為例,如下 write by heheyang de...