Duda para rotar un punto en función de otro

Iniciado por SrCooper, 5 Abril 2014, 17:54 PM

0 Miembros y 1 Visitante están viendo este tema.

SrCooper

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 (cpp) [Seleccionar]

new_x = x * cos(angulo) - y * sen(angulo);
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.

noele1995

Código (cpp) [Seleccionar]
new_x = ((x - x_origin) * cos(angle)) - ((y_origin - y) * sin(angle)) + x_origin;
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

SrCooper

Muchas gracias por la ayuda, funcionó  :D

Un saludo