java判斷座標是否在多邊形內

2021-09-01 02:36:33 字數 885 閱讀 3203

正經學徒,佛系記錄,不搞事情

參考: 

/**

* 判斷點是否在多邊形內

* @param point 檢測點

* @param pts 多邊形的頂點

* @return 點在多邊形內返回true, 否則返回false

*/public static boolean isptinpoly(point2d.double point, listpts)

p2 = pts.get(i % n);//right vertex

if (p.x < math.min(p1.x, p2.x) || p.x > math.max(p1.x, p2.x))

if (p.x > math.min(p1.x, p2.x) && p.x < math.max(p1.x, p2.x))

if (p1.y == p2.y) else

} else

if (p.y < xinters) }}

} else else }}

p1 = p2;//next ray left point

}return intersectcount % 2 != 0;

}

使用方法(親測可用):

listpolygon = new arraylist();

for(mapitem : list)

point2d.double point = new point2d.double(param.get("lon"),param.get("lat"));

boolean flag = geoutil.isptinpoly(point, polygon);

判斷點是否在多邊形內

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

判斷點是否在多邊形內

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

判斷點是否在凸多邊形內

判斷點是否在凸多邊形內的方法很多,此處僅給出使用向量叉積判斷點是否在凸多邊形內的方法。以下圖為例說明問題 原則 1.將多邊形的第i條邊的第乙個頂點指向點p得到向量 v1,然後將從第乙個頂點指向第二個頂點得到向量v2,叉乘這兩個向量。2.如果叉乘結果與上一條邊的叉乘結果的乘積大於0則繼續執行,如果乘積...