对于机器人项目,我需要确定给定的地理位置是否在两个航点之间的线的一定距离内。
线表示给定宽度的走廊。如果我在走廊内,则需要一个函数返回True,如果在走廊内,则需要返回False。
这种情况将返回True:
这种情况将返回False:
答案 0 :(得分:0)
(评论后编辑)
鉴于上图,您的问题简化为一个简单的三角问题。本质上,您需要计算d
,然后将其与h
进行比较。如果d
较大且h
,则点C
位于走廊的外部,否则,点C
位于走廊的内部。
d
计算d
就像应用几个三角恒等式一样简单。
首先,您知道向量AB
和AC
的点积由下式给出:
可让您计算a
:
然后使用通常的三角关系,您将得到:
变成:
您可以计算出
,因为您有a
的表达式。
d'
这只是简单的三角函数而已:
此函数至少需要4个参数作为输入:
h
-走廊的宽度A
-点A的坐标B
-点B的坐标C
-C点的坐标在此功能内,您需要:
AB
和AC
d
d'
d'
<0或d'
> || AB ||,则返回false d
<= h
返回true,否则返回false 如果知道A
,B
和C
的形状不太复杂,则取它们的大小。本质上,您需要修改上面第4点和第5点的测试,以考虑对象的实际大小。
(例如,如果您假设A
和C
是球体,则需要确保hh <{d'
<|| AB ||-hh,其中hh是A
和C
的半径之和)