transform x,y coordinate to angle

33 visualizaciones (últimos 30 días)
Rose
Rose el 12 de Mzo. de 2020
Editada: Jon el 12 de Mzo. de 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));

Respuesta aceptada

Jon
Jon el 12 de Mzo. de 2020
Editada: Jon el 12 de Mzo. de 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 comentarios
Jon
Jon el 12 de Mzo. de 2020
edited above,originally I had arguments in reverse order
Jon
Jon el 12 de Mzo. de 2020
Editada: Jon el 12 de Mzo. de 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)

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Cartesian Coordinate System Conversion en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by