If you're seeing this message, it means we're having trouble loading external resources on our website.

Si estás detrás de un filtro de páginas web, por favor asegúrate de que los dominios *.kastatic.org y *.kasandbox.org estén desbloqueados.

Contenido principal

Transformaciones múltiples

Ahora que ya has visto lo básico sobre traslación, rotación y homotecia (escalar), hablemos de usarlas todas juntas y algunas de las complejidades que nos saltamos al principio.

El orden es importante

Cuando haces varias transformaciones, el orden hace la diferencia. Una rotación seguida de un traslación, seguida de una homotecia no dará el mismo resultado que una traslación seguida de una rotación, seguida de una homotecia. Aquí hay un programa de ejemplo que lo demuestra:
Qué orden debes usar depende del efecto que desees. Solo ten en cuenta que estás moviendo el papel cuadriculado, no el objeto, y debes encontrar un orden que te funcione.

La matriz de transformación

Cada vez que haces una rotación, traslación u homotecia, la información requerida para hacer la transformación se acumula en una tabla de números. Esta tabla, o matriz, tiene pocos renglones y columnas, sin embargo, gracias al milagro de las matemáticas, contiene toda la información necesaria para hacer cualquier serie de transformaciones. Y es por eso que pushMatrix() y popMatrix() tienen esa palabra en su nombre.
¿Qué hay de las partes push y pop en los nombres? Estas vienen de un concepto de computadora conocido como pila (stack en inglés), que funciona como un dispensador de bandejas en una cafetería. Cuando alguien devuelve una bandeja a la pila, su peso empuja la plataforma hacia abajo. Cuando alguien necesita una bandeja, la toma de la parte superior de la pila y las bandejas restantes suben un poco.
De manera parecida, pushMatrix() pone el estado actual del sistema de coordenadas en la parte superior del área de memoria y popMatrix() jala de nuevo ese estado. El ejemplo anterior usó pushMatrix() y popMatrix() para asegurarse de que el sistema coordenado estuviera "limpio" antes de cada parte del dibujo. En todos los demás ejemplos, las llamadas a esas funciones no eran realmente necesarias porque no hubo transformaciones subsecuentes, pero no hace daño guardar y restaurar el estado de la cuadrícula. Como una mejor práctica, siempre utiliza esas funciones cuando estés haciendo cualquier transformación.
También hay una función resetMatrix() que restaura la matriz a su estado original (la "matriz identidad"), pero las funciones push y pop por lo general son la mejor opción.
¿Quieres aprender o repasar cómo funcionan las matrices en álgebra? Puedes pasar por el área de Matrices en Khan Academy, en particular, la sección de Transformaciones geométricas con matrices.

Este artículo es una adaptación de Transformaciones 2D hecha por J David Eisenberg, usada bajo una licencia Creative Commons Attribution-NonCommercial-ShareAlike.

¿Quieres unirte a la conversación?

¿Sabes inglés? Haz clic aquí para ver más discusiones en el sitio en inglés de Khan Academy.