Una matriz mueve todos los puntos del plano
Una transformación lineal mueve cada punto de un plano de una forma fija: lo gira, lo estira o lo refleja. Una matriz de 2 por 2 la describe entera.
Así un juego gira a un personaje y así un programa de dibujo cambia el tamaño de una imagen. Al acabar sabrás leer una matriz y aplicarla a un punto.
Al final de esta lección
Nota
Puedo leer una matriz como un giro, una escala o un reflejo.
Palabras clave
| Palabra | Qué significa |
|---|---|
| Transformación | una regla que mueve cada punto del plano |
| Giro | mover un punto en círculo alrededor del origen |
| Escala | estirar o encoger cada eje |
| Reflejo | dar la vuelta a un punto como en un espejo |
| Composición | aplicar una transformación y después otra |
Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.
Las columnas dicen dónde caen los ejes
Un punto del plano es un vector [x, y]. Los dos puntos más simples son [1, 0], un paso a la derecha, y [0, 1], un paso hacia arriba.
La matriz por [1, 0] da su primera columna. La matriz por [0, 1] da su segunda. Si sabes dónde caen esos dos puntos, sabes dónde cae cualquier otro.
Ejemplo resuelto: tres matrices y un punto
| Matriz | Qué hace | Dónde cae [1, 0] | Dónde cae [2, 3] |
|---|---|---|---|
| [[0, -1], [1, 0]] | Gira 90 grados | [0, 1] | [-3, 2] |
| [[2, 0], [0, 3]] | Estira por 2 a lo ancho y por 3 a lo alto | [2, 0] | [4, 9] |
| [[1, 0], [0, -1]] | Refleja arriba y abajo | [1, 0] | [2, -3] |
Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.
Aplica una matriz a tres puntos
# Una matriz de giro de 90 grados y tres puntos del plano.
giro = [[0, -1], [1, 0]]
puntos = [[1, 0], [0, 1], [2, 3]]
for punto in puntos:
x = giro[0][0] * punto[0] + giro[0][1] * punto[1]
y = giro[1][0] * punto[0] + giro[1][1] * punto[1]
print(punto, "pasa a", [x, y])
# Cambia la matriz por [[2, 0], [0, 3]] y vuelve a ejecutar.
# ¿Qué pasa ahora con cada punto?
Gira tres puntos 90 grados
docker exec jupyter python3 -c "import numpy as np; R=np.array([[0,-1],[1,0]]); P=np.array([[1,0],[0,1],[2,3]]); print(([email protected]).tolist())"Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
Un giro cualquiera usa seno y coseno
Para girar un ángulo cualquiera, la matriz usa dos números del ángulo: el coseno y el seno. Es [[coseno, -seno], [seno, coseno]].
Con 30 grados, el coseno es 0,866 y el seno es 0,5. El punto [1, 0] cae en [0,866, 0,5]: se ha elevado medio paso. Un giro nunca cambia la longitud de un vector.
Gira [1, 0] treinta grados
docker exec jupyter python3 -c "import numpy as np; t=np.radians(30); R=np.array([[np.cos(t),-np.sin(t)],[np.sin(t),np.cos(t)]]); print(np.round([email protected]([1,0]),3).tolist())"Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
Componer dos transformaciones es multiplicar sus matrices
Si primero escalas y después giras, el resultado es una sola matriz: la del giro por la de la escala. La que se aplica primero se escribe a la derecha, junto al vector.
Con la escala S y el giro R, R por S escala primero y gira después. S por R hace lo contrario y casi nunca da lo mismo.
Ejemplo resuelto: el orden cambia el resultado
| Orden | Matriz final | Dónde cae [1, 0] |
|---|---|---|
| Escalar y girar (R por S) | [[0, -3], [2, 0]] | [1, 0] pasa a [2, 0] y luego a [0, 2] |
| Girar y escalar (S por R) | [[0, -2], [3, 0]] | [1, 0] pasa a [0, 1] y luego a [0, 3] |
Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.
Las dos composiciones
docker exec jupyter python3 -c "import numpy as np; R=np.array([[0,-1],[1,0]]); S=np.array([[2,0],[0,3]]); print((R@S).tolist(), (S@R).tolist(), (R@[email protected]([1,0])).tolist())"Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
Un error muy común
Advertencia
Mucha gente cree que, al componer, la primera transformación se escribe a la izquierda. Es al revés: la que se aplica primero queda junto al vector, a la derecha. Lee el producto de derecha a izquierda.
Para ir más lejos: un triángulo girado
Un triángulo son tres puntos. Aplica el giro de 90 grados a los tres y los nuevos puntos forman el mismo triángulo, girado.
Dibuja en papel cuadriculado [0, 0], [4, 0] y [0, 2]. Gira cada punto con la matriz de giro y dibuja el resultado.