我试图确定我的机器人将与墙壁相交的位置,并指定其在地图中的位置以及以弧度指向的角度。因此,为了总结问题,给定一个任意大小的正方形网格[1-infinity],该网格内的对象以及该对象所面对的角度(弧度),找到与网格边界相交的点。例如,你有一个10×10的网格,你的物体位于(5,5)的位置,它面对的角度是π/ 8弧度(东北方向)。如果这个物体是直线移动的,它会在哪里与墙壁相交?是否有适用于任何位置和任何角度的广义解决方案?到目前为止,我所做的是在同一条轨迹上计算网格外的点,并查看所有点,直到找到墙,但我觉得可能有更优雅的解决方案。谢谢您的帮助!机器人方格网格交点
1
A
回答
0
可以简单地找到两个线段的交点。
第一段:机器人在指向角度位置的段。使该段比网格的对角线更大,以确保它将与边界相交(如果它将要)。 第二部分:组成相关墙的线段。
请参阅http://www.faqs.org/faqs/graphics/algorithms-faq/第1.03节中的算法使两条线段相交。
comp.graphics.algorithms FAQ是机器人中常见几何问题的有用资源。
0
伪代码用于与起点射线内部矩形:
起点(X0, Y0)
射线角Theta
,c = Cos(Theta), s = Sin(Theta);
矩形坐标:bottom left (X1,Y1), top right (X2,Y2)
if c >= 0 then //up
XX = X2
else
XX = X1
if s >= 0 then //right
YY = Y2
else
YY = Y1
if c = 0 then //vertical ray
return Intersection = (X0, YY)
if s = 0 then //horizontal ray
return Intersection = (XX, Y0)
tx = (XX - X0)/c //parameter when vertical edge is met
ty = (YY - Y0)/s //parameter when horizontal edge is met
if tx <= ty then //vertical first
return Intersection = (XX, Y0 + tx * s)
else //horizontal first
return Intersection = (X0 + ty * c, YY)
相关问题
- 1. 网格网格交叉点
- 2. PLOT3D格式:在网格交点画点
- 3. 互联网机器人 - 填写表格
- 4. 机器人在网格中的位置和方向
- 5. 交错网格视图老年人API
- 6. 查找线条与网格的交点
- 7. 找到网格交叉点的算法
- 8. 细胞大小在网格布局[机器人]
- 9. 机器人如何应用风格XML
- 10. 机器人的RatingBar小风格
- 11. 机器人的EditText货币格式
- 12. 电报机器人消息格式
- 13. MVC网格提交
- 14. 交互式网格
- 15. 2维网格的不同随机点
- 16. 交互式机器视觉网格提示
- 17. 与方形网格的最佳线交点
- 18. 以快速方式找到线和网格之间的交点
- 19. 点击网格
- 20. 点击提交按钮发送Kendo网格行到服务器
- 21. 创建网格。将点插入网格
- 22. 在外部机器上的Selenium网格上启动phantomjs节点
- 23. 正方形网格 - (旋转)矩形相交 - 计算所有交点细胞
- 24. 顶点的3d立方体网格C++
- 25. 从每个网格点的点列表中取出随机点
- 26. 2D交互式Javascript网格
- 27. 与圆相交的网格
- 28. CGAL网格交叉/碰撞
- 29. Bootstrap交换网格跨度
- 30. 交互式网格WPF
您的网格是否由100个单元格组成,并且您需要与每个网格线相交的交点?或者只是一个矩形,你需要与它的边界相交? – MBo