algorithm - 机器人方形网格交点

标签 algorithm math geometry trigonometry robotics

我正在尝试根据机器人在 map 中的位置和它指向的角度(以弧度表示)来确定我的机器人与墙相交的点。所以总结一下这个问题,给定一个任意大小 [1-无穷大] 的正方形网格,该网格内的一个对象,以及该对象所面对的角度(弧度),找到与网格边界的交点.例如,您有一个 10 x 10 的网格,您的对象位于位置 (5,5),并且它面向的角度为 pi/8 弧度(东北方向)。如果这个物体沿直线移动,它会在哪里与墙相交?是否有适用于任何位置和任何角度的通用解决方案?到目前为止,我正在做的是在同一轨迹上计算网格外的一个点,并查看所有点,直到找到一堵墙,但我觉得可能有一个更优雅的解决方案。感谢您的帮助!

最佳答案

你可以简单地找到两条线段的交点。

第一段:从机器人在指向角度的位置开始的段。使此段大于网格的对角线,以确保它会与边界相交(如果要的话)。 第二段:构成相关墙的线段。

参见 http://www.faqs.org/faqs/graphics/algorithms-faq/ 1.03 节求两条线段相交的算法。

comp.graphics.algorithms FAQ 是解决机器人技术中常见几何问题的有用资源。

关于algorithm - 机器人方形网格交点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36758570/

相关文章:

ios - 如何从给定的数字中找到一个随机组合,这些数字加起来与 Swift 中的另一个数字相加?

algorithm - 如何自动检测和裁剪 Sprite 表中的单个 Sprite 边界?

c++ - 通过 MPI 在集群中进行主成分分析

javascript - 使用draw2d在JavaScript中围绕主圆绘制圆

javascript - 计算圆上一点的坐标,沿着圆心和圆外另一点之间的线?

algorithm - 求合数的最小值

arrays - 如何从 n 个数组中找到公共(public)元素

C++ 三次样条轨迹

.net - BigInteger.Parse 工作不正确

java - 如何从左到右对圆的各部分进行编号