判斷點在多邊形內 射線法詳解

2022-08-05 17:30:24 字數 1101 閱讀 9808

現有乙個點p(x0,y0),多變形ptpolypon,判斷點p是否在多邊形內。

判斷乙個點是否在多邊形內,我們可以從該點引出一條水平射線(任意射線都可,但水平便於計算),觀察射線與多變形的交點個數,如果交點個數為奇數,則該點在多邊形內,如果為偶數則在多邊形外。

如圖 點在多邊形內,從該點做一條水平射線,與多邊形交點個數為2*n+1 為奇數,同理若點在多變形外為偶數。

如何判斷水平射線與多變形的邊有交點呢?

顯然,如果某條邊是水平的,那麼肯定沒有交點

if (p1.y == p2.y) continue;

如果點p的縱座標比多邊形某邊的縱座標都小或都大,那麼他們的交點一定在延長線上,如圖所示

接下來我們考慮一般情況。要想判斷有沒有交點,我們只需要將多邊形某邊所在直線的方程求出,將p點的縱座標y0帶入,即可求得交點橫座標x,將x與x0比較,如果下x0

判斷點在多邊形內演算法(射線法)

謝謝分享!點和多邊形關係的演算法實現 好了,現在我們已經了解了向量叉積的意義,以及判斷直線段是否有交點的演算法,現在回過頭看看文章開始部分的討論的問題 如何判斷乙個點是否在多邊形內部?根據射線法的描述,其核心是求解從p點發出的射線與多邊形的邊是否有交點。注意,這裡說的是射線,而我們前面討論的都是線段...

點在多邊形內的判斷(射線法)

射線法,顧名思義,就是用射線去判斷點是否在多邊形內。射線從哪來呢?在這裡先設要判斷的點為p x,y 多邊形構成的點用乙個 v maxn x,y 陣列儲存 其中maxn是該多邊形的頂點數 射線是從p x,y 開始,水平向右 平行於 x 軸 引出,當然,這條射線只是虛擬的,想象出來就行了。射線引出來後有...

判斷點在多邊形內演算法

點和多邊形關係的演算法實現 好了,現在我們已經了解了向量叉積的意義,以及判斷直線段是否有交點的演算法,現在回過頭看看文章開始部分的討論的問題 如何判斷乙個點是否在多邊形內部?根據射線法的描述,其核心是求解從p點發出的射線與多邊形的邊是否有交點。注意,這裡說的是射線,而我們前面討論的都是線段,好像不適...