Tema: Rotacion 2D
Ver Mensaje Individual
  #2 (permalink)  
Antiguo 20/11/2013, 03:40
Avatar de marlanga
marlanga
 
Fecha de Ingreso: enero-2011
Ubicación: Murcia
Mensajes: 1.024
Antigüedad: 13 años, 10 meses
Puntos: 206
Respuesta: Rotacion 2D

El centro que tiene la matriz original no es el mismo centro que tiene la matriz cuando la "tratas" con tu función draw, porque le cambia el tamaño y la posición. Asi que deberás calcular el centro cada cez que ejecutes draw.

Por otra parte, para rotar figuras en 2D se utiliza la matriz de rotación y la matriz de traslación.
Tienes una matriz con las coordenadas X e Y de todos los vértices, y otra matriz con sólo la coordenada X e Y del punto por donde quieres rotar.

Se resta a cada coordenada X de los vértices, la coordenada X de rotación. Con la coordenada Y, igual. Con eso se consigue situar el centro en la coordenada (0,0), para que la rotación sea correcta.
Luego se multiplica la matriz por otra matriz llamada de rotación, que básicamente contiene los valores de seno y coseno del ángulo con el que quieres rotar.
La matriz resultado estará rotada sobre el eje (0,0). Por último se le suma a cada vertice de la matriz, su correspondiente coordenada del centro (antes se restó, ahora se suma). Así moverías la matriz con los vértices rotados, a su posición original.
Y con ésto, ya está la matriz rotada.
http://jsfiddle.net/Zjt4R/1/

Última edición por marlanga; 20/11/2013 a las 03:52