找出地理位置是否在其他两个位置之间的直线的给定距离内

时间:2019-06-24 11:54:48

标签: python gps coordinates

对于机器人项目,我需要确定给定的地理位置是否在两个航点之间的线的一定距离内。

线表示给定宽度的走廊。如果我在走廊内,则需要一个函数返回True,如果在走廊内,则需要返回False。

这种情况将返回True:

corridor

这种情况将返回False:

corridor

1 个答案:

答案 0 :(得分:0)

(评论后编辑)

schema

鉴于上图,您的问题简化为一个简单的三角问题。本质上,您需要计算d,然后将其与h进行比较。如果d较大且h,则点C位于走廊的外部,否则,点C位于走廊的内部。

计算d

计算d就像应用几个三角恒等式一样简单。

首先,您知道向量ABAC的点积由下式给出:

equation

可让您计算a

cosa

然后使用通常的三角关系,您将得到:

cosa

变成:

cosa

您可以计算出

,因为您有a的表达式。

计算d'

这只是简单的三角函数而已:

cosa

谓词功能

此函数至少需要4个参数作为输入:

  1. h-走廊的宽度
  2. A-点A的坐标
  3. B-点B的坐标
  4. C-C点的坐标

在此功能内,您需要:

  1. 计算向量ABAC
  2. 计算d
  3. 计算d'
  4. 如果d' <0或d'> || AB ||,则返回false
  5. 如果d <= h返回true,否则返回false

如果知道ABC的形状不太复杂,则取它们的大小。本质上,您需要修改上面第4点和第5点的测试,以考虑对象的实际大小。

(例如,如果您假设AC是球体,则需要确保hh <{d' <|| AB ||-hh,其中hh是AC的半径之和)