具体原理:射线法(但是本人也并不是很理解为什么在某个区域内则会说交点为奇数个,不过通过画图的确没法画出那种情况) 有兴趣的朋友可以自行百度google各种资料 下面是本人根据理解写的代码,有问题欢迎批评指正 public boolean isInRegion(Point p, List<Point> boundary) { int size = boundary.size(); for (Point model : boundary) { 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));
具体应用的话:像判断一个建筑物属于哪一个城市,行政区或是街道的话应该都能使用
|