我正在寻找一种算法,我可以创建地理围栏并检查设备是否正在进入/离开围栏。我已经看过多边形算法(光线投射和绕组数),但是有没有算法可以应用于圆形和任何不规则形状?重要的制约因素是时间效率。
谢谢。
好的圆圈很容易(至少如果你假设一个局部平坦的表面) - 只是一个点的绝对距离。
如果你需要速度的常规方法是级联,首先检查一个圆,或者围绕点检查一个正方形,然后是一个凸多边形,然后在必要时检查更详细的多边形。
如何定义不规则形状 - 如果它不是多边形?
ps见How to test if a point is inside of a convex polygon in 2D integer coordinates?
以下是易于理解的c代码算法:
看看四叉树,空间索引,四叉树和r树。
但最重要的是,出于几何正确性和效率的原因,绕组数算法应始终优先用于确定多边形中点的包含。