大佬教程收集整理的这篇文章主要介绍了android – 识别点是否在多边形中,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
参考http://en.wikipedia.org/wiki/Point_in_polygon论文的射线铸造
private Boolean isPoinTinPolygon(LatLng tap,ArrayList<LatLng> vertices) { int intersectCount = 0; for (int j = 0; j < vertices.size() - 1; j++) { if (rayCasTintersect(tap,vertices.get(j),vertices.get(j + 1))) { intersectCount++; } } return ((intersectCount % 2) == 1); // odd = inside,even = outside; } private Boolean rayCasTintersect(LatLng tap,LatLng vertA,LatLng vertB) { double aY = vertA.latitude; double bY = vertB.latitude; double aX = vertA.longitude; double bX = vertB.longitude; double pY = tap.latitude; double pX = tap.longitude; if ((aY > pY && bY > pY) || (aY < pY && bY < pY) || (aX < pX && bX < pX)) { return false; // a and b can't both be above or below pt.y,and a or // b must be east of pt.x } double m = (aY - bY) / (aX - bX); // Rise over run double bee = (-aX) * m + aY; // y = mx + b double x = (pY - beE) / m; // algebra is neat! return x > pX; }
以上是大佬教程为你收集整理的android – 识别点是否在多边形中全部内容,希望文章能够帮你解决android – 识别点是否在多边形中所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。