transform x,y coordinate to angle

34 Ansichten (letzte 30 Tage)
Rose
Rose am 12 Mär. 2020
Bearbeitet: Jon am 12 Mär. 2020
Hi Guys,
I'm struggeling with this problem in which I have two points (x and y coordinates known) that move independent of eachother. I need to find the angle between these two points wrt North. The angle can be between -180:180. As indicated in the Figure I added, I would like to find the "red angle", but by using the sin,cos,tan equations I can only get the "blue angle".
Anyone that knows how to tackle this problem? It needs to work for all respective locations of both points to one another...
I tried the following code, but that does only result in the blue angle as expected...
heading_s=atand((y_ip-y_s)/(x_ip-x_s));

Akzeptierte Antwort

Jon
Jon am 12 Mär. 2020
Bearbeitet: Jon am 12 Mär. 2020
I would think that you could use atan2 or atan2d (if you want result in degrees) for this.
For example
x1 = [2;1] % first point
x2 = [-1;-1] % second point
delta = x2 - x1 % vector that points from x1 to x2
heading = atan2d(delta(2),delta(1))
which results in
heading =
-146.3099
  2 Kommentare
Jon
Jon am 12 Mär. 2020
edited above,originally I had arguments in reverse order
Jon
Jon am 12 Mär. 2020
Bearbeitet: Jon am 12 Mär. 2020
If you want the heading to give conventional compass reading (N = 0, E = 90, S = 180, W = 270 you can use
heading = atan2d(delta(2),delta(1))
compassHeading = mod(90-heading,360)

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by