Obtener el angulo dado un vector

Pues claro, la respuesta típica es la arcotangente! Pero bueno… los resultados no se obtienen entre 0 y 2Pi, sino entre -Pi /2 y Pi/2, por lo tanto necesita algunos ajustes. Me he topado varias veces con el problema y siempre se me olvida, al final, algo que debería resolver de inmediato acaba consumiendome un cuarto de hora de tiempo.

Gimbal Lock

A continuación se expone un ejemplo de como calcularlo. Dado un vector cuyo origen es “c0″ y su destino “p0″. ¿Qué ángulo phi forma este vector respecto el eje de abscisas?


float phi= atan((po.Y - co.Y)/(po.X - co.X));
if(po.X-co<0)
   phi= phi + PI;

6 Responses to Obtener el angulo dado un vector

  1. Damian dice:

    Muy bueno el cuadrito. Gracias!

  2. Antonio Garcia dice:

    XDDDD me acabas de solucionar un metodo

  3. GeuS dice:

    Me alegro de que te haya servido :-)

  4. xxx dice:

    Y utilizar la función Atan2 ( x, y) ? Sirve para qualquier pareja de valores (x,y). Está disponible en la mayoria de librerías matemáticas. Ver http://en.wikipedia.org/wiki/Atan2

    • Emanuel Miglio dice:

      Cuidado porque a la función se le pasan las coordenadas a revés: atan2(y, x);

      Supongo que por una cuestión de mantener la costumbre del orden atan(y/x);

  5. mosquitiko dice:

    Muy buen artículo, sobre todo el código C para aplicarlo casi directamente.

Deja un comentario

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

Seguir

Recibe cada nueva publicación en tu buzón de correo electrónico.

%d personas les gusta esto: