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
Publicar un comentario