Una Transformación Afín es una transformación lineal seguida de una traslación, en términos de álgebra lineal la escribimos A X + B, donde X es el vector que se transforma, A la matriz que identifica la transformación lineal y B es la traslación. En el plano la podemos ver como:
equivalentemente
por tanto, tenemos un campo vectorial lineal sobre el plano
F (x, y) = ( a x + b y + c, d x + e y + f )
Dada una figura en el plano al aplicarle a todos sus puntos la función F obtenemos otra figura en el plano que corresponde a la imagen afín de la primera mediante F.
En el siguiente aplicativo vemos como es transformado el cuadrado unidad, de vértices (0,0), (1,0), (1,1) y (0,1), pudiendo manipular los valores a, b, c, d, e y f.
Los cambios que cada parámetro produce son:
a: aumenta o reduce horizontalmente
e: aumenta o reduce verticalmente
b: traslada el lado horizontal, que no tiene al origen, de forma horizontal
d: traslada el lado vertical, que no tiene al origen, de forma vertical
c: traslada la figura horizontalmente
f: traslada la figura verticalmente.
Una combinación de estos movimientos interesante, se tiene cuando:
que produce una rotación un ángulo
θ en el sentido contrario a las manecillas del reloj. Para el presente aplicativo se debe primero realizar la rotación del a figura y luego sí modificar los parámetros, ahora lo que queda es la invitación a experimentar:
Clear[a, b, c, d, e, f, x, y]
cuadrado = {{0, 0}, {1, 0}, {1, 1}, {0, 1}, {0, 0}};
Grid[{{Manipulate[theta = θ;
pol := Polygon[
Transpose[{{a, b}, {d, e}}.Transpose[cuadrado] + {c, f}]];
Graphics[{{Red, Line[cuadrado]}, pol},
PlotLabel -> "Area del poligono = " <> ToString[Area[pol]],
Axes -> True,
PlotRange -> {{-zoom + 1, zoom}, {-zoom + 1, zoom}}], {{zoom, 2,
"Zoom de la figura"}, 2, 1.2, ControlPlacement -> Top},
Style["Movimientos Lineales",
"Text"], {{a, Cos[θ Degree]}, -2, 2,
Appearance -> "Open"}, {{b, -Sin[θ Degree]}, -2, 2,
Appearance -> "Open"}, {{d, Sin[θ Degree]}, -2, 2,
Appearance -> "Open"}, {{e, Cos[θ Degree]}, -2, 2,
Appearance -> "Open"},
Style["Rotación", "Text", Small], {{θ, 0}, 0, 359.9,
Appearance -> "Labeled"},
Style["Traslaciones", "Text"], {{c, 0}, -2, 2,
Appearance -> "Open"}, {{f, 0}, -2, 2, Appearance -> "Open"},
ControlPlacement -> Left], MatrixForm[{{x'}, {y'}}], "=",
MatrixForm[{{a, b}, {d, e}}], MatrixForm[{{x}, {y}}], "+",
MatrixForm[{{c}, {f}}]}}]
Para aprender más sobre Mathematica ingrese
aquí sitio de aprendizaje de Wolfram o en mi website
ustamathematica.wixsite.com/basicas