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í:
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.
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
Muchas gracias por la ayuda, funcionó :D
Un saludo