Professional Documents
Culture Documents
Autor:
V. J. M. J. / A. M. M. J.
ndice general
Introduccin
2.- Matrices de giro con ngulos de Euler en el mismo sentido de las agujas del reloj
3.- Matrices de giro con ngulos de Euler en el sentido opuesto de las agujas del reloj
6. Lneas del algoritmo de la funcin: rotacion3dejex (Dibujar la rotacin de un vector sobre el Eje X de un sistema 3D)
7. Lneas del algoritmo de la funcin: rotacion3dejey (Dibujar la rotacin de un vector sobre el Eje Y de un sistema 3D)
8. Lneas del algoritmo de la funcin: rotacion3dejez (Dibujar la rotacin de un vector sobre el Eje Z de un sistema 3D)
9. Lneas del algoritmo del programa: ROTACION3DEJESXYZN3 (Dibujar la rotacin secuencial de un vector sobre el Eje
X, el Eje Y, y el Eje Z de un sistema 3D)
Introduccin
Los ngulos de Euler constituyen un conjunto de tres coordenadas angulares que sirven para especificar la orientacin de un sistema de referencia de
ejes ortogonales, normalmente mvil, respecto a otro sistema de referencia de ejes ortogonales normalmente fijos.
Fueron introducidos por Leonhard Euler en mecnica del slido rgido para describir la orientacin de un sistema de referencia solidario con un slido
rgido en movimiento.
Dados dos sistemas de coordenadas xyz y XYZ con origen comn, es posible especificar la posicin de un sistema en trminos del
otro usando tres ngulos , y .
La definicin matemtica es esttica y se basa en escoger dos planos, uno en el sistema de referencia y otro en el triedro rotado.
En el esquema adjunto seran los planos xy y XY. Escogiendo otros planos se obtendran distintas convenciones alternativas, las
cuales se llaman de Tait-Bryan cuando los planos de referencia son no-homogneos (por ejemplo, xy y XY son homogneos,
mientras xy y XZ no lo son).
La interseccin de los planos coordenados xy y XY escogidos se llama lnea de nodos, y se usa para definir los tres ngulos:
es el ngulo entre el eje x y la lnea de nodos.
es el ngulo entre el eje z y el eje Z.
es el ngulo entre la lnea de nodos y el eje X.
Ms adelante se establecer que los tres ngulos de Euler descritos son los valores de las tres rotaciones intrnsecas que describen
el sistema.
1.- Rotaciones con respecto a los ejes X, Y y Z
2.- Matrices de giro con ngulos de Euler en el mismo sentido de las agujas del reloj
1 0 0 0 0
0 0 1 0 0
0 0 0 0 1
Matriz de giro en el Eje X Matriz de giro en el Eje Y Matriz de giro en el Eje Z
3.- Matrices de giro con ngulos de Euler en el sentido opuesto de las agujas del reloj
1 0 0 0 0
0 0 1 0 0
0 0 0 0 1
Matriz de giro en el Eje X Matriz de giro en el Eje Y Matriz de giro en el Eje Z
4. Lneas del algoritmo de la funcin: vector3d (Vector en tres dimensiones)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Programa que permite visualizar el grafico de vectores. Importante en esta funcion las lineas se encuentran comentadas
% Esta funcion puede graficar vectores 2D y vectores 3D con flechas dependiendo de las dimensiones de entrada
%
% Ejemplo de un vector 3D: p0 = [1 2 3]; % Coordenadas del punto inicial p0
% p1 = [4 5 6]; % Coordenadas del punto final p1
% color = 'r' % Color rojo seleccionado
% ancho = 10 % Grozor del vector
% vector3d(p0,p1,color,ancho)
%
% Ejemplo de un vector 2D: p0 = [1 2]; % Coordenadas del punto inicial p0
% p1 = [4 5]; % Coordenadas del punto final p1
% color = 'r' % Color rojo seleccionado
% ancho = 10 % Grozor del vector
% vector3d(p0,p1,color,ancho)
%
% Debe ingresar los valores de p0 p1 color tal como se indica lineas arriba en el Command Window
% Tipeando vector3d(p0,p1,color,ancho) en el Command Window se graficara la linea de un vector con una flecha
% desde el punto p0 al punto p1 en color rojo y con un grozor de 10
% Otra alternativa es que puede tipear directamente en el Command Window:
% vector3d([1 2 3],[4 5 6],'r',10) % Visulizara un vector en 3D
% vector3d([1 2],[4 5],'r',10) % Visulizara un vector en 2D
% Puede seleccionar cualquier color tan solo cambiando el tercer elemento de la funcion
% Puede seleccionar cualquier grozor tan solo cambiando el cuarto elemento de la funcion
% Si no desea trabajar directamente con la funcion, puede ejecutar el archivo VECTOR2D1.
%
% INGENIERO ELECTRONICO MONTEZA ZEVALLOS FIDEL TOMAS
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% p0, p1, color, ancho son parametros de entrada. Se dibuja una flecha que representa un vector desde p0 a p1
function vector3d(p0,p1,color,ancho)
p = p1-p0; % Restamos los valores del punto final (p1) menos los valores del punto inicial (p0)
alpha = 0.07; % Tamao de la cabeza de flecha relativo a la longitud del vector
beta = 0.2; % Ancho de la base de la cabeza de flecha relativo a su longitud
p = p1-p0; % Restamos los valores del punto final (p1) menos los valores del punto inicial (p0)
alpha = 0.1; % Tamao de la cabeza de flecha relativo a la longitud del vector
beta = 0.1; % Ancho de la base de la cabeza de flecha relativo a su longitud
hold on
plot(hu(:),hv(:),color,'LineWidth',ancho) % Se grafica la cabeza de flecha
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%Estas lineas se activaran SOLO si se ejecuta la funcion desde el Command Window tal como se sugiere en los comentarios de cabecera%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% grid on
% xlabel('EJE X','Color','r') % Dar nombre al eje X
% ylabel('EJE Y','Color','g') % Dar nombre al eje Y
% hold off
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
else
error('p0 y p1 deben tener las mismas dimensiones') % ALERTA para solo aceptar que p0 y p1 seab de igual extension
end
else
error('ATENCION: Esta funcion solo acepta vectores 2D o 3D') % ALERTA que indica los dos tipos de sistemas vectoriales a graficar
end
Se tipea la funcion vector3d en el Command Window con sus respectivos datos para obtener un vector 2D
function circunferencia1(puntox,puntoy,puntoz,x,y,z,radio,angulo1,angulo2,color,ancho)
if puntoz == 0 & puntoy == 1 & puntox == 1 % Graficamos el circulo en el plano XY (El Eje Z puede tener cualquier valor)
h = x; % Valor del Eje X (Punto central de la circunferencia)
i = y; % Valor del Eje Y (Punto central de la circunferencia)
j = z; % Valor del Eje Z (Punto central de la circunferencia)
end
if puntoz == 1 & puntoy == 0 & puntox == 1 % Graficamos el circulo en el plano XZ (El Eje Y puede tener cualquier valor)
h = x; % Valor del Eje X (Punto central de la circunferencia)
i = y; % Valor del Eje Y (Punto central de la circunferencia)
j = z; % Valor del Eje Z (Punto central de la circunferencia)
end
if puntoz == 1 & puntoy == 1 & puntox == 0 % Graficamos el circulo en el plano YZ (El Eje X puede tener cualquier valor)
h = x; % Valor del Eje X (Punto central de la circunferencia)
i = y; % Valor del Eje Y (Punto central de la circunferencia)
j = z; % Valor del Eje Z (Punto central de la circunferencia)
end
end
function rotacion3dejex(Angulo1)
Grafico de rotacion 3D sobre el Eje X (Color rojo) con los datos ingresados en la funcion rotacion3dejex
7. Lneas del algoritmo de la funcin: rotacion3dejey (Dibujar la rotacin de un vector sobre el Eje Y de un sistema 3D)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Archivo rotacion3dejey para hallar resultados de una rotacion en el Eje Y de un espacio 3D
% Se tienen un vector Px que va ha rotar sobre el eje X originando el vector Px1
% Se tienen un vector Pz que va ha rotar sobre el eje Z originando el vector Pz3
%
% Suponer que para un sistema de 3 dimensiones Px=[1 0 0]
% Suponer que para un sistema de 3 dimensiones Pz=[0 0 1]
%
% Puede trabajar igualmente con la funcion roty del Robotics toolbox de MATLAB
% Utiliza las funciones:
% circunferencia1 (Dibujar los angulos de rotacion)
% vector3d (Dibujar los vectores que rotan en el espacion 3D)
%
% Tipeando: rotacion3dejex(pi/4)
% Obtendra una rotacion del vector Px del Eje X y del vector Pz del Eje Z
%
% INGENIERO ELECTRONICO MONTEZA ZEVALLOS FIDEL TOMAS
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function rotacion3dejey(Angulo2)
vector3d(p0,Px1,'r',1) % Graficamos el desplazamiento del vector Px hasta su posicion final como vector Px1
hold on
vector3d(p0,Pz3,'b',1) % Graficamos el desplazamiento del vector Pz hasta su posicion final como vector Pz3
title(['ROTACION: Eje Y',' ','Angulo Theta2 = ' num2str(angulo2_grad)]); % Declaramos un titulo con los resultados de los angulos
axis([-(Longitud2+1) (Longitud2+1) -(Longitud2+1) (Longitud2+1) -(Longitud2+1) (Longitud2+1)]); % Establece sistema ejes fijo del vector Px
pause(0.01)
end
end
Grafico de rotacion 3D sobre el Eje Y (Color verde) con los datos ingresados en la funcion rotacion3dejey
8. Lneas del algoritmo de la funcin: rotacion3dejez (Dibujar la rotacin de un vector sobre el Eje Z de un sistema 3D)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Archivo rotacion3dejez para hallar resultados de una rotacion en el Eje Z de un espacio 3D
% Se tienen un vector Px que va ha rotar sobre el eje X originando el vector Px1
% Se tienen un vector Py que va ha rotar sobre el eje Z originando el vector Py2
%
% Suponer que para un sistema de 3 dimensiones Px=[1 0 0]
% Suponer que para un sistema de 3 dimensiones Py=[0 1 0]
%
% Puede trabajar igualmente con la funcion rotz del Robotics toolbox de MATLAB
% Utiliza las funciones:
% circunferencia1 (Dibujar los angulos de rotacion)
% vector3d (Dibujar los vectores que rotan en el espacion 3D)
%
% Tipeando: rotacion3dejez(pi/4)
% Obtendra una rotacion del vector Px del Eje X y del vector Py del Eje Y
%
% INGENIERO ELECTRONICO MONTEZA ZEVALLOS FIDEL TOMAS
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function rotacion3dejez(Angulo3)
vector3d(p0,Px1,'r',1) % Graficamos el desplazamiento del vector Px hasta su posicion final como vector Px1
hold on
vector3d(p0,Py2,'g',1) % Graficamos el desplazamiento del vector Py hasta su posicion final como vector Py2
Grafico de rotacion 3D sobre el Eje Z (Color azul) con los datos ingresados en la funcion rotacion3dejez
9. Lneas del algoritmo del programa: ROTACION3DEJESXYZN3 (Dibujar la rotacin secuencial de un vector sobre el Eje X
(Color rojo), el Eje Y (Color verde), y el Eje Z (Color azul)de un sistema 3D)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Archivo ROTACION3DEJESXYZN3 para verificar una rotacion en los ejes X-Y-Z de un espacio 3D
% IMPORTANTE: Recordar que la matriz de rotacion general X-Y-Z en el mismo sentido a las agujas del reloj del espacio 3D
% se logra de la multiplicacion de matrices en el siguiente orden: Primero Z*Y - Segundo (Z*Y)*X Obteniendose una matriz de rotacion
% Se tienen un vector Puvw que va ha rotar sobre el eje X originando el vector Pxyz1
% Luego este vector girara sobre el eje Y originando el vector Pxyz2 y
% Finalmente hara un nuevo giro sobre el eje Z originando el vector Pxyz3
% Suponer que para un sistema de 3 dimensiones Puvw=[1 0 0] con Theta1=90 (Primer giro) Theta2=90 (Segundo giro) Theta3=45 (Tercer giro).
% Encontrar en forma grfica las coordenadas con respecto al sistema xyz.
% Solucion 1: Para Theta=90 se debe obtener Pxyz1=[0 0 1]
% Solucion 2: Para Theta=45 se debe obtener Pxyz2=[1 0 0]
% Solucion 3: Para Theta=90 se debe obtener Pxyz3=[0.7 0.7 0]. Este es resultado de la posicion final del vector
% Importante este archivo se usa con la funcion vector3d para n vectores en 3D
% Puede trabajar igualmente con las funciones rotx roty rotz del Robotics toolbox de MATLAB
% INGENIERO ELECTRONICO MONTEZA ZEVALLOS FIDEL TOMAS
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Puvw=[0;1;0]; % Coordenadas punto final del primer vector en el sistema de referencia uvw
p0 = [0;0;0]; % Coordenadas punto inicial del primer vector de inicio (Centro de coordenadas)
Angulo1 = pi/2; % Primer angulo a girar (90)
Angulo2 = pi/2; % Segundo angulo a girar (90)
Angulo3 = pi/4; % Tercer angulo a girar (45)
end
pause(0.1)
% Segundo giro en el eje Y del vector inicial Pxyz1
for Theta2=0:0.01:Angulo2
angulo2_rad = acos(cos(Theta2)); % Angulo en radianes
angulo2_grad = (angulo2_rad*360)/(2*pi); % Conversion del angulo en radianes a grados (Theta2)
%Ry = [cos(Theta2) 0 -sin(Theta2);0 1 0;sin(Theta2) 0 cos(Theta2)]; % Matriz de rotacion en el eje Y en el sentido opuesto a las agujas del reloj del espacio 3D
% Ry = [cos(Theta2) 0 sin(Theta2);0 1 0;-sin(Theta2) 0 cos(Theta2)]; % Matriz de rotacion en el eje Y en el mismo sentido a las agujas del reloj del espacio 3D
% Pxyz2 = Ry*Pxyz1 % Rotacion del vector Puvw en el eje Y originando el vector Pyxz1
Pxyz2 = (roty(Theta2))*Pxyz1 % Ecuacion con la funcion roty semejante a la matriz Ry
Longitud2 = norm(Pxyz2); % Hallamos la norma del vector Pyxz2
end
pause(0.1)
% Tercer giro en el eje Z del vector inicial Pxyz2
for Theta3=0:0.01:Angulo3
angulo3_rad = acos(cos(Theta3)); % Angulo en radianes
angulo3_grad = (angulo3_rad*360)/(2*pi); % Conversion del angulo en radianes a grados (Theta3)
%Rz = [cos(Theta3) sin(Theta3) 0;-sin(Theta3) cos(Theta3) 0;0 0 1]; % Matriz de rotacion en el eje Z en el sentido opuesto a las agujas del reloj del espacio 3D
% Rz = [cos(Theta3) -sin(Theta3) 0;sin(Theta3) cos(Theta3) 0;0 0 1]; % Matriz de rotacion en el eje Z en el mismo sentido a las agujas del reloj del espacio 3D
% Pxyz3 = Rz*Pxyz2 % Rotacion del vector Pyxz2 en el eje Z originando el vector Pyxz3
Pxyz3 = (rotz(Theta3))*Pxyz2 % Ecuacion con la funcion rotx semejante a la matriz Rz
Longitud3 = norm(Pxyz3); % Hallamos la norma del vector Pxyz3
axis([-Longitud3 Longitud3 -Longitud3 Longitud3 -Longitud3 Longitud3]); % Establecemos un sistema de ejes fijo para el vector Puvw
pause(0.01)
end
Grafico de la primera rotacion de un vector 3D (Color rojo) con los datos del programa ROTACION3DEJESXYZN3
Grafico de la segunda rotacion de un vector 3D (Color verde) con los datos del programa ROTACION3DEJESXYZN3
Grafico de la tercera rotacion de un vector 3D (Color azul) con los datos del programa ROTACION3DEJESXYZN3