# Direction between points from [0,360]

22 views (last 30 days)
AAS on 25 Sep 2020 at 15:04
Commented: John D'Errico on 25 Sep 2020 at 16:22
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

John D'Errico on 25 Sep 2020 at 15:09
Edited: John D'Errico on 25 Sep 2020 at 15:21
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.

AAS on 25 Sep 2020 at 15:14
suppose point 1 is (x1,y1) , point 2 is (x2,y2)....point 5 is (x5,y5). does the y,x in your reply account for y2-y1 and x2-x1 respectively?
Thanks
John D'Errico on 25 Sep 2020 at 16:22
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.

Ameer Hamza on 25 Sep 2020 at 15:09
Edited: Ameer Hamza on 25 Sep 2020 at 15:09
x = -1;
y = -1;
theta = atan2(y, x);
if theta < 0
theta = theta + 2*pi;
end

#### 1 Comment

John D'Errico on 25 Sep 2020 at 15:11
The OP apparently wants results in DEGREES.