En los gráficos por computadora, las matrices son herramientas fundamentales utilizadas para transformar objetos en el espacio 2D y 3D. Estas transformaciones incluyen traslación, rotación y escalado. Esta página explica cómo las matrices permiten estas operaciones con ejemplos matemáticos y una aplicación interactiva.
Antes de profundizar en las transformaciones, debemos comprender las coordenadas homogéneas. En un sistema 3D, representamos un punto como \((x, y, z, 1)\) y un vector como \((x, y, z, 0)\). Esto nos permite representar tanto transformaciones como traslaciones utilizando matrices.
La traslación mueve un objeto mediante un vector de desplazamiento \((t_x, t_y, t_z)\). La matriz de traslación es:
Para un punto \(P = (x, y, z, 1)\), el punto trasladado \(P'\) es:
La rotación transforma un objeto alrededor de un eje. Aquí están las matrices de rotación para los tres ejes principales:
Rotación alrededor del eje X por ángulo \(\theta\):
Rotación alrededor del eje Y por ángulo \(\theta\):
Rotación alrededor del eje Z por ángulo \(\theta\):
El escalado cambia el tamaño de un objeto mediante factores \((s_x, s_y, s_z)\). La matriz de escalado es:
En la práctica, a menudo aplicamos múltiples transformaciones en secuencia. La multiplicación de matrices nos permite combinar estas operaciones de manera eficiente.
Consideremos renderizar un cubo con vértices en \((\pm 1, \pm 1, \pm 1)\).
Queremos transformar un cubo de la siguiente manera:
La matriz de transformación compuesta sería:
\[ M = T(10, 5, -3) \cdot R_y(45^\circ{}) \cdot S(2, 1, 0.5) \]Sustituyendo las matrices:
\[ M = \begin{pmatrix} 1 & 0 & 0 & 10 \\ 0 & 1 & 0 & 5 \\ 0 & 0 & 1 & -3 \\ 0 & 0 & 0 & 1 \end{pmatrix} \cdot \begin{pmatrix} \cos(45^{\circ}) & 0 & \sin(45^{\circ}) & 0 \\ 0 & 1 & 0 & 0 \\ -\sin(45^{\circ}) & 0 & \cos(45^{\circ}) & 0 \\ 0 & 0 & 0 & 1 \end{pmatrix} \cdot \begin{pmatrix} 2 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & 0.5 & 0 \\ 0 & 0 & 0 & 1 \end{pmatrix} \]Usando \(\cos(45^{\circ}) = \sin(45^{\circ}) = \frac{\sqrt{2}}{2} \approx 0.7071\):
\[ M = \begin{pmatrix} 1 & 0 & 0 & 10 \\ 0 & 1 & 0 & 5 \\ 0 & 0 & 1 & -3 \\ 0 & 0 & 0 & 1 \end{pmatrix} \cdot \begin{pmatrix} 0.7071 & 0 & 0.7071 & 0 \\ 0 & 1 & 0 & 0 \\ -0.7071 & 0 & 0.7071 & 0 \\ 0 & 0 & 0 & 1 \end{pmatrix} \cdot \begin{pmatrix} 2 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & 0.5 & 0 \\ 0 & 0 & 0 & 1 \end{pmatrix} \]Multiplicando las últimas dos matrices primero:
\[ R_y(45^{\circ}) \cdot S(2, 1, 0.5) = \begin{pmatrix} 1.4142 & 0 & 0.3536 & 0 \\ 0 & 1 & 0 & 0 \\ -1.4142 & 0 & 0.3536 & 0 \\ 0 & 0 & 0 & 1 \end{pmatrix} \]Luego multiplicando con la matriz de traslación:
\[ M = \begin{pmatrix} 1.4142 & 0 & 0.3536 & 10 \\ 0 & 1 & 0 & 5 \\ -1.4142 & 0 & 0.3536 & -3 \\ 0 & 0 & 0 & 1 \end{pmatrix} \]Aplicando las tres transformaciones al vértice \( (1,1,1) \) por ejemplo, obtenemos un nuevo vértice en:
\[ M \cdot \begin{pmatrix} 1 \\ 1 \\ 1 \\ 1 \end{pmatrix} = \begin{pmatrix} 1.4142 & 0 & 0.3536 & 10 \\ 0 & 1 & 0 & 5 \\ -1.4142 & 0 & 0.3536 & -3 \\ 0 & 0 & 0 & 1 \end{pmatrix} \cdot \begin{pmatrix} 1 \\ 1 \\ 1 \\ 1 \end{pmatrix} = \begin{pmatrix}11.7678\\ 6\\ -4.0606\\ 1\end{pmatrix} \]Nota: En gráficos por computadora, las transformaciones típicamente se aplican de derecha a izquierda en la multiplicación de matrices, contrario al orden en que describiríamos las operaciones en español.
Las matrices proporcionan una forma elegante y eficiente de representar y combinar transformaciones en gráficos por computadora. Al usar coordenadas homogéneas y multiplicación de matrices, podemos implementar fácilmente escenas 3D complejas con rotación, traslación y escalado, todas operaciones fundamentales en los motores de renderizado modernos.
El poder del enfoque matricial es que cualquier secuencia de transformaciones puede combinarse en una sola matriz, que luego se puede aplicar eficientemente a todos los vértices de un modelo 3D.
En los gráficos por computadora, las matrices son herramientas fundamentales utilizadas para transformar objetos en el espacio 2D y 3D. Esta demostración interactiva te permite explorar cómo diferentes transformaciones afectan un objeto 3D y ver las matrices correspondientes.
Transforma el cubo que está en pantalla rotándolo, trasladándolo y escalándolo. Usa una transformación a la vez para comprender mejor cada transformación. Las matrices de transformación también se muestran al final de la página.
Antes de profundizar en las transformaciones, debemos comprender las coordenadas homogéneas. En un sistema 3D, representamos un punto como \((x, y, z, 1)\) y un vector como \((x, y, z, 0)\). Esto nos permite representar tanto transformaciones como traslaciones utilizando matrices.
La traslación mueve un objeto mediante un vector de desplazamiento \((t_x, t_y, t_z)\). La matriz de traslación es:
La rotación transforma un objeto alrededor de un eje. Aquí están las matrices de rotación para los tres ejes principales:
Rotación alrededor del eje X por ángulo \(\theta\):
Rotación alrededor del eje Y por ángulo \(\theta\):
Rotación alrededor del eje Z por ángulo \(\theta\):
El escalado cambia el tamaño de un objeto mediante factores \((s_x, s_y, s_z)\). La matriz de escalado es: