我试图确定我的机器人将与墙壁相交的位置,并指定其在地图中的位置以及以弧度指向的角度。因此,为了总结问题,给定一个任意大小的正方形网格[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. 互联网机器人 - 填写表格
- 3. 交错网格视图老年人API
- 4. MVC网格提交
- 5. 机器人的RatingBar小风格
- 6. 电报机器人消息格式
- 7. 点击网格
- 8. 与方形网格的最佳线交点
- 9. 以快速方式找到线和网格之间的交点
- 10. 创建网格。将点插入网格
- 11. 正方形网格 - (旋转)矩形相交 - 计算所有交点细胞
- 12. Bootstrap交换网格跨度
- 13. 交互式网格WPF
- 14. 交替网格颜色
- 15. 点击提交表格
- 16. Python网络机器人(urllib)
- 17. 机器人抵抗网站
- 18. Java - 点击机器人
- 19. 以XML格式编写2D点网格
- 20. 如何适合随机点云上的点网格
- 21. 箱撞机无网格,Physics.Raycast
- 22. LWJGL网格JBullet对撞机
- 23. 显示随机网格c#
- 24. asp.net mvc jqgrid使用网格外的按钮提交网格
- 25. 传感器和机器人之间的数据格式
- 26. Directx网格顶点问题
- 27. Mehlab中的点云网格
- 28. 网格内的点sql
- 29. 异常点击网格列
- 30. ThreeJS:计算正交摄像机中的网格的FOV
您的网格是否由100个单元格组成,并且您需要与每个网格线相交的交点?或者只是一个矩形,你需要与它的边界相交? – MBo