我正在研发一种自动漫游车,它可以通过超声波接近传感器进行部分导航。在我们实现硬件之前,我们想用模拟器对我们的算法进行一些测试,我现在正在编写。
我遇到的一个问题是超声波传感器具有60度的视野。如果检测到一个物体,那个半径的60度弧线上的任何点可能都有一个物体,但是该半径以下的所有点都保证没有一个物体。 / p>
我需要做的是编写一个给定(x,y)坐标和方位的函数(我现在将其限制为4个基数)并让它返回给我一个像素列表半径和该半径的像素列表。通过从多个位置和轴承重复扫描,可以找到所有物体。
我最初的想法是迭代工作。从传感器前面的行开始,在逐渐变宽的扫描中来回扫描(1,1,3,3,5,5,7,7等)。然而,最终半径停止与行对齐。我的新搜索路径是弄清楚如何用像素绘制弧,然后将半径逐步调整到第一次碰撞。
这个问题提出了类似的问题,但只对特定问题感兴趣,所以我认为这是一个根本不同的问题。
答案 0 :(得分:2)
您可以使用任何Floodfill method来获取扇区中的所有整数点。
预先计算开始和结束角度S_Angle = Center_Bearing - Pi/6
E_Angle = Center_Bearing + Pi/6
重要价值观:
S_Cos = Cos(S_Angle)
S_Sin = Sin(S_Angle)
E_Cos = Cos(E_Angle)
E_Sin = Sin(E_Angle)
行业洪水填埋的边境条件:
(x-x0)*S_Sin-(y-y0)*S_Cos >= 0 //point is left to starting ray
(x-x0)*E_Sin-(y-y0)*E_Cos <= 0 //point is right to ending ray
(x-x0)^2+(y-y0)^2 <= R^2 //point is in the range
(可能你可能需要在第一个不等式对中交换&gt; =和&lt; =)