Códigos Matlab : Matrices de Transformación

 En esta sección se presentan algunos códigos, que pueden ser útiles para la comprensión de matrices de transformación en Matlab:


Código 1.

% Crear una matriz de transformación 2D para rotar 45 grados en sentido horario

angulo_rotacion = deg2rad(45);  % Convertir el ángulo de grados a radianes

matriz_rotacion = [cos(angulo_rotacion), -sin(angulo_rotacion);

                   sin(angulo_rotacion), cos(angulo_rotacion)];


% Punto de entrada (puede adaptarlo según sus necesidades)

punto_entrada = [1; 0];


% Aplicar la transformación a un punto

punto_salida = matriz_rotacion * punto_entrada;


% Mostrar los resultados

disp('Matriz de Rotación:');

disp(matriz_rotacion);


disp('Punto de Entrada:');

disp(punto_entrada);


disp('Punto de Salida Después de la Rotación:');

disp(punto_salida);


Código 2.


% Crear una matriz de transformación 3D para trasladar y rotar
traslacion_vector = [2; 3; 4];
angulo_rotacion = deg2rad(30);  % Ángulo de rotación en sentido horario alrededor del eje Z

% Matriz de traslación
matriz_traslacion = eye(4);
matriz_traslacion(1:3, 4) = traslacion_vector;

% Matriz de rotación alrededor del eje Z
matriz_rotacion = [cos(angulo_rotacion), -sin(angulo_rotacion), 0, 0;
                   sin(angulo_rotacion), cos(angulo_rotacion), 0, 0;
                   0, 0, 1, 0;
                   0, 0, 0, 1];

% Combinar las matrices de traslación y rotación
matriz_transformacion = matriz_traslacion * matriz_rotacion;

% Punto de entrada (coordenadas homogéneas)
punto_entrada = [1; 1; 1; 1];

% Aplicar la transformación a un punto
punto_salida = matriz_transformacion * punto_entrada;

% Mostrar los resultados
disp('Matriz de Transformación:');
disp(matriz_transformacion);

disp('Punto de Entrada:');
disp(punto_entrada);

disp('Punto de Salida Después de la Transformación:');
disp(punto_salida);

Código 3.
% Crear una matriz de transformación 2D para escalar y trasladar
factor_escala = 2;
traslacion_vector = [3; 1];

% Matriz de escala
matriz_escala = [factor_escala, 0;
                 0, factor_escala];

% Matriz de traslación
matriz_traslacion = eye(2);
matriz_traslacion(:, 3) = traslacion_vector;

% Combinar las matrices de escala y traslación
matriz_transformacion = matriz_escala * matriz_traslacion;

% Punto de entrada
punto_entrada = [1; 1];

% Aplicar la transformación a un punto
punto_salida = matriz_transformacion * punto_entrada;

% Mostrar los resultados
disp('Matriz de Transformación:');
disp(matriz_transformacion);

disp('Punto de Entrada:');
disp(punto_entrada);

disp('Punto de Salida Después de la Transformación:');
disp(punto_salida);

Código 4.

% Crear una matriz de transformación 3D para rotar alrededor de un eje y trasladar
angulo_rotacion = deg2rad(45);  % Ángulo de rotación en grados
eje_rotacion = [1; 1; 1];       % Eje arbitrario de rotación
traslacion_vector = [3; 2; 1];   % Vector de traslación

% Normalizar el vector del eje de rotación
eje_rotacion = eje_rotacion / norm(eje_rotacion);

% Matriz de rotación alrededor de un eje arbitrario (fórmula de Rodrigues)
matriz_rotacion = eye(3) * cos(angulo_rotacion) + (1 - cos(angulo_rotacion)) * (eje_rotacion * eje_rotacion') + sin(angulo_rotacion) * [0, -eje_rotacion(3), eje_rotacion(2); eje_rotacion(3), 0, -eje_rotacion(1); -eje_rotacion(2), eje_rotacion(1), 0];

% Matriz de traslación
matriz_traslacion = eye(4);
matriz_traslacion(1:3, 4) = traslacion_vector;

% Combinar las matrices de rotación y traslación
matriz_transformacion = [matriz_rotacion, traslacion_vector; 0, 0, 0, 1];

% Punto de entrada (coordenadas homogéneas)
punto_entrada = [1; 1; 1; 1];

% Aplicar la transformación a un punto
punto_salida = matriz_transformacion * punto_entrada;

% Mostrar los resultados
disp('Matriz de Transformación:');
disp(matriz_transformacion);

disp('Punto de Entrada:');
disp(punto_entrada);

disp('Punto de Salida Después de la Transformación:');
disp(punto_salida);

Comentarios