關鍵詞:凸多邊形;線性方程;高精度;點包含測試
中圖分類號:TP391 文獻標志碼:A 文章編號:1001-8395(2023)04-0560-09
doi:10. 3969 / j. issn. 1001-8395. 2023. 04. 017
點與多邊形位置關系的判別算法,即點包含算法,是多個領域的研究基礎,目的在于檢測目標點位于給定多邊形的內部或外部,在計算幾何、計算機圖形學、地理信息系統等領域均有大量的研究與應用. 平面點包含算法是三維點包含算法的基礎[1]. 傳統多邊形內外點判別算法主要有:射線法[2-4]、轉角法[5]、面積和法[6]等.
1)射線法. 最早提出的點包含算法,其基本原理可描述為:以待測點為端點,發(fā)出一條射線,若該射線與多邊形的交點數為奇數,則該點位于多邊形內,反之則位于多邊形外. 射線法適用于任意多邊形,且不需要考慮精度誤差和多邊形點給出的順序. 由于射線發(fā)出的隨機性,對于一些特殊情況,射線法判斷將會出現異常:
(a)射線穿過多邊形一個或多個頂點. 當從待測點發(fā)出的射線經過多邊形的一個或多個頂點時,根據交點個數的奇偶性進行內外點測試是錯誤的,如圖1 中的R1、R4;
(b)射線與多邊形的某一條或多條邊重合.當從待測點發(fā)出的射線與多邊形的某一條或多條邊重合時,傳統射線法的計算規(guī)則也不再適用,如圖1 中的R2;
(c)待測點與多邊形的某個頂點重合. 當待測點與多邊形的某個頂點重合時,傳統射線法的計算規(guī)則同樣也會出錯,導致傳統射線法判斷失誤,如圖1 中的R3.