Direction between points from [0,360]
8 views (last 30 days)
Show older comments
I have 5 points which has (x,y) position and want to calculate the direction from one point to the other. I used atan2d but the output is confusing. Is there any way to bypass the different signs for counterclockwise and clockwise and get the output to be between [0,360] from clockwise only?
Thanks
0 Comments
Accepted Answer
John D'Errico
on 25 Sep 2020
Edited: John D'Errico
on 25 Sep 2020
The function atan2d gives angles that are from -180 to 180. Not a problem. This works:
mod(atan2d(y,x),360)
But you want the angles in a CLOCKWISE orientation? You do understand that is not the standard?
mod(360 - atan2d(y,x),360)
I won't ask why you need them in a clockwise orientation. The angles that come from this second expression are angles relative to a horizontal line, and proceeding CLOCKWISE around the origin.
Note that mod still works even if the angles are not integers. For example:
mod(360 - atan2d(-2,1),360)
ans =
63.435
So this points at an angle 63 degrees BELOW the right branch of the x-axis.
2 Comments
John D'Errico
on 25 Sep 2020
It accounts for whatever you pass in.
mod(atan2d(diff(y),diff(x)),360)
or as you prefer,
mod(360 - atan2d(diff(y),diff(x)),360)
Learn to think in terms of vectors in MATLAB.
More Answers (1)
Ameer Hamza
on 25 Sep 2020
Edited: Ameer Hamza
on 25 Sep 2020
Add 2pi to negative values.
x = -1;
y = -1;
theta = atan2(y, x);
if theta < 0
theta = theta + 2*pi;
end
1 Comment
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!