I'm trying to simulate the movement of a target in Matlab, whose initial x and y co-ordinates, true bearing and speed (in m/s) are specified. I am wondering if there is a way to simply draw a straight line, at the specified bearing angle to show the path taken by the target (as shown in the image below)
Thanks in advance!
Your best bet is to rely on one of the built-in polar plotting functions to do this. I think the one that is most similar to your needs would be compass
. It essentially plots an arrow pointing from the center to a point (defined in cartesian coordinates) on a polar plot.
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])
Then in order to change the bearing and speed, you simply call the compass
function again with your new bearing/speed.
new_theta = deg2rad(new_angle_degrees);
c = compass(hax, new_speed * cos(new_theta), new_speed * sin(new_theta));
Other polar plotting options include polar
and polarplot
which accept polar coordinates but don't have an arrow head. If you don't like the polar plot you could always go with quiver
on a cartesian axes (making sure you specify the same axes).
Edit Based on your feedback and request, below is an example of a polar plot of the distance traveled.
% 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]);
Now to update this plot with a new bearing, speed, time you would simply call polar
again specifying the axes.
hpolar = polar(hax, [0 theta], [0 speed], '-o');
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With