判斷一個(gè)點(diǎn)是否在多邊形內(nèi)部 如何判斷一個(gè)點(diǎn)是否在一個(gè)多邊形內(nèi)?
如何判斷一個(gè)點(diǎn)是否在一個(gè)多邊形內(nèi)?假設(shè)多邊形的坐標(biāo)存儲(chǔ)在一個(gè)數(shù)組中。首先,我們需要得到陣列在橫坐標(biāo)和縱坐標(biāo)上的最大值和最小值,并根據(jù)這四個(gè)點(diǎn)計(jì)算出一個(gè)四邊形。首先要判斷目標(biāo)坐標(biāo)點(diǎn)是否在四邊形內(nèi)。如果在
如何判斷一個(gè)點(diǎn)是否在一個(gè)多邊形內(nèi)?
假設(shè)多邊形的坐標(biāo)存儲(chǔ)在一個(gè)數(shù)組中。首先,我們需要得到陣列在橫坐標(biāo)和縱坐標(biāo)上的最大值和最小值,并根據(jù)這四個(gè)點(diǎn)計(jì)算出一個(gè)四邊形。首先要判斷目標(biāo)坐標(biāo)點(diǎn)是否在四邊形內(nèi)。如果在四邊形之外,我們可以跳過更復(fù)雜的計(jì)算,直接返回false。
//我不能通過這個(gè)測(cè)試。。。直接返回false;
下一步是核心算法部分:
首先,參數(shù)nvert表示多邊形的幾個(gè)點(diǎn)。浮點(diǎn)數(shù)testx和testy分別表示待測(cè)點(diǎn)的橫坐標(biāo)和縱坐標(biāo),*vertx和*verty分別表示多邊形橫坐標(biāo)和縱坐標(biāo)數(shù)組的第一個(gè)地址。
我們注意到每個(gè)計(jì)算都涉及兩個(gè)相鄰點(diǎn)和要測(cè)試的點(diǎn),然后考慮兩個(gè)問題:verty[J]<testy< verty[i
]2?如果你不明白If語句的后半部分,請(qǐng)?jiān)诩埳蠈懴翴和j之間的斜率公式。在初中階段你需要運(yùn)用一點(diǎn)解析幾何和不等式的知識(shí)。對(duì)于大多數(shù)代碼農(nóng)民來說,這是小菜一碟。