具體原理:射線法(但是本人也并不是很理解為什么在某個(gè)區(qū)域內(nèi)則會(huì)說(shuō)交點(diǎn)為奇數(shù)個(gè),,不過(guò)通過(guò)畫(huà)圖的確沒(méi)法畫(huà)出那種情況) 有興趣的朋友可以自行百度google各種資料 下面是本人根據(jù)理解寫(xiě)的代碼,,有問(wèn)題歡迎批評(píng)指正 public boolean isInRegion(Point p, List<Point> boundary) { int size = boundary.size(); for (Point model : boundary) { // 如果點(diǎn)落在邊界上也認(rèn)為在該區(qū)域內(nèi) for (int i = 0; i < size; i++) { p1 = boundary.get(i % size); p2 = boundary.get((i + 1) % size); if (p.getY() < Math.min(y1, y2)) { if (p.getY() > Math.max(y1, y2)) { int x = x2 - ((x2 - x1) * (y2 - p.getY()) / (y2 - y1)); //如果是奇數(shù)則說(shuō)明該點(diǎn)在區(qū)域之中
具體應(yīng)用的話:像判斷一個(gè)建筑物屬于哪一個(gè)城市,行政區(qū)或是街道的話應(yīng)該都能使用
|