我找到了Geo Fencing – point inside/outside polygon.但是,它只支持多边形.
解决方法 我测试了各种实现,这个例子适合我:Example
public static bool polyContainsPoint(List<Point> points,Point p) { bool insIDe = false; // An imaginary closing segment is implIEd,// so begin testing with that. Point v1 = points[points.Count - 1]; foreach (Point v0 in points) { double d1 = (p.Y - v0.Y) * (v1.X - v0.X); double d2 = (p.X - v0.X) * (v1.Y - v0.Y); if (p.Y < v1.Y) { // V1 below ray if (v0.Y <= p.Y) { // V0 on or above ray // Perform intersection test if (d1 > d2) { insIDe = !insIDe; // Toggle state } } } else if (p.Y < v0.Y) { // V1 is on or above ray,V0 is below ray // Perform intersection test if (d1 < d2) { insIDe = !insIDe; // Toggle state } } v1 = v0; //Store prevIoUs endpoint as next startpoint } return insIDe; }总结
以上是内存溢出为你收集整理的实施地理围栏 – C#全部内容,希望文章能够帮你解决实施地理围栏 – C#所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)