我正在尝试在Matlab中模拟目标的运动,该目标的初始x和y坐标,真实方位角和速度(以m/s为单位)已指定。我想知道是否有一种方法可以简单地以指定的方位角绘制一条直线,以显示目标所采取的路径(如下图所示)
提前致谢!
最佳答案
最好的选择是依靠内置的极坐标图功能之一来执行此操作。我认为最类似于您的需求的是 compass
。它实质上是在极坐标图上绘制从中心指向点(在笛卡尔坐标中定义)的箭头。
theta = deg2rad(130);
% Your speed in m/s
speed = 5;
hax = axes();
c = compass(hax, speed * cos(theta), speed * sin(theta));
% Change the view to orient the axes the way you've drawn
view([90 -90])
然后,为了更改方位角和速度,您只需使用新的方位角/速度再次调用
compass
函数。new_theta = deg2rad(new_angle_degrees);
c = compass(hax, new_speed * cos(new_theta), new_speed * sin(new_theta));
其他极坐标绘制选项包括
polar
和 polarplot
,它们接受极坐标但没有箭头。如果您不喜欢极坐标图,则可以始终在直角坐标轴上使用quiver
(确保指定相同的轴)。编辑
根据您的反馈和要求,以下是行驶距离的极坐标图示例。
% Speed in m/s
speed = 5;
% Time in seconds
time = 1.5;
% Bearing in degrees
theta = 130;
hax = axes();
% Specify polar line from origin (0,0) to target position (bearing, distance)
hpolar = polar(hax, [0 deg2rad(theta)], [0 speed * time], '-o');
% Ensure the axis looks as you mentioned in your question
view([90 -90]);
现在,要使用新的方位角,速度和时间来更新该图,您只需简单地再次调用
polar
来指定轴。hpolar = polar(hax, [0 theta], [0 speed], '-o');