Saltar la navegación

Rotación

Rotación

Una rotación es una transformación en la que se hace girar al objeto en torno a un punto fijo que se denomina centro de rotación. El objeto se puede rotar al ángulo que se desee. Las rotaciones pueden ser realizadas horarias (en el sentido de las agujas del reloj) u anti-horarias.

Ejemplo de rotación

En dos dimensiones, para llevar a cabo una rotación usando una matriz, el punto (x, y) que se gira hacia la izquierda, se escribe como un vector columna y se multiplica por una matriz de rotación calculada a partir del ángulo θ.

Repaso de trigonometría

Funciones trigonométricas

Figura que muestra un triángulo rectángulo con sus catetos, hipotenusa y ángulo

\begin{align} \sin(\alpha) = \frac{co}{h}, \quad \cos(\alpha) = \frac{ca}{h}, \quad \tan(\alpha) = \frac{co}{h} \end{align}

Teorema de Pitágoras

Diagrama de un triángulo rectángulo y el teorema de pitágoras

\begin{equation} h^2 = ca^2 + co^2 \end{equation}



Rotación respecto al origen

La posición de un punto es rotada alrededor del origen de coordenadas.

Ejemplo de rotación de un punto

El punto P(x, y) está localizado a un ángulo φ del eje x y a una distancia r del origen. Tras rotar el punto a un ángulo θ se obtiene el punto P’(x’, y’).

Así tenemos que:

\begin{equation} \begin{split} x = r\cos(\phi) \\ y = r\sin(\phi) \end{split} \end{equation}

\begin{equation} \begin{split} x' = r\cos(\phi + \theta) \\ y' = r\sin(\phi + \theta) \end{split} \end{equation}

Mediante identidades trigonométricas podemos expandir las ecuaciones para obtener:

\begin{equation} \begin{split} x' = r\cos(\phi)\cos(\theta) - r\sin(\phi)\sin(\theta) \\ y' = r\cos(\phi)\sin(\theta) + r\sin(\phi)\cos(\theta) \end{split} \end{equation}

Y sustituyendo con las definiciones originales de x y y obtenemos:

\begin{equation} \begin{split} x' = x\cos(\theta) - y\sin(\theta) \\ y' = x\sin(\theta) + y\cos(\theta) \end{split} \end{equation}

Sea R(θ) la matriz de rotación sobre el origen, en coordenadas homogéneas la rotación de un punto P alrededor del origen en 2D se puede expresar como el producto matricial de P’ = P × R(θ).

\begin{equation} \begin{bmatrix} x' & y' & 1 \end{bmatrix} = \begin{bmatrix} x & y & 1 \end{bmatrix} \begin{bmatrix} \cos(\theta) & \sin(\theta) & 0 \\ -\sin(\theta) & \cos(\theta) & 0 \\ 0 & 0 & 1 \end{bmatrix} \end{equation}

Rotación general

Para rotar sobre un punto cualquiera C = xc, yc, no necesariamente el origen, tenemos las siguientes ecuaciones:

Diagrama de la rotación general

\begin{equation} \begin{gathered} x' = x_c + (x - x_c)\cos(\theta) - (y - y_c)\sin(\theta) \\ y' = y_c + (x - x_c)\sin(\theta) + (y - y_c)\cos(\theta) \end{gathered} \end{equation}

Este problema se puede resolver fácilmente en tres pasos:

  1. Trasladar el punto C al origen, con una matriz de traslación T(-C).
  2. Aplicar la rotación alrededor de un origen, con la matriz de rotación R(θ).
  3. Regresar el punto C a su posición original, con una matriz de traslación T(C).

De esta forma, se consigue la rotación de un punto P dado un ángulo θ, alrededor de un punto arbitrario C = (xc, yc). En 2D se puede expresar como el producto matricial P’ = P × T(-C) × R(θ) × T(C), es decir:

\begin{equation} \begin{bmatrix} x' & y' & 1 \end{bmatrix} = \begin{bmatrix} x & y & 1 \end{bmatrix} \begin{bmatrix} 1 & 0 & 0 \\ 0 & 1 & 0 \\ -c_x & -c_y & 1 \end{bmatrix} \begin{bmatrix} \cos(\theta) & \sin(\theta) & 0 \\ -\sin(\theta) & \cos(\theta) & 0 \\ 0 & 0 & 1 \end{bmatrix} \begin{bmatrix} 1 & 0 & 0 \\ 0 & 1 & 0 \\ c_x & c_y & 1 \end{bmatrix} \end{equation}