Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: SrCooper en 5 Abril 2014, 17:54 pm



Título: Duda para rotar un punto en función de otro
Publicado por: SrCooper en 5 Abril 2014, 17:54 pm
Buenos días a todos, estoy creando un programa en C++ y quiero rotar un punto alrededor de otro. He estado buscando en internet y he encontrado en wikipedia una manera de rotarlo alrededor del origen de coordenadas (el punto 0,0).

http://es.wikipedia.org/wiki/Matriz_de_rotaci%C3%B3n

Lo que dice esta página es básicamente que para rotar un punto hay que multiplicarlo por la matriz de rotación, es decir, las coordenadas del punto quedarían así:

Código
  1. new_x = x * cos(angulo) - y * sen(angulo);
  2. new_y = x * sen(angulo) + y * cos(angulo);

Pero yo necesito que gire alrededor de otro punto y por más que lo intento no lo consigo (mi nivel de matemáticas de 1º de bachillerato no da para mucho en estos temas  ;D).

Un saludo y muchas gracias de antemano.


Título: Re: Duda para rotar un punto en función de otro
Publicado por: noele1995 en 5 Abril 2014, 18:07 pm
Código
  1. new_x = ((x - x_origin) * cos(angle)) - ((y_origin - y) * sin(angle)) + x_origin;
  2. new_y = ((y_origin - y) * cos(angle)) - ((x - x_origin) * sin(angle)) + y_origin;

Fuente: http://stackoverflow.com/questions/620745/c-rotating-a-vector-around-a-certain-point

Saludos


Título: Re: Duda para rotar un punto en función de otro
Publicado por: SrCooper en 5 Abril 2014, 19:19 pm
Muchas gracias por la ayuda, funcionó  :D

Un saludo