判斷點是否在凸多邊形內

2022-07-20 09:12:13 字數 686 閱讀 2210

判斷點是否在凸多邊形內的方法很多,此處僅給出使用向量叉積判斷點是否在凸多邊形內的方法。

以下圖為例說明問題:

原則:1. 將多邊形的第i條邊的第乙個頂點指向點p得到向量 v1,然後將從第乙個頂點指向第二個頂點得到向量v2,叉乘這兩個向量。

2.如果叉乘結果與上一條邊的叉乘結果的乘積大於0則繼續執行,如果乘積小於0,表示點p不在凸多邊形內,直接返回即可。

要點:要求凸多邊形的點以固定的順序給出,例如固定為逆時針或順時針。

實現的**如下:

struct

point

};point subpoint(

const point& vtarget1, const point&vtarget2)

float crossproduct(const point& vtarget1, const point&vtarget2)

bool ispointinconvexpolygon(

const vector& apoints, const point&vtarget)

nlastvalue =ncurcrossproduct;

}return

true;

}

親測有效。

判斷點是否在多邊形內

1.叉乘判別法 只適用於凸多邊形 想象乙個凸多邊形,其每乙個邊都將整個2d螢幕劃分成為左右兩邊,連線每一邊的第乙個端點和要測試的點得到乙個向量v,將兩個2維向量擴充套件成3維的,然後將該邊與v叉乘,判斷結果3維向量中z分量的符號是否發生變化,進而推導出點是否處於凸多邊形內外。這裡要注意的是,多邊形頂...

判斷點是否在多邊形內

判斷點是否在多邊形內有三個步驟 自csdn 第一步 判斷這個點是不是就是多邊形的端點 第二步 判斷這個點是不是落在多邊形的邊界上 第三步 通過這個點橫向作一平行射線,判斷與多邊形的交點數,如果交點是頂點,則交點數加一,結果如果是奇數,則該點落在多邊形之內,如果是偶數,則反之。具體演算法涉及向量叉積,...

判斷點及線段是否在多邊形內

昨天小學了一點計算幾何學的內容,想把它記下來,以便以後翻閱。1.判斷點是否在多邊形中 先說一下思路 判斷點 p 是否在多邊形中,可以先以點p向左引一條射線 l 我們知道,從射線l左端的無窮遠處開始一直到點p的過程中,當遇到多邊形的第乙個交點時l進入了多邊形,當遇到第二個交點時,l穿出了多邊形。可知,...