生活随笔
收集整理的這篇文章主要介紹了
检查多边形是否包含了某点(经纬度)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
為什么80%的碼農都做不了架構師?>>> ??
/***?檢查多邊形是否包含了某點~多邊形都是由點組成*?@param?px?緯度*?@param?py?經度*?@param?xD?多邊形所有緯度*?@param?yD?多邊形所有經度*?@return*/
public?boolean?containsPoint(double?px,?double?py,ArrayList<Double>?xD,ArrayList<Double>?yD)?{int?verticesCount?=?xD.size();int?nCross?=?0;for?(int?i?=?0;?i?<?verticesCount;?++?i)?{double?ix?=??xD.get(i);double?iy?=??yD.get(i);double?i1x?=??xD.get((i?+?1)?%?verticesCount);double?i1y?=??yD.get((i?+?1)?%?verticesCount);//?求解?y=p.y?與?p1?p2?的交點if?(?iy?==?i1y?)?{???//?p1p2?與?y=p0.y平行continue;}if?(?py?<?Math.min(iy,?i1y)?)?{?//?交點在p1p2延長線上continue;}if?(?py?>=?Math.max(iy,?i1y)?)?{?//?交點在p1p2延長線上continue;}//?求交點的?X?坐標float?x?=?(float)?((py?-?iy)?*?(i1x?-?ix)/?(i1y?-?iy)?+?ix);if?(?x?>?px?)?{?//?只統計單邊交點nCross++;}}//?單邊交點為偶數,點在多邊形之外return?(nCross%2==1);
}
轉載于:https://my.oschina.net/jgy/blog/491740
總結
以上是生活随笔為你收集整理的检查多边形是否包含了某点(经纬度)的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。