Está en la página 1de 46

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Programa de una


funcion que permite graficar el desplazamiento de funciones 2D o 3D en tiempo real
% % Si desea ejecutar el programa con una funcion f(x). Seguir los siguientes
pasos: % 1.- Tipear una funcion en la celda denominada "f(x)=", por ejemplo: sin(x)
% 2.- En la celda denominada "Angulo de rotacion" tipear el valor del angulo que se
desea rotar (Puede ser de mas de una vuelta) negativo o positivo % 3.- En el
selector denominado "Elija una de tres trayectorias" hacer clik para elegir una
determinada % 4.- En el selector denominado "Rotar con respecto a" hacer clik para
elegir un eje de giro determinado % 5.- Si en el paso anterior selecciono Rotar con
respecto a EJE ARBITRARIO debe ingresar un valor numerico en cada celda de
"Componentes del eje arbitrario" % Por el contrario si solo selecciono EJE X -
EJE Y o EJE Z. Entonces puede dejar en blanco estas celdas % 6.- En el selector
HScroll denominado "VELOCIDAD (0-20)" debe deslizarlo para seleccionar el valor de
la velocidad de rotacion % 7.- Listo ahora puede ejecutar la tecla denomida
"INICIAR SIMULACION" y podra apreciar como su funcion f(x) sigue una trayectoria
determinada % % Si desea ejecutar el programa con una funcion f(x,y). Seguir los
siguientes pasos: % 1.- Tipear una funcion en la celda denominada "f(x,y)=", por
ejemplo: sin(x)*cos(x) % 2.- En la celda denominada "Angulo de rotacion" tipear el
valor del angulo que se desea rotar (Puede ser de mas de una vuelta) negativo o
positivo % 3.- En el selector denominado "Elija una de tres trayectorias" hacer
clik para elegir una determinada % 4.- En el selector denominado "Rotar con
respecto a" hacer clik para elegir un eje de giro determinado % 5.- Si en el paso
anterior selecciono Rotar con respecto a EJE ARBITRARIO debe ingresar un valor
numerico en cada celda de "Componentes del eje arbitrario" % Por el contrario
si solo selecciono EJE X - EJE Y o EJE Z. Entonces puede dejar en blanco estas
celdas % 6.- En el selector HScroll denominado "VELOCIDAD (0-20)" debe deslizarlo
para seleccionar el valor de la velocidad de rotacion % 7.- Listo ahora puede
ejecutar la tecla denomida "INICIAR SIMULACION" y podra apreciar como su funcion
f(x,y) sigue una trayectoria determinada % % % Tambien se debe recordar las
siguientes matrices de rotacion 3D para cada Eje y para cada tipo de angulo
(Positivo o Negativo). Para estas matrices el angulo debe ser considerado en
radianes % % Matrices que generan una rotacion en el sentido opuesto a las agujas
del reloj. Por tanto generan un angulo trigonometrico positivo % Rx = [1 0 0;0
cos(th) sin(th);0 -sin(th) cos(th)] Es la matriz de rotacion en el eje X en el
sentido opuesto a las agujas del reloj del espacio 3D % Ry = [cos(th) 0 -sin(th);0
1 0;sin(th) 0 cos(th)] Es la matriz de rotacion en el eje Y en el sentido opuesto a
las agujas del reloj del espacio 3D % Rz = [cos(th) sin(th) 0;-sin(th) cos(th) 0;0
0 1] Es la matriz de rotacion en el eje Z en el sentido opuesto a las agujas del
reloj del espacio 3D % % % Matrices que generan una rotacion en el mismo sentido a
las agujas del reloj. Por tanto generan un angulo trigonometrico negativo % Rx = [1
0 0;0 cos(th) -sin(th);0 sin(th) cos(th)] Es la matriz de rotacion en el eje X en
el mismo sentido a las agujas del reloj del espacio 3D % Ry = [cos(th) 0 sin(th);0
1 0;-sin(th) 0 cos(th)] Es la matriz de rotacion en el eje Y en el mismo sentido a
las agujas del reloj del espacio 3D % Rz = [cos(th) -sin(th) 0;sin(th) cos(th) 0;0
0 1] Es la matriz de rotacion en el eje Z en el mismo sentido a las agujas del
reloj del espacio 3D % % % NOTA.- En este proyecto se deben considerar las matrices
que generan una rotacion en el mismo sentido al de las agujas del reloj tanto para
% movimientos en el mismo sentido de las agujas como para movientos en sentido
opuesto. La explicacion es la siguiente: % Al momento de ingresar el angulo este
debe ser ingresado con signo de forma tal que el programa automaticamente reemplaza
este valor en el % angulo de la matriz generando automaticamente el tipo de
rotacion se�alada por el usuario. % % Para un mejor entendimiento, las lineas se
encuentran comentadas % % INGENIERO ELECTRONICO MONTEZA ZEVALLOS FIDEL TOMAS % %%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Estas lineas de
programacion se encargan de ejecutar la funcion directamente desde la ventana
Editor (Diferente a cuando una funcion debe % ejecutarse desde la ventana del
Command Window). Confirmar que al momento de iniciar la simulacion el nombre del
archivo aparece como una funcion % ejecutada en la ventana del Command Window
tambien. Y llama al mismo tiempo al archivo graficar.fig function varargout =
graficar(varargin) % GRAFICAR MATLAB lineas de codigo para el archivo graficar.fig
% GRAFICAR, by itself, creates a new GRAFICAR or raises the existing singleton*.
% % H = GRAFICAR returns the handle to a new GRAFICAR or the handle to the
existing singleton*. % % GRAFICAR('CALLBACK',hObject,eventData,handles,...) calls
the local function named CALLBACK in graficar.m with the given input arguments. %
% GRAFICAR('Property','Value',...) creates a new GRAFICAR or raises the existing
singleton*. Starting from the left, property value pairs are % applied to the
GUI before graficar_OpeningFcn gets called. An unrecognized property name or
invalid value makes property application stop. % All inputs are passed to
graficar_OpeningFcn via varargin. % % *See GUI Options on GUIDE's Tools menu.
Choose "GUI allows only one instance to run (singleton)". % % See also: GUIDE,
GUIDATA, GUIHANDLES gui_Singleton = 1; gui_State =
struct('gui_Name',mfilename,'gui_Singleton',gui_Singleton,'gui_OpeningFcn',@grafica
r_OpeningFcn,'gui_OutputFcn',@graficar_OutputFcn,'gui_LayoutFcn',[],'gui_Callback',
[]); if nargin && ischar(varargin{1}) % A && B (B
es unicamente evaluado si A es verdadero) gui_State.gui_Callback =
str2func(varargin{1}); % El comando str2func(S) convierte a una
funcion la variable tipo cadena S end if nargout [varargout{1:nargout}] =
gui_mainfcn(gui_State, varargin{:}); else gui_mainfcn(gui_State, varargin{:});
end % Executes just before graficar is made visible. hObject, eventdata,
handles, varargin son parametros de entrada. function graficar_OpeningFcn(hObject,
eventdata, handles, varargin) % This function has no output args, see OutputFcn. %
hObject handle to figure % eventdata reserved - to be defined in a future
version of MATLAB % handles structure with handles and user data (see GUIDATA) %
varargin command line arguments to graficar (see VARARGIN) % Choose default
command line output for graficar handles.output = hObject; % Update handles
structure guidata(hObject, handles); % UIWAIT makes graficar wait for user
response (see UIRESUME) % uiwait(handles.figure1); % Outputs from this function
are returned to the command line. function varargout = graficar_OutputFcn(hObject,
eventdata, handles) % varargout cell array for returning output args (see
VARARGOUT); % hObject handle to figure % eventdata reserved - to be defined in
a future version of MATLAB % handles structure with handles and user data (see
GUIDATA) % Get default command line output from handles structure varargout{1} =
handles.output; % edit1 es la ventana en la interface de GUI donde se ingresa
la funcion del tipo f(x,y) para graficos 3D function edit1_Callback(hObject,
eventdata, handles) % Funcion en 3D global variables;
% Esta variable se utiliza para determinar el tipo de grafico. Si es Uno 2D y si es
Dos 3D global x; global y; global z; variables = 2;
% Vale '2' si es una funcion del tipo f(x,y) x = linspace(-2*pi,2*pi,25);
% Arreglo para x de 25 valores desde -2pi a 2pi y = linspace(-2*pi,2*pi,25);
% Arreglo para y de 25 valores desde -2pi a 2pi s = get(handles.edit1,'string');
f = vectorize(inline(s));
[x,y] = meshgrid(x,y); z = f(x,y); % Graficar directamente despues de teclear la
funcion f(x,y) handles.axes1; surfc(x,y,z) axis([-20 20 -20 20 -20 20]); %
edit1 es la ventana en la interface de GUI donde se ingresa la funcion del tipo
f(x,y) para graficos 3D function edit1_CreateFcn(hObject, eventdata, handles) %
hObject handle to edit1 (see GCBO) % eventdata reserved - to be defined in a
future version of MATLAB % handles empty - handles not created until after all
CreateFcns called % Hint: edit controls usually have a white background on
Windows. % See ISPC and COMPUTER. if ispc &&
isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white'); end % edit2 es la ventana en la
interface de GUI donde se ingresa el valor del angulo por el cual se rotara la
funcion para graficos 2D y 3D function edit2_Callback(hObject, eventdata, handles)
global angulo1; % Declaramos la
variable angulo1 del tipo global angulo = get(handles.edit2,'string');
% La variable angulo captura el valor ingresado en la Caja edit2 en tipo cadena
angulo1 = str2num(angulo); % Se realiza la
conversion del valor tipo cadena de la variable angulo al tipo numerico % edit2
es la ventana en la interface de GUI donde se ingresa el valor del angulo por el
cual se rotara la funcion para graficos 2D y 3D function edit2_CreateFcn(hObject,
eventdata, handles) % hObject handle to edit2 (see GCBO) % eventdata reserved -
to be defined in a future version of MATLAB % handles empty - handles not
created until after all CreateFcns called % Hint: edit controls usually have a
white background on Windows. % See ISPC and COMPUTER. if ispc &&
isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white'); end % edit3 es la ventana en la
interface de GUI donde se ingresa la funcion del tipo f(x) para graficos 2D
function edit3_Callback(hObject, eventdata, handles) % Funcion en 2D
global variables; % Esta variable se
utiliza para determinar el tipo de grafico. Si es Uno 2D y si es Dos 3D global x;
global y; % Esta variable y
no tiene uso en esta parte del programa. Se reserva para posterior uso global z;
% Esta variable z no tiene uso en esta parte del programa. Se reserva para
posterior uso global rotar; %
Esta variable rotar no tiene uso en esta parte del programa. Se reserva para
posterior uso global salidaxx; %
Esta variable se utilizara para guardar los conjuntos de datos de la funci�n y
despu�s se multiplicara por la matriz de rotaci�n global salidayy;
% Esta variable se utilizara para guardar los conjuntos de datos de la funci�n y
despu�s se multiplicara por la matriz de rotaci�n global salidazz;
% Esta variable se utilizara para guardar los conjuntos de datos de la funci�n y
despu�s se multiplicara por la matriz de rotaci�n variables = 1;
% Vale '1' si es una funcion del tipo f(x) s = get(handles.edit3,'string'); f
= vectorize(inline(s)); x = -10:0.5:10;
% La variable x va desde -10 hasta 10 en particiones de 0.5 (Se originan 41
valores) u = f(x); t = 90;
% Vectores del tama�o de la variable x que se rellenan con CEROS para
inicializarlos y despues utilizarlos. salidaxx = zeros(size(x)); salidayy =
zeros(size(x)); salidazz = zeros(size(x)); plot(x,u) % Vectorizar valores de
la funcion f(x) for ii = 1:size(x,2) b = [x(ii) u(1,ii)] ; vr = b;
salidaxx(1,ii) = vr(1); salidayy(1,ii) = vr(2); end % edit3 es la ventana
en la interface de GUI donde se ingresa la funcion del tipo f(x) para graficos 2D
function edit3_CreateFcn(hObject, eventdata, handles) % hObject handle to edit3
(see GCBO) % eventdata reserved - to be defined in a future version of MATLAB %
handles empty - handles not created until after all CreateFcns called % Hint:
edit controls usually have a white background on Windows. % See ISPC and
COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white'); end % pushbutton4 es la tecla de
Ejecucion en la interface de GUI donde se inicia la simulacion de las funciones del
tipo f(x) para graficos 2D o o f(x,y)para graficos 3D function
pushbutton4_Callback(hObject, eventdata, handles) % Boton de ejecucion
denominado pushbutton4 con la etiqueta INICIAR global angulo1;
% Variable angulo1 para representar el Angulo de rotacion global variables;
% Esta variable se utiliza para determinar el tipo de grafico. Si es Uno 2D y si es
Dos 3D global rotar; % Variable
principal que dara inicio a cada Case (Son cuatro Case) global x; global y; global
z; global salidaxx; % Esta variable
se utilizara para guardar los conjuntos de datos de la funci�n y despu�s se
multiplicara por la matriz de rotaci�n global salidayy;
% Esta variable se utilizara para guardar los conjuntos de datos de la funci�n y
despu�s se multiplicara por la matriz de rotaci�n global salidazz;
% Esta variable se utilizara para guardar los conjuntos de datos de la funci�n y
despu�s se multiplicara por la matriz de rotaci�n global tray1;
% Variable tray1 para representar el tipo de la Trayectoria (Uno, Dos o Tres)
global res1; % Variable res1 es
la velocidad de animacion. Positivo se rota en sentido a las agujas del reloj.
Negativo en sentido contrario global eje_a;
% Variable eje_a para representar el vector unitario con direcci�n del vector
arbitrario global xk1; %
Variable xk1 es la componente X del vector arbitrario global yk1;
% Variable yk1 es la componente Y del vector arbitrario global zk1;
% Variable zk1 es la componente Z del vector arbitrario global m;
% Variable m para obtener de la magnitud del vector arbitrario %%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%% % Se presenta la estructura basica de programacion: %%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % switch rotar
Rotar con respecto a X, Y o Z % % Case1
Todo el case 1 es rotar con respecto a X (2D o 3D) % variables = 1
2D respecto a X % angulo1 > 0 Angulo de
rotacion positivo % tray1 = 1 Se elige
trayectoria 1 considerando el angulo positivo %
tray1 = 2 Se elige trayectoria 2 considerando el angulo positivo %
tray1 = 3 Se elige trayectoria 3 considerando el angulo positivo %
angulo1 < 0 Angulo de rotacion negativo
% tray1 = 1 Se elige trayectoria 1
considerando el angulo negativo % tray1 = 2
Se elige trayectoria 2 considerando el angulo negativo %
tray1 = 3 Se elige trayectoria 3 considerando el angulo negativo %
variables = 2 3D respecto a X %
angulo1 > 0 Angulo de rotacion positivo %
tray1 = 1 Se elige trayectoria 1 considerando el angulo positivo %
tray1 = 2 Se elige trayectoria 2 considerando el angulo positivo %
tray1 = 3 Se elige trayectoria 3 considerando el angulo positivo %
angulo1 < 0 Angulo de rotacion negativo %
tray1 = 1 Se elige trayectoria 1 considerando el angulo negativo %
tray1 = 2 Se elige trayectoria 2 considerando el angulo negativo %
tray1 = 3 Se elige trayectoria 3 considerando el angulo negativo % %
Case2 Todo el case 2 es rotar con respecto a Y
(2D o 3D) % variables = 1 2D respecto a Y %
angulo1 > 0 Angulo de rotacion positivo %
tray1 = 1 Se elige trayectoria 1 considerando el angulo positivo %
tray1 = 2 Se elige trayectoria 2 considerando el angulo positivo %
tray1 = 3 Se elige trayectoria 3 considerando el angulo positivo %
angulo1 < 0 Angulo de rotacion negativo %
tray1 = 1 Se elige trayectoria 1 considerando el angulo negativo %
tray1 = 2 Se elige trayectoria 2 considerando el angulo negativo %
tray1 = 3 Se elige trayectoria 3 considerando el angulo negativo %
variables = 2 3D respecto a Y %
angulo1 > 0 Angulo de rotacion positivo %
tray1 = 1 Se elige trayectoria 1 considerando el angulo positivo %
tray1 = 2 Se elige trayectoria 2 considerando el angulo positivo %
tray1 = 3 Se elige trayectoria 3 considerando el angulo positivo %
angulo1 < 0 Angulo de rotacion negativo %
tray1 = 1 Se elige trayectoria 1 considerando el angulo negativo %
tray1 = 2 Se elige trayectoria 2 considerando el angulo negativo %
tray1 = 3 Se elige trayectoria 3 considerando el angulo negativo % %
Case3 Todo el case 3 es rotar con respecto a Z
(2D o 3D) % variables = 1 2D respecto a Z %
angulo1 > 0 Angulo de rotacion positivo %
tray1 = 1 Se elige trayectoria 1 considerando el angulo positivo %
tray1 = 2 Se elige trayectoria 2 considerando el angulo positivo %
tray1 = 3 Se elige trayectoria 3 considerando el angulo positivo %
angulo1 < 0 Angulo de rotacion negativo %
tray1 = 1 Se elige trayectoria 1 considerando el angulo negativo %
tray1 = 2 Se elige trayectoria 2 considerando el angulo negativo %
tray1 = 3 Se elige trayectoria 3 considerando el angulo negativo %
variables = 2 3D respecto a Z %
angulo1 > 0 Angulo de rotacion positivo %
tray1 = 1 Se elige trayectoria 1 considerando el angulo positivo %
tray1 = 2 Se elige trayectoria 2 considerando el angulo positivo %
tray1 = 3 Se elige trayectoria 3 considerando el angulo positivo %
angulo1 < 0 Angulo de rotacion negativo %
tray1 = 1 Se elige trayectoria 1 considerando el angulo negativo %
tray1 = 2 Se elige trayectoria 2 considerando el angulo negativo %
tray1 = 3 Se elige trayectoria 3 considerando el angulo negativo % %
Case4 Todo el case 4 es rotar con respecto un
Eje arbitrario (2D 0 3D) % variables = 1 2D
respecto a un Eje arbitrario % angulo1 > 0
Angulo de rotacion positivo % tray1 = 1 Se
elige trayectoria 1 considerando el angulo positivo %
tray1 = 2 Se elige trayectoria 2 considerando el angulo positivo %
tray1 = 3 Se elige trayectoria 3 considerando el angulo positivo %
angulo1 < 0 Angulo de rotacion negativo %
tray1 = 1 Se elige trayectoria 1 considerando el angulo negativo %
tray1 = 2 Se elige trayectoria 2 considerando el angulo negativo %
tray1 = 3 Se elige trayectoria 3 considerando el angulo negativo %
variables = 2 3D respecto a un Eje arbitrario %
angulo1 > 0 Angulo de rotacion positivo
% tray1 = 1 Se elige trayectoria 1
considerando el angulo positivo % tray1 = 2
Se elige trayectoria 2 considerando el angulo positivo %
tray1 = 3 Se elige trayectoria 3 considerando el angulo positivo %
angulo1 < 0 Angulo de rotacion negativo %
tray1 = 1 Se elige trayectoria 1 considerando el angulo negativo %
tray1 = 2 Se elige trayectoria 2 considerando el angulo negativo %
tray1 = 3 Se elige trayectoria 3 considerando el angulo negativo % %%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%% switch rotar
% Rotar con respecto a X, Y o Z case 1
% Todo el case 1 es rotar con respecto a X (2D o 3D) if variables == 1
% Si es igual a 1 es en 2D (Rotar en 2D con respecto a X) co =
[salidaxx; salidayy; salidazz]; % Esta variable co es una matriz
que se utilizara para guardar los conjuntos de datos de la funci�n if
angulo1 >= 0 % Se elige angulo de rotacion
positivo en 2D if tray1 == 1 %
Se elige trayectoria 1 (Teniendo en cuenta el angulo positivo)
t = 0:360; % Se dibuja primero la trayectoria que
seguira la funcion r = 3;
% Este sera el radio de la Trayectoria de la circunferencia xc
= r*cosd(t); % Primera parte ecuacion de trayectoria
que se grafica. El comando cosd (angulo en sexagesimales) yc =
r*sind(t); % Segunda parte ecuacion de trayectoria que
se grafica. El comando sind (angulo en sexagesimales) zc =
ones(1, length(xc))*5; % Tercera parte ecuacion de trayectoria que
se grafica for th = 0:res1:angulo1 % La
variable res1 es la velocidad de animacion y para rotar en el mismo sentido agujas
del reloj debe ser positivo y1 = r*sind(th);
% La trayectoria que se seguira sera de una circunferencia hasta donde llegue th
x1 = r*cosd(th); % La trayectoria que se seguira sera de una
circunferencia hasta donde llegue th z1 = 5;
% Esta es la altura en donde se dibujara la trayectoria de la circunferencia
Pc = [0;0;z1]; % Punto inicial Pc del radio de la
circunferencia de la Trayectoria Po = [0;0;0];
% Punto inicial Po del vector de posicion (Centro de coordenadas)
Pu = [r;0;z1]; % Punto final Pu del vector posicion fijo de
referencia Ps = [x1;y1;z1]; % Punto
final Ps del vector posicion que esta siguiendo la Trayectoria
th_rad = (th*pi)/180; % Conversion del angulo th en sexagesimal a
th_rad en radianes para la funcion rotz y rotx Pz =
(rotz(th_rad))*Pu; % Ecuacion con la funcion rotz considerando valores
de su angulo en radianes semejante a la matriz Rz
%co_R = (rotx(th_rad))*co; % Ecuacion con la funcion rotx considerando
valores de su angulo en radianes semejante a la matriz Rx
Rx = [1 0 0;0 cosd(th) -sind(th);0 sind(th) cosd(th)]; % Matriz rotacion eje X
en mismo sentido agujas del reloj y medida del angulo en sexagesimales
co_R = Rx*co; % Rotacion del vector
co en el eje X originando el vector co_R
plot3(co_R(1,:)+x1,co_R(2,:)+y1,co_R(3,:)+z1,'r',xc,yc,zc) % Se suma a cada
coordenada de la funcion, las coordenadas de la trayectoria.
% De esta forma parecera como si la funcion estuviera siguiendo a la trayectoria
hold on % Activamos que el grafico anterior se
mantenga vector3d(Po,Ps,'r',1) %
Graficamos el vector posicion que esta siguiendo la Trayectoria (Color Rojo)
hold on % Activamos que el grafico anterior se
mantenga vector3d(Po,Pu,'b',1) %
Graficamos el vector posicion fijo de referencia (Color Azul)
hold on % Activamos que el grafico anterior se
mantenga plot3(0,0,0,'mo') %
Graficamos el centro de coordenadas del Punto Po (Color Magenta)
hold on % Activamos que el grafico anterior se
mantenga plot3(0,0,z1,'mo') %
Graficamos el centro de la Trayectoria del Punto Pc de la circunferencia (Color
Magenta) hold on %
Activamos que el grafico anterior se mantenga
vector3d(Pc,Pz,'g',1) % Graficamos el desplazamiento del vector del
radio de la circunferencia (Color Verde) xlabel('EJE
X','Color','r') % Dar nombre al eje X
ylabel('EJE Y','Color','g') % Dar nombre al eje Y
zlabel('EJE Z','Color','b') % Dar nombre al eje Z
title(['Rotacion 2D en el Eje X en la Trayectoria 1',' ','Angulo giro positivo =
' num2str(th)]); % Declaramos un titulo con los resultados de los angulos
grid on % Activamos las rejillas
axis([-8 8 -8 8 -8 8]) % Establecemos un sistema de ejes fijo X, Y y
Z como minimos y maximos pause(0.01)
end end if tray1 == 2
% Se elige trayectoria 2 (Teniendo en cuenta el angulo positivo)
t = 0:360; % Se dibuja primero la trayectoria que
seguira la funcion r = 3;
% Aqui la variable r sera parte de la ecuacion de la trayectoria a seguir
xc = r*cosd(5*t); % Primera parte ecuacion de
trayectoria que se grafica. El comando cosd (angulo en sexagesimales)
yc = r*sind(t); % Segunda parte ecuacion de
trayectoria que se grafica. El comando sind (angulo en sexagesimales)
zc = ones(1, length(xc))*5; % Tercera parte ecuacion de
trayectoria que se grafica
for th = 0:res1:angulo1 % La variable res1
es la velocidad de animacion y para rotar en el mismo sentido agujas del reloj debe
ser positivo y1 = r*sind(th); %
Primera parte de la ecuacion de la trayectoria que se seguira hasta donde llegue th
x1 = r*cosd(5*th); % Segunda parte de la ecuacion de la
trayectoria que se seguira hasta donde llegue th z1 =
5; % Esta es la altura en donde se dibujara la
trayectoria Pc = [0;0;z1]; %
Punto inicial Pc del radio de la circunferencia de la Trayectoria
Po = [0;0;0]; % Punto inicial Po del vector de posicion
(Centro de coordenadas) Pu = [r;0;z1];
% Punto final Pu del vector posicion fijo de referencia
Ps = [x1;y1;z1]; % Punto final Ps del vector posicion que esta
siguiendo la Trayectoria th_rad = (th*pi)/180;
% Conversion del angulo th en sexagesimal a th_rad en radianes para la funcion rotx
co_R = (rotx(th_rad))*co; % Ecuacion con la funcion rotx semejante a la
matriz Rx %Rx = [1 0 0;0 cosd(th) -sind(th);0 sind(th)
cosd(th)]; % Matriz de rotacion en el eje 'X' en el mismo sentido a las agujas
del reloj %co_R = Rx*co;
% Rotacion del vector co en el eje X originando el vector co_R
plot3(co_R(1,:)+x1,co_R(2,:)+y1,co_R(3,:)+z1,'r',xc,yc,zc) % Se suma a cada
coordenada de la funcion, las coordenadas de la trayectoria.
% De esta forma parecera como si la funcion estuviera siguiendo a la trayectoria
hold on % Activamos que el grafico anterior se
mantenga vector3d(Po,Ps,'r',1) %
Graficamos el vector posicion que esta siguiendo la Trayectoria (Color Rojo)
hold on % Activamos que el grafico anterior se
mantenga vector3d(Po,Pu,'b',1) %
Graficamos el vector posicion fijo de referencia (Color Azul)
hold on % Activamos que el grafico anterior se
mantenga plot3(0,0,0,'mo') %
Graficamos el centro de coordenadas del Punto Po (Color Magenta)
hold on % Activamos que el grafico anterior se
mantenga plot3(0,0,z1,'mo') %
Graficamos el centro de la Trayectoria del Punto Pc de la circunferencia (Color
Magenta) hold on %
Activamos que el grafico anterior se mantenga
vector3d(Pc,Ps,'g',1) % Graficamos el desplazamiento del vector del
radio de la circunferencia (Color Verde) xlabel('EJE
X','Color','r') % Dar nombre al eje X
ylabel('EJE Y','Color','g') % Dar nombre al eje Y
zlabel('EJE Z','Color','b') % Dar nombre al eje Z
title(['Rotacion 2D en el Eje X en la Trayectoria 2',' ','Angulo giro positivo =
' num2str(th)]); % Declaramos un titulo con los resultados de los angulos
grid on % Activamos las rejillas
axis([-8 8 -8 8 -8 8]) % Establecemos un sistema de ejes fijo X, Y y
Z como minimos y maximos pause(0.01)
end end if tray1 == 3
% Se elige trayectoria 3 (Teniendo en cuenta el angulo positivo)
t = 0:360; % Se dibuja primero la trayectoria que
seguira la funcion r = 3;
% Aqui la variable r sera parte de la ecuacion de la trayectoria a seguir
xc = 2*r*cosd(t); % Primera parte ecuacion de
trayectoria que se grafica. El comando cosd (angulo en sexagesimales)
yc = r*sind(5*t); % Segunda parte ecuacion de
trayectoria que se grafica. El comando sind (angulo en sexagesimales)
zc = ones(1, length(xc))*5; % Tercera parte ecuacion de
trayectoria que se grafica for th = 0:res1:angulo1
% La variable res1 es la velocidad de animacion y para rotar en el mismo sentido
agujas del reloj debe ser positivo y1 =
r*sind(5*th); % Primera parte de la ecuacion de la trayectoria
que se seguira hasta donde llegue th x1 = 2*r*cosd(th);
% Segunda parte de la ecuacion de la trayectoria que se seguira hasta donde llegue
th z1 = 5; % Esta es la
altura en donde se dibujara la trayectoria
Pc = [0;0;z1]; % Punto inicial Pc del radio de la
circunferencia de la Trayectoria Po = [0;0;0];
% Punto inicial Po del vector de posicion (Centro de coordenadas)
Pu = [2*r;0;z1]; % Punto final Pu del vector posicion fijo de
referencia Ps = [x1;y1;z1]; % Punto
final Ps del vector posicion que esta siguiendo la Trayectoria
th_rad = (th*pi)/180; % Conversion del angulo th en sexagesimal a
th_rad en radianes para la funcion rotx
co_R = (rotx(th_rad))*co; % Ecuacion con la funcion rotx semejante a la
matriz Rx %Rx = [1 0 0;0 cosd(th) -sind(th);0 sind(th)
cosd(th)]; % Matriz de rotacion en el eje 'X' en el mismo sentido a las agujas
del reloj %co_R = Rx*co;
% Rotacion del vector co en el eje X originando el vector co_R
plot3(co_R(1,:)+x1,co_R(2,:)+y1,co_R(3,:)+z1,'r',xc,yc,zc) % Se suma a cada
coordenada de la funcion, las coordenadas de la trayectoria.
% De esta forma parecera como si la funcion estuviera siguiendo a la trayectoria
hold on % Activamos que el grafico anterior se
mantenga vector3d(Po,Ps,'r',1) %
Graficamos el vector posicion que esta siguiendo la Trayectoria (Color Rojo)
hold on % Activamos que el grafico anterior se
mantenga vector3d(Po,Pu,'b',1) %
Graficamos el vector posicion fijo de referencia (Color Azul)
hold on % Activamos que el grafico anterior se
mantenga
plot3(0,0,0,'mo') % Graficamos el
centro de coordenadas del Punto Po (Color Magenta) hold
on % Activamos que el grafico anterior se mantenga
plot3(0,0,z1,'mo') % Graficamos el centro de la Trayectoria del
Punto Pc de la circunferencia (Color Magenta) hold on
% Activamos que el grafico anterior se mantenga
vector3d(Pc,Ps,'g',1) % Graficamos el desplazamiento del vector del
radio de la circunferencia (Color Verde) xlabel('EJE
X','Color','r') % Dar nombre al eje X
ylabel('EJE Y','Color','g') % Dar nombre al eje Y
zlabel('EJE Z','Color','b') % Dar nombre al eje Z
title(['Rotacion 2D en el Eje X en la Trayectoria 3',' ','Angulo giro positivo =
' num2str(th)]); % Declaramos un titulo con los resultados de los angulos
grid on % Activamos las rejillas
axis([-8 8 -8 8 -8 8]) % Establecemos un sistema de ejes fijo X, Y y
Z como minimos y maximos pause(0.01)
end end end if angulo1 < 0
% Se elige angulo negativo 2D if tray1 == 1
% Se elige trayectoria 1 (Teniendo en cuenta el angulo negativo)
t = 0:360; % Se dibuja primero la trayectoria que
seguira la funcion r = 3;
% Este sera el radio de la Trayectoria de la circunferencia xc
= r*cosd(t); % Primera parte ecuacion de trayectoria
que se grafica. El comando cosd (angulo en sexagesimales) yc =
r*sind(t); % Segunda parte ecuacion de trayectoria que
se grafica. El comando sind (angulo en sexagesimales) zc =
ones(1, length(xc))*5; % Tercera parte ecuacion de trayectoria que
se grafica for th = 0:-res1:angulo1 % La
variable res1 es velocidad animacion y para rotar en el sentido opuesto agujas del
reloj se multiplica por '-1' y1 = r*sind(th);
% La trayectoria que se seguira sera de una circunferencia hasta donde llegue th
x1 = r*cosd(th); % La trayectoria que se seguira sera de una
circunferencia hasta donde llegue th z1 = 5;
% Esta es la altura en donde se dibujara la trayectoria de la circunferencia
Pc = [0;0;z1]; % Punto inicial Pc del radio de la
circunferencia de la Trayectoria Po = [0;0;0];
% Punto inicial Po del vector de posicion (Centro de coordenadas)
Pu = [r;0;z1]; % Punto final Pu del vector posicion fijo de
referencia Ps = [x1;y1;z1]; % Punto
final Ps del vector posicion que esta siguiendo la Trayectoria
th_rad = (th*pi)/180; % Conversion del angulo th en sexagesimal a
th_rad en radianes para la funcion rotz y rotx Pz =
(rotz(th_rad))*Pu; % Ecuacion con la funcion rotz considerando valores
de su angulo en radianes semejante a la matriz Rz
%co_R = (rotx(th_rad))*co; % Ecuacion con la funcion rotx considerando
valores de su angulo en radianes semejante a la matriz Rx
Rx = [1 0 0;0 cosd(th) -sind(th);0 sind(th) cosd(th)]; % Matriz de rotacion en
el eje 'X' en el mismo sentido a las agujas del reloj
co_R = Rx*co; % Rotacion del vector co
en el eje X originando el vector co_R
plot3(co_R(1,:)+x1,co_R(2,:)+y1,co_R(3,:)+z1,'r',xc,yc,zc) % Se suma a cada
coordenada de la funcion, las coordenadas de la trayectoria.
% De esta forma parecera como si la funcion estuviera siguiendo a la trayectoria
hold on % Activamos que el grafico anterior se
mantenga vector3d(Po,Ps,'r',1) %
Graficamos el vector posicion que esta siguiendo la Trayectoria (Color Rojo)
hold on % Activamos que el grafico anterior se
mantenga vector3d(Po,Pu,'b',1) %
Graficamos el vector posicion fijo de referencia (Color Azul)
hold on % Activamos que el grafico anterior se
mantenga plot3(0,0,0,'mo') %
Graficamos el centro de coordenadas del Punto Po (Color Magenta)
hold on % Activamos que el grafico anterior se
mantenga plot3(0,0,z1,'mo') %
Graficamos el centro de la Trayectoria del Punto Pc de la circunferencia (Color
Magenta) hold on %
Activamos que el grafico anterior se mantenga
vector3d(Pc,Pz,'g',1) % Graficamos el desplazamiento del vector del
radio de la circunferencia (Color Verde) xlabel('EJE
X','Color','r') % Dar nombre al eje X
ylabel('EJE Y','Color','g') % Dar nombre al eje Y
zlabel('EJE Z','Color','b') % Dar nombre al eje Z
title(['Rotacion 2D en el Eje X en la Trayectoria 1',' ','Angulo giro negativo =
' num2str(th)]); % Declaramos un titulo con los resultados de los angulos
grid on % Activamos las rejillas
axis([-8 8 -8 8 -8 8]) % Establecemos un sistema de ejes fijo X, Y y
Z como minimos y maximos pause(0.01)
end end if tray1 == 2
% Se elige trayectoria 2 (Teniendo en cuenta el angulo negativo)
t = 0:360; % Se dibuja primero la trayectoria que
seguira la funcion r = 3;
% Aqui la variable r sera parte de la ecuacion de la trayectoria a seguir
xc = r*cosd(5*t); % Primera parte ecuacion de
trayectoria que se grafica. El comando cosd (angulo en sexagesimales)
yc = r*sind(t); % Segunda parte
ecuacion de trayectoria que se grafica. El comando sind (angulo en sexagesimales)
zc = ones(1, length(xc))*5; % Tercera parte ecuacion de
trayectoria que se grafica for th = 0:-res1:angulo1
% La variable res1 es velocidad animacion y para rotar en el sentido opuesto agujas
del reloj se multiplica por '-1' y1 = r*sind(th);
% Primera parte de la ecuacion de la trayectoria que se seguira hasta donde llegue
th x1 = r*cosd(5*th); % Segunda parte
de la ecuacion de la trayectoria que se seguira hasta donde llegue th
z1 = 5; % Esta es la altura en donde se dibujara la
trayectoria Pc = [0;0;z1];
% Punto inicial Pc del radio de la circunferencia de la Trayectoria
Po = [0;0;0]; % Punto inicial Po del vector de posicion
(Centro de coordenadas) Pu = [r;0;z1];
% Punto final Pu del vector posicion fijo de referencia
Ps = [x1;y1;z1]; % Punto final Ps del vector posicion que esta
siguiendo la Trayectoria th_rad = (th*pi)/180;
% Conversion del angulo th en sexagesimal a th_rad en radianes para la funcion rotx
co_R = (rotx(th_rad))*co; % Ecuacion con la funcion rotx semejante a la
matriz Rx %Rx = [1 0 0;0 cosd(th) -sind(th);0 sind(th)
cosd(th)]; % Matriz de rotacion en el eje 'X' en el mismo sentido a las agujas
del reloj %co_R = Rx*co;
% Rotacion del vector co en el eje X originando el vector co_R
plot3(co_R(1,:)+x1,co_R(2,:)+y1,co_R(3,:)+z1,'r',xc,yc,zc) % Se suma a cada
coordenada de la funcion, las coordenadas de la trayectoria.
% De esta forma parecera como si la funcion estuviera siguiendo a la trayectoria
hold on % Activamos que el grafico anterior se
mantenga vector3d(Po,Ps,'r',1) %
Graficamos el vector posicion que esta siguiendo la Trayectoria (Color Rojo)
hold on % Activamos que el grafico anterior se
mantenga vector3d(Po,Pu,'b',1) %
Graficamos el vector posicion fijo de referencia (Color Azul)
hold on % Activamos que el grafico anterior se
mantenga plot3(0,0,0,'mo') %
Graficamos el centro de coordenadas del Punto Po (Color Magenta)
hold on % Activamos que el grafico anterior se
mantenga plot3(0,0,z1,'mo') %
Graficamos el centro de la Trayectoria del Punto Pc de la circunferencia (Color
Magenta) hold on %
Activamos que el grafico anterior se mantenga
vector3d(Pc,Ps,'g',1) % Graficamos el desplazamiento del vector del
radio de la circunferencia (Color Verde) xlabel('EJE
X','Color','r') % Dar nombre al eje X
ylabel('EJE Y','Color','g') % Dar nombre al eje Y
zlabel('EJE Z','Color','b') % Dar nombre al eje Z
title(['Rotacion 2D en el Eje X en la Trayectoria 2',' ','Angulo giro negativo =
' num2str(th)]); % Declaramos un titulo con los resultados de los angulos
grid on % Activamos las rejillas
axis([-8 8 -8 8 -8 8]) % Establecemos un sistema de ejes fijo X, Y y
Z como minimos y maximos pause(0.01)
end end if tray1 == 3
% Se elige trayectoria 3 (Teniendo en cuenta el angulo negativo)
t = 0:360; % Se dibuja primero la trayectoria que
seguira la funcion r = 3;
% Aqui la variable r sera parte de la ecuacion de la trayectoria a seguir
xc = 2*r*cosd(t); % Primera parte ecuacion de
trayectoria que se grafica. El comando cosd (angulo en sexagesimales)
yc = r*sind(5*t); % Segunda parte ecuacion de
trayectoria que se grafica. El comando sind (angulo en sexagesimales)
zc = ones(1, length(xc))*5; % Tercera parte ecuacion de
trayectoria que se grafica for th = 0:-res1:angulo1
% La variable res1 es velocidad animacion y para rotar en el sentido opuesto agujas
del reloj se multiplica por '-1' y1 = r*sind(5*th);
% Primera parte de la ecuacion de la trayectoria que se seguira hasta donde llegue
th x1 = 2*r*cosd(th); % Segunda parte
de la ecuacion de la trayectoria que se seguira hasta donde llegue th
z1 = 5; % Esta es la altura en donde se dibujara la
trayectoria Pc = [0;0;z1];
% Punto inicial Pc del radio de la circunferencia de la Trayectoria
Po = [0;0;0]; % Punto inicial Po del vector de posicion
(Centro de coordenadas) Pu = [2*r;0;z1];
% Punto final Pu del vector posicion fijo de referencia
Ps = [x1;y1;z1]; % Punto final Ps del vector posicion que esta
siguiendo la Trayectoria th_rad = (th*pi)/180;
% Conversion del angulo th en sexagesimal a th_rad en radianes para la funcion rotx
co_R = (rotx(th_rad))*co; % Ecuacion con la funcion rotx semejante a la
matriz Rx %Rx = [1 0 0;0 cosd(th) -sind(th);0 sind(th)
cosd(th)]; % Matriz de rotacion en el eje 'X' en el mismo sentido a las agujas
del reloj %co_R = Rx*co;
% Rotacion del vector co en el eje X originando el vector co_R
plot3(co_R(1,:)+x1,co_R(2,:)+y1,co_R(3,:)+z1,'r',xc,yc,zc) % Se suma a cada
coordenada de la funcion, las coordenadas de la trayectoria.
% De esta forma parecera como si la funcion estuviera siguiendo a la trayectoria
hold on % Activamos que el grafico anterior se
mantenga vector3d(Po,Ps,'r',1) %
Graficamos el vector posicion que esta siguiendo la Trayectoria (Color Rojo)
hold on % Activamos que el grafico anterior se
mantenga
vector3d(Po,Pu,'b',1) % Graficamos el
vector posicion fijo de referencia (Color Azul) hold on
% Activamos que el grafico anterior se mantenga
plot3(0,0,0,'mo') % Graficamos el centro de coordenadas del
Punto Po (Color Magenta) hold on
% Activamos que el grafico anterior se mantenga
plot3(0,0,z1,'mo') % Graficamos el centro de la Trayectoria del
Punto Pc de la circunferencia (Color Magenta) hold on
% Activamos que el grafico anterior se mantenga
vector3d(Pc,Ps,'g',1) % Graficamos el desplazamiento del vector del
radio de la circunferencia (Color Verde) xlabel('EJE
X','Color','r') % Dar nombre al eje X
ylabel('EJE Y','Color','g') % Dar nombre al eje Y
zlabel('EJE Z','Color','b') % Dar nombre al eje Z
title(['Rotacion 2D en el Eje X en la Trayectoria 3',' ','Angulo giro negativo =
' num2str(th)]); % Declaramos un titulo con los resultados de los angulos
grid on % Activamos las rejillas
axis([-8 8 -8 8 -8 8]) % Establecemos un sistema de ejes fijo X, Y y
Z como minimos y maximos pause(0.01)
end end end salidaxx =
co_R(1,:); salidayy = co_R(2,:); salidazz = co_R(3,:);
end if variables == 2 % Si es
igual a 2 es en 3D (Rotar en 3D con respecto a X) if angulo1 >= 0
% Se elige angulo positivo 2D if tray1 == 1
% Se elige trayectoria 1 (Teniendo en cuenta el angulo positivo)
t = 0:360; % Se dibuja primero la trayectoria que
seguira la funcion r = 3;
% Este sera el radio de la Trayectoria de la circunferencia xc
= r*cosd(t); % Primera parte ecuacion de trayectoria
que se grafica. El comando cosd (angulo en sexagesimales) yc =
r*sind(t); % Segunda parte ecuacion de trayectoria que
se grafica. El comando sind (angulo en sexagesimales) zc =
ones(1, length(xc))*5; % Tercera parte ecuacion de trayectoria que
se grafica for th = 0:res1:angulo1 % La
variable res1 es la velocidad de animacion y para rotar en el mismo sentido agujas
del reloj debe ser positivo y1 = r*sind(th);
% Primera parte de la ecuacion que describe la Trayectoria
x1 = r*cosd(th); % Segunda parte de la ecuacion de la
trayectoria que se seguira hasta donde llegue th z1 = 5;
% Esta es la altura en donde se dibujara la trayectoria for
c = 1:25 for f = 1:25
Rx = [1 0 0;0 cosd(th) -sind(th);0 sind(th) cosd(th)]; % Matriz de rotacion en
el eje 'X' en el mismo sentido a las agujas del reloj
vector_z = [x(f,c);y(f,c);z(f,c)]; Rot_x =
Rx*vector_z; X(f,c) = Rot_x(1);
Y(f,c) = Rot_x(2); Z(f,c) = Rot_x(3);
end end surf(X+x1,Y+y1,Z+z1)
% Se grafica la superficie 3D con el comando surf xlabel('EJE
X','Color','r') % Dar nombre al eje X
ylabel('EJE Y','Color','g') % Dar nombre al eje Y
zlabel('EJE Z','Color','b') % Dar nombre al eje Z
title(['Rotacion 3D en el Eje X en la Trayectoria 1',' ','Angulo giro positivo =
' num2str(th)]); % Declaramos un titulo con los resultados de los angulos
grid on % Activamos las rejillas
axis([-20 20 -20 20 -20 20]); % Establecemos un sistema de ejes fijo
X, Y y Z como minimos y maximos pause(0.1);
end end if tray1 == 2
% Se elige trayectoria 2 (Teniendo en cuenta el angulo positivo)
t = 0:360; % Se dibuja primero la trayectoria que
seguira la funcion r = 3;
% Aqui la variable r sera parte de la ecuacion de la trayectoria a seguir
xc = r*cosd(5*t); % Primera parte ecuacion de
trayectoria que se grafica. El comando cosd (angulo en sexagesimales)
yc = r*sind(t); % Segunda parte ecuacion de
trayectoria que se grafica. El comando sind (angulo en sexagesimales)
zc = ones(1, length(xc))*5; % Tercera parte ecuacion de
trayectoria que se grafica for th = 0:res1:angulo1
% La variable res1 es la velocidad de animacion y para rotar en el mismo sentido
agujas del reloj debe ser positivo y1 = r*sind(th);
% Primera parte de la ecuacion de la trayectoria que se seguira hasta donde llegue
th x1 = r*cosd(5*th); % Segunda parte
de la ecuacion de la trayectoria que se seguira hasta donde llegue th
z1 = 5; % Esta es la
altura en donde se dibujara la trayectoria for c = 1:25
for f = 1:25 Rx = [1 0 0;0 cosd(th) -sind(th);0
sind(th) cosd(th)]; % Matriz de rotacion en el eje 'X' en el mismo sentido a
las agujas del reloj vector_z =
[x(f,c);y(f,c);z(f,c)]; Rot_x = Rx*vector_z;
X(f,c) = Rot_x(1); Y(f,c) = Rot_x(2);
Z(f,c) = Rot_x(3); end end
surf(X+x1,Y+y1,Z+z1) % Se grafica la superficie 3D con el
comando surf xlabel('EJE X','Color','r') % Dar
nombre al eje X ylabel('EJE Y','Color','g') %
Dar nombre al eje Y zlabel('EJE Z','Color','b')
% Dar nombre al eje Z title(['Rotacion 3D en el Eje X en la
Trayectoria 2',' ','Angulo giro positivo = ' num2str(th)]); % Declaramos un
titulo con los resultados de los angulos grid on
% Activamos las rejillas axis([-20 20 -20 20 -20 20]);
% Establecemos un sistema de ejes fijo X, Y y Z como minimos y maximos
pause(0.1); end end
if tray1 == 3 % Se elige trayectoria 3 (Teniendo
en cuenta el angulo positivo) t = 0:360;
% Se dibuja primero la trayectoria que seguira la funcion r =
3; % Aqui la variable r sera parte de la
ecuacion de la trayectoria a seguir xc = 2*r*cosd(t);
% Primera parte ecuacion de trayectoria que se grafica. El comando cosd (angulo en
sexagesimales) yc = r*sind(5*t); %
Segunda parte ecuacion de trayectoria que se grafica. El comando sind (angulo en
sexagesimales) zc = ones(1, length(xc))*5; %
Tercera parte ecuacion de trayectoria que se grafica for th =
0:res1:angulo1 % La variable res1 es la velocidad de animacion
y para rotar en el mismo sentido agujas del reloj debe ser positivo
y1 = r*sind(5*th); % Primera parte de la ecuacion de la
trayectoria que se seguira hasta donde llegue th x1 =
2*r*cosd(th); % Segunda parte de la ecuacion de la
trayectoria que se seguira hasta donde llegue th z1 = 5;
% Esta es la altura en donde se dibujara la trayectoria for
c = 1:25 for f = 1:25
Rx = [1 0 0;0 cosd(th) -sind(th);0 sind(th) cosd(th)]; % Matriz de rotacion en
el eje 'X' en el mismo sentido a las agujas del reloj
vector_z = [x(f,c);y(f,c);z(f,c)]; Rot_x =
Rx*vector_z; X(f,c) = Rot_x(1);
Y(f,c) = Rot_x(2); Z(f,c) = Rot_x(3);
end end surf(X+x1,Y+y1,Z+z1)
% Se grafica la superficie 3D con el comando surf xlabel('EJE
X','Color','r') % Dar nombre al eje X
ylabel('EJE Y','Color','g') % Dar nombre al eje Y
zlabel('EJE Z','Color','b') % Dar nombre al eje Z
title(['Rotacion 3D en el Eje X en la Trayectoria 3',' ','Angulo giro positivo =
' num2str(th)]); % Declaramos un titulo con los resultados de los angulos
grid on % Activamos las rejillas
axis([-20 20 -20 20 -20 20]); % Establecemos un sistema de ejes fijo
X, Y y Z como minimos y maximos pause(0.1);
end end end if angulo1 <
0 % Se elige angulo negativo 2D
if tray1 == 1 % Se elige trayectoria 1 (Teniendo
en cuenta el angulo negativo) t = 0:360;
% Se dibuja primero la trayectoria que seguira la funcion r =
3; % Este sera el radio de la Trayectoria de
la circunferencia xc = r*cosd(t);
% Primera parte ecuacion de trayectoria que se grafica. El comando cosd (angulo en
sexagesimales) yc = r*sind(t); %
Segunda parte ecuacion de trayectoria que se grafica. El comando sind (angulo en
sexagesimales) zc = ones(1, length(xc))*5; %
Tercera parte ecuacion de trayectoria que se grafica for th =
0:-res1:angulo1 % La variable res1 es velocidad animacion y
para rotar en el sentido opuesto agujas del reloj se multiplica por '-1'
y1 = r*sind(th); % Primera parte de la ecuacion de la
trayectoria que se seguira hasta donde llegue th x1 =
r*cosd(th); % Segunda parte de la ecuacion de la
trayectoria que se seguira hasta donde llegue th z1 = 5;
% Esta es la altura en donde se dibujara la trayectoria
for c = 1:25 for f = 1:25
Rx = [1 0 0;0 cosd(th) -sind(th);0 sind(th) cosd(th)]; % Matriz de rotacion en
el eje 'X' en el mismo sentido a las agujas del reloj
vector_z = [x(f,c);y(f,c);z(f,c)]; Rot_x =
Rx*vector_z; X(f,c) = Rot_x(1);
Y(f,c) = Rot_x(2); Z(f,c) = Rot_x(3);
end end surf(X+x1,Y+y1,Z+z1)
% Se grafica la superficie 3D con el comando surf xlabel('EJE
X','Color','r') % Dar nombre al eje X
ylabel('EJE Y','Color','g') % Dar nombre al eje Y
zlabel('EJE Z','Color','b') % Dar nombre al eje Z
title(['Rotacion 3D en el Eje X en la Trayectoria 1',' ','Angulo giro negativo =
' num2str(th)]); % Declaramos un titulo con los resultados de los angulos
grid on % Activamos las rejillas
axis([-20 20 -20 20 -20 20]); % Establecemos un sistema de ejes fijo
X, Y y Z como minimos y maximos pause(0.1);
end end if tray1 == 2
% Se elige trayectoria 2 (Teniendo en cuenta el angulo negativo)
t = 0:360; % Se dibuja primero la trayectoria que
seguira la funcion r = 3;
% Aqui la variable r sera parte de la ecuacion de la trayectoria a seguir
xc = r*cosd(5*t); % Primera parte ecuacion de
trayectoria que se grafica. El comando cosd (angulo en sexagesimales)
yc = r*sind(t); % Segunda parte ecuacion de
trayectoria que se grafica. El comando sind (angulo en sexagesimales)
zc = ones(1, length(xc))*5; % Tercera parte ecuacion de
trayectoria que se grafica for th = 0:-res1:angulo1
% La variable res1 es velocidad animacion y para rotar en el sentido opuesto agujas
del reloj se multiplica por '-1' y1 = r*sind(th);
% Primera parte de la ecuacion de la trayectoria que se seguira hasta donde llegue
th x1 = r*cosd(5*th); % Segunda parte
de la ecuacion de la trayectoria que se seguira hasta donde llegue th
z1 = 5; % Esta es la altura en donde se dibujara
la trayectoria for c = 1:25 for
f = 1:25 Rx = [1 0 0;0 cosd(th) -sind(th);0
sind(th) cosd(th)]; % Matriz de rotacion en el eje 'X' en el mismo sentido a
las agujas del reloj vector_z =
[x(f,c);y(f,c);z(f,c)]; Rot_x = Rx*vector_z;
X(f,c) = Rot_x(1); Y(f,c) = Rot_x(2);
Z(f,c) = Rot_x(3); end end
surf(X+x1,Y+y1,Z+z1) % Se grafica la superficie 3D con el
comando surf xlabel('EJE X','Color','r') % Dar
nombre al eje X ylabel('EJE Y','Color','g') %
Dar nombre al eje Y zlabel('EJE Z','Color','b')
% Dar nombre al eje Z title(['Rotacion 3D en el Eje X en la
Trayectoria 2',' ','Angulo giro negativo = ' num2str(th)]); % Declaramos un
titulo con los resultados de los angulos grid on
% Activamos las rejillas axis([-20 20 -20 20 -20 20]);
% Establecemos un sistema de ejes fijo X, Y y Z como minimos y maximos
pause(0.1); end end
if tray1 == 3 % Se elige trayectoria 3 (Teniendo
en cuenta el angulo negativo) t = 0:360;
% Se dibuja primero la trayectoria que seguira la funcion r =
3; % Aqui la variable r sera parte de la
ecuacion de la trayectoria a seguir xc = 2*r*cosd(t);
% Primera parte ecuacion de trayectoria que se grafica. El comando cosd (angulo en
sexagesimales) yc = r*sind(5*t); %
Segunda parte ecuacion de trayectoria que se grafica. El comando sind (angulo en
sexagesimales) zc = ones(1, length(xc))*5; %
Tercera parte ecuacion de trayectoria que se grafica for th =
0:-res1:angulo1 % La variable res1 es velocidad animacion y
para rotar en el sentido opuesto agujas del reloj se multiplica por '-1'
y1 = r*sind(5*th); % Primera parte de la ecuacion de la
trayectoria que se seguira hasta donde llegue th x1 =
2*r*cosd(th); % Segunda parte de la ecuacion de la
trayectoria que se seguira hasta donde llegue th z1 = 5;
% Esta es la altura en donde se dibujara la trayectoria for
c = 1:25 for f = 1:25
Rx = [1 0 0;0 cosd(th) -sind(th);0 sind(th) cosd(th)]; % Matriz de rotacion en
el eje 'X' en el mismo sentido a las agujas del reloj
vector_z = [x(f,c);y(f,c);z(f,c)];
Rot_x = Rx*vector_z; X(f,c) = Rot_x(1);
Y(f,c) = Rot_x(2); Z(f,c) = Rot_x(3);
end end surf(X+x1,Y+y1,Z+z1)
% Se grafica la superficie 3D con el comando surf xlabel('EJE
X','Color','r') % Dar nombre al eje X
ylabel('EJE Y','Color','g') % Dar nombre al eje Y
zlabel('EJE Z','Color','b') % Dar nombre al eje Z
title(['Rotacion 3D en el Eje X en la Trayectoria 3',' ','Angulo giro negativo =
' num2str(th)]); % Declaramos un titulo con los resultados de los angulos
grid on % Activamos las rejillas
axis([-20 20 -20 20 -20 20]); % Establecemos un sistema de ejes fijo
X, Y y Z como minimos y maximos pause(0.1);
end end end end case 2
% Todo el case 2 es rotar con respecto a Y (2D o 3D) if variables == 1
% Si es igual a 1 es en 2D (Rotar en 2D con respecto a Y) co =
[salidaxx; salidayy; salidazz]; % Esta variable co es una matriz
que se utilizara para guardar los conjuntos de datos de la funci�n if
angulo1 >= 0 % Se elige angulo positivo 2D
if tray1 == 1 % Se elige trayectoria 1 (Teniendo
en cuenta el angulo positivo) t = 0:360;
% Se dibuja primero la trayectoria que seguira la funcion r =
3; % Este sera el radio de la Trayectoria de
la circunferencia xc = r*cosd(t);
% Primera parte ecuacion de trayectoria que se grafica. El comando cosd (angulo en
sexagesimales) yc = r*sind(t); %
Segunda parte ecuacion de trayectoria que se grafica. El comando sind (angulo en
sexagesimales) zc = ones(1, length(xc))*5; %
Tercera parte ecuacion de trayectoria que se grafica for th =
0:res1:angulo1 % La variable res1 es la velocidad de animacion
y para rotar en el mismo sentido agujas del reloj debe ser positivo
y1 = r*sind(th); % La trayectoria que se seguira sera de
una circunferencia hasta donde llegue th x1 = r*cosd(th);
% La trayectoria que se seguira sera de una circunferencia hasta donde llegue th
z1 = 5; % Esta es la altura en donde se dibujara
la trayectoria de la circunferencia Pc = [0;0;z1];
% Punto inicial Pc del radio de la circunferencia de la Trayectoria
Po = [0;0;0]; % Punto inicial Po del vector de posicion
(Centro de coordenadas) Pu = [r;0;z1];
% Punto final Pu del vector posicion fijo de referencia Ps
= [x1;y1;z1]; % Punto final Ps del vector posicion que esta
siguiendo la Trayectoria th_rad = (th*pi)/180;
% Conversion del angulo th en sexagesimal a th_rad en radianes para la funcion rotz
y rotx Pz = (rotz(th_rad))*Pu; % Ecuacion
con la funcion rotz considerando valores de su angulo en radianes semejante a la
matriz Rz %co_R =
(roty(th_rad))*co; % Ecuacion con la funcion rotx considerando
valores de su angulo en radianes semejante a la matriz Rx
Ry = [cosd(th) 0 sind(th);0 1 0;-sind(th) 0 cosd(th)]; % Matriz de rotacion
en el eje 'Y' en el mismo sentido a las agujas del reloj
co_R = Ry*co; % Rotacion del
vector co en el eje Y originando el vector co_R
plot3(co_R(1,:)+x1,co_R(2,:)+y1,co_R(3,:)+z1,'r',xc,yc,zc) % Se suma a cada
coordenada de la funcion, las coordenadas de la trayectoria.
% De esta forma parecera como si la funcion estuviera siguiendo a la trayectoria
hold on % Activamos que el grafico anterior se
mantenga vector3d(Po,Ps,'r',1) %
Graficamos el vector posicion que esta siguiendo la Trayectoria (Color Rojo)
hold on % Activamos que el grafico anterior se
mantenga vector3d(Po,Pu,'b',1) %
Graficamos el vector posicion fijo de referencia (Color Azul)
hold on % Activamos que el grafico anterior se
mantenga plot3(0,0,0,'mo') %
Graficamos el centro de coordenadas del Punto Po (Color Magenta)
hold on % Activamos que el grafico anterior se
mantenga plot3(0,0,z1,'mo') %
Graficamos el centro de la Trayectoria del Punto Pc de la circunferencia (Color
Magenta) hold on %
Activamos que el grafico anterior se mantenga
vector3d(Pc,Pz,'g',1) % Graficamos el desplazamiento del vector
del radio de la circunferencia (Color Verde) xlabel('EJE
X','Color','r') % Dar nombre al eje X
ylabel('EJE Y','Color','g') % Dar nombre al eje Y
zlabel('EJE Z','Color','b') % Dar nombre al eje Z
title(['Rotacion 2D en el Eje Y en la Trayectoria 1',' ','Angulo giro positivo =
' num2str(th)]); % Declaramos un titulo con los resultados de los angulos
grid on % Activamos las rejillas
axis([-8 8 -8 8 -8 8]) % Establecemos un sistema de ejes fijo X,
Y y Z como minimos y maximos pause(0.01)
end end if
tray1 == 2 % Se elige trayectoria 2 (Teniendo en
cuenta el angulo positivo) t = 0:360;
% Se dibuja primero la trayectoria que seguira la funcion r =
3; % Aqui la variable r sera parte de la
ecuacion de la trayectoria a seguir xc = r*cosd(5*t);
% Primera parte ecuacion de trayectoria que se grafica. El comando cosd (angulo en
sexagesimales) yc = r*sind(t); %
Segunda parte ecuacion de trayectoria que se grafica. El comando sind (angulo en
sexagesimales) zc = ones(1, length(xc))*5; %
Tercera parte ecuacion de trayectoria que se grafica for th =
0:res1:angulo1 % La variable res1 es la velocidad de animacion
y para rotar en el mismo sentido agujas del reloj debe ser positivo
y1 = r*sind(th); % Primera parte de la ecuacion de la
trayectoria que se seguira hasta donde llegue th x1 =
r*cosd(5*th); % Segunda parte de la ecuacion de la
trayectoria que se seguira hasta donde llegue th z1 = 5;
% Esta es la altura en donde se dibujara la trayectoria
Pc = [0;0;z1]; % Punto inicial Pc del radio de la
circunferencia de la Trayectoria Po = [0;0;0];
% Punto inicial Po del vector de posicion (Centro de coordenadas)
Pu = [r;0;z1]; % Punto final Pu del vector posicion fijo
de referencia Ps = [x1;y1;z1]; %
Punto final Ps del vector posicion que esta siguiendo la Trayectoria
th_rad = (th*pi)/180; % Conversion del angulo th en sexagesimal
a th_rad en radianes para la funcion rotx
co_R = (roty(th_rad))*co; % Ecuacion con la funcion roty semejante a
la matriz Ry %Ry = [cosd(th) 0 sind(th);0 1 0;-sind(th) 0
cosd(th)]; % Matriz de rotacion en el eje 'Y' en el mismo sentido a las
agujas del reloj %co_R = Ry*co;
% Rotacion del vector co en el eje Y originando el vector co_R
plot3(co_R(1,:)+x1,co_R(2,:)+y1,co_R(3,:)+z1,'r',xc,yc,zc) % Se suma a cada
coordenada de la funcion, las coordenadas de la trayectoria.
% De esta forma parecera como si la funcion estuviera siguiendo a la trayectoria
hold on % Activamos que el grafico anterior se
mantenga vector3d(Po,Ps,'r',1) %
Graficamos el vector posicion que esta siguiendo la Trayectoria (Color Rojo)
hold on % Activamos que el grafico anterior se
mantenga vector3d(Po,Pu,'b',1) %
Graficamos el vector posicion fijo de referencia (Color Azul)
hold on % Activamos que el grafico anterior se
mantenga plot3(0,0,0,'mo') %
Graficamos el centro de coordenadas del Punto Po (Color Magenta)
hold on % Activamos que el grafico anterior se
mantenga plot3(0,0,z1,'mo') %
Graficamos el centro de la Trayectoria del Punto Pc de la circunferencia (Color
Magenta) hold on %
Activamos que el grafico anterior se mantenga
vector3d(Pc,Ps,'g',1) % Graficamos el desplazamiento del vector
del radio de la circunferencia (Color Verde) xlabel('EJE
X','Color','r') % Dar nombre al eje X
ylabel('EJE Y','Color','g') % Dar nombre al eje Y
zlabel('EJE Z','Color','b') % Dar nombre al eje Z
title(['Rotacion 2D en el Eje Y en la Trayectoria 2',' ','Angulo giro positivo =
' num2str(th)]); % Declaramos un titulo con los resultados de los angulos
grid on % Activamos las rejillas
axis([-8 8 -8 8 -8 8]) % Establecemos un sistema de ejes fijo X,
Y y Z como minimos y maximos pause(0.01)
end end if tray1 == 3
% Se elige trayectoria 3 (Teniendo en cuenta el angulo positivo)
t = 0:360; % Se dibuja primero la trayectoria que
seguira la funcion r = 3;
% Aqui la variable r sera parte de la ecuacion de la trayectoria a seguir
xc = 2*r*cosd(t); % Primera parte ecuacion de
trayectoria que se grafica. El comando cosd (angulo en sexagesimales)
yc = r*sind(5*t); % Segunda parte ecuacion de
trayectoria que se grafica. El comando sind (angulo en sexagesimales)
zc = ones(1, length(xc))*5; % Tercera parte ecuacion de
trayectoria que se grafica for th = 0:res1:angulo1
% La variable res1 es la velocidad de animacion y para rotar en el mismo sentido
agujas del reloj debe ser positivo y1 = r*sind(5*th);
% Primera parte de la ecuacion de la trayectoria que se seguira hasta donde llegue
th x1 = 2*r*cosd(th); % Segunda parte
de la ecuacion de la trayectoria que se seguira hasta donde llegue th
z1 = 5; % Esta es la altura en donde se dibujara
la trayectoria Pc = [0;0;z1];
% Punto inicial Pc del radio de la circunferencia de la Trayectoria
Po = [0;0;0]; % Punto inicial Po del vector de posicion
(Centro de coordenadas) Pu = [2*r;0;z1];
% Punto final Pu del vector posicion fijo de referencia Ps
= [x1;y1;z1]; % Punto final Ps del vector posicion que esta
siguiendo la Trayectoria th_rad = (th*pi)/180;
% Conversion del angulo th en sexagesimal a th_rad en radianes para la funcion rotx
co_R = (roty(th_rad))*co; % Ecuacion con la funcion roty semejante a
la matriz Ry %Ry = [cosd(th) 0 sind(th);0 1 0;-sind(th) 0
cosd(th)]; % Matriz de rotacion en el eje 'Y' en el mismo sentido a las
agujas del reloj
%co_R = Ry*co;
% Rotacion del vector co en el eje Y originando el vector co_R
plot3(co_R(1,:)+x1,co_R(2,:)+y1,co_R(3,:)+z1,'r',xc,yc,zc) % Se suma a cada
coordenada de la funcion, las coordenadas de la trayectoria.
% De esta forma parecera como si la funcion estuviera siguiendo a la trayectoria
hold on % Activamos que el grafico anterior se
mantenga vector3d(Po,Ps,'r',1) %
Graficamos el vector posicion que esta siguiendo la Trayectoria (Color Rojo)
hold on % Activamos que el grafico anterior se
mantenga vector3d(Po,Pu,'b',1) %
Graficamos el vector posicion fijo de referencia (Color Azul)
hold on % Activamos que el grafico anterior se
mantenga plot3(0,0,0,'mo') %
Graficamos el centro de coordenadas del Punto Po (Color Magenta)
hold on % Activamos que el grafico anterior se
mantenga plot3(0,0,z1,'mo') %
Graficamos el centro de la Trayectoria del Punto Pc de la circunferencia (Color
Magenta) hold on %
Activamos que el grafico anterior se mantenga
vector3d(Pc,Ps,'g',1) % Graficamos el desplazamiento del vector
del radio de la circunferencia (Color Verde) xlabel('EJE
X','Color','r') % Dar nombre al eje X
ylabel('EJE Y','Color','g') % Dar nombre al eje Y
zlabel('EJE Z','Color','b') % Dar nombre al eje Z
title(['Rotacion 2D en el Eje Y en la Trayectoria 3',' ','Angulo giro positivo =
' num2str(th)]); % Declaramos un titulo con los resultados de los angulos
grid on % Activamos las rejillas
axis([-8 8 -8 8 -8 8]) % Establecemos un sistema de ejes fijo X,
Y y Z como minimos y maximos pause(0.01)
end end end if angulo1 < 0
% Se elige angulo negativo 2D if tray1 == 1
% Se elige trayectoria 1 (Teniendo en cuenta el angulo negativo)
t = 0:360; % Se dibuja primero la trayectoria que
seguira la funcion r = 3;
% Este sera el radio de la Trayectoria de la circunferencia xc
= r*cosd(t); % Primera parte ecuacion de trayectoria
que se grafica. El comando cosd (angulo en sexagesimales) yc =
r*sind(t); % Segunda parte ecuacion de trayectoria que
se grafica. El comando sind (angulo en sexagesimales) zc =
ones(1, length(xc))*5; % Tercera parte ecuacion de trayectoria que
se grafica for th = 0:-res1:angulo1 % La
variable res1 es velocidad animacion y para rotar en el sentido opuesto agujas del
reloj se multiplica por '-1' y1 = r*sind(th);
% La trayectoria que se seguira sera de una circunferencia hasta donde llegue th
x1 = r*cosd(th); % La trayectoria que se seguira sera de
una circunferencia hasta donde llegue th z1 = 5;
% Esta es la altura en donde se dibujara la trayectoria de la circunferencia
Pc = [0;0;z1]; % Punto inicial Pc del radio de la
circunferencia de la Trayectoria Po = [0;0;0];
% Punto inicial Po del vector de posicion (Centro de coordenadas)
Pu = [r;0;z1]; % Punto final Pu del vector posicion fijo
de referencia Ps = [x1;y1;z1]; %
Punto final Ps del vector posicion que esta siguiendo la Trayectoria
th_rad = (th*pi)/180; % Conversion del angulo th en sexagesimal
a th_rad en radianes para la funcion rotz y rotx Pz =
(rotz(th_rad))*Pu; % Ecuacion con la funcion rotz considerando
valores de su angulo en radianes semejante a la matriz Rz
%co_R = (roty(th_rad))*co; % Ecuacion con la funcion rotx
considerando valores de su angulo en radianes semejante a la matriz Rx
Ry = [cosd(th) 0 sind(th);0 1 0;-sind(th) 0 cosd(th)]; % Matriz de rotacion
en el eje 'Y' en el mismo sentido a las agujas del reloj
co_R = Ry*co; % Rotacion del
vector co en el eje Y originando el vector co_R
plot3(co_R(1,:)+x1,co_R(2,:)+y1,co_R(3,:)+z1,'r',xc,yc,zc) % Se suma a cada
coordenada de la funcion, las coordenadas de la trayectoria.
% De esta forma parecera como si la funcion estuviera siguiendo a la trayectoria
hold on % Activamos que el grafico anterior se
mantenga vector3d(Po,Ps,'r',1) %
Graficamos el vector posicion que esta siguiendo la Trayectoria (Color Rojo)
hold on % Activamos que el grafico anterior se
mantenga vector3d(Po,Pu,'b',1) %
Graficamos el vector posicion fijo de referencia (Color Azul)
hold on % Activamos que el grafico anterior se
mantenga plot3(0,0,0,'mo') %
Graficamos el centro de coordenadas del Punto Po (Color Magenta)
hold on % Activamos que el grafico anterior se
mantenga plot3(0,0,z1,'mo') %
Graficamos el centro de la Trayectoria del Punto Pc de la circunferencia (Color
Magenta) hold on %
Activamos que el grafico anterior se mantenga
vector3d(Pc,Pz,'g',1) % Graficamos el desplazamiento del vector
del radio de la circunferencia (Color Verde) xlabel('EJE
X','Color','r') % Dar nombre al eje X
ylabel('EJE Y','Color','g') % Dar nombre al eje Y
zlabel('EJE Z','Color','b') % Dar nombre al eje Z
title(['Rotacion 2D en el Eje Y en la Trayectoria 1',' ','Angulo giro negativo =
' num2str(th)]); % Declaramos un titulo con los resultados de los angulos
grid on % Activamos las rejillas
axis([-8 8 -8 8 -8 8]) % Establecemos un
sistema de ejes fijo X, Y y Z como minimos y maximos
pause(0.01) end end
if tray1 == 2 % Se elige trayectoria 2 (Teniendo
en cuenta el angulo negativo) t = 0:360;
% Se dibuja primero la trayectoria que seguira la funcion r =
3; % Aqui la variable r sera parte de la
ecuacion de la trayectoria a seguir xc = r*cosd(5*t);
% Primera parte ecuacion de trayectoria que se grafica. El comando cosd (angulo en
sexagesimales) yc = r*sind(t); %
Segunda parte ecuacion de trayectoria que se grafica. El comando sind (angulo en
sexagesimales) zc = ones(1, length(xc))*5; %
Tercera parte ecuacion de trayectoria que se grafica for th =
0:-res1:angulo1 % La variable res1 es velocidad animacion y
para rotar en el sentido opuesto agujas del reloj se multiplica por '-1'
y1 = r*sind(th); % Primera parte de la ecuacion de la
trayectoria que se seguira hasta donde llegue th x1 =
r*cosd(5*th); % Segunda parte de la ecuacion de la
trayectoria que se seguira hasta donde llegue th z1 = 5;
% Esta es la altura en donde se dibujara la trayectoria
Pc = [0;0;z1]; % Punto inicial Pc del radio de la
circunferencia de la Trayectoria Po = [0;0;0];
% Punto inicial Po del vector de posicion (Centro de coordenadas)
Pu = [r;0;z1]; % Punto final Pu del vector posicion fijo
de referencia Ps = [x1;y1;z1]; %
Punto final Ps del vector posicion que esta siguiendo la Trayectoria
th_rad = (th*pi)/180; % Conversion del angulo th en sexagesimal
a th_rad en radianes para la funcion rotx
co_R = (roty(th_rad))*co; % Ecuacion con la funcion roty semejante a
la matriz Ry %Ry = [cosd(th) 0 sind(th);0 1 0;-sind(th) 0
cosd(th)]; % Matriz de rotacion en el eje 'Y' en el mismo sentido a las
agujas del reloj %co_R = Ry*co;
% Rotacion del vector co en el eje Y originando el vector co_R
plot3(co_R(1,:)+x1,co_R(2,:)+y1,co_R(3,:)+z1,'r',xc,yc,zc) % Se suma a cada
coordenada de la funcion, las coordenadas de la trayectoria.
% De esta forma parecera como si la funcion estuviera siguiendo a la trayectoria
hold on % Activamos que el grafico anterior se
mantenga vector3d(Po,Ps,'r',1) %
Graficamos el vector posicion que esta siguiendo la Trayectoria (Color Rojo)
hold on % Activamos que el grafico anterior se
mantenga vector3d(Po,Pu,'b',1) %
Graficamos el vector posicion fijo de referencia (Color Azul)
hold on % Activamos que el grafico anterior se
mantenga plot3(0,0,0,'mo') %
Graficamos el centro de coordenadas del Punto Po (Color Magenta)
hold on % Activamos que el grafico anterior se
mantenga plot3(0,0,z1,'mo') %
Graficamos el centro de la Trayectoria del Punto Pc de la circunferencia (Color
Magenta) hold on %
Activamos que el grafico anterior se mantenga
vector3d(Pc,Ps,'g',1) % Graficamos el desplazamiento del vector
del radio de la circunferencia (Color Verde) xlabel('EJE
X','Color','r') % Dar nombre al eje X
ylabel('EJE Y','Color','g') % Dar nombre al eje Y
zlabel('EJE Z','Color','b') % Dar nombre al eje Z
title(['Rotacion 2D en el Eje Y en la Trayectoria 2',' ','Angulo giro negativo =
' num2str(th)]); % Declaramos un titulo con los resultados de los angulos
grid on % Activamos las rejillas
axis([-8 8 -8 8 -8 8]) % Establecemos un sistema de ejes fijo X,
Y y Z como minimos y maximos pause(0.01)
end end if tray1 == 3
% Se elige trayectoria 3 (Teniendo en cuenta el angulo negativo)
t = 0:360; % Se dibuja primero la trayectoria que
seguira la funcion r = 3;
% Aqui la variable r sera parte de la ecuacion de la trayectoria a seguir
xc = 2*r*cosd(t); % Primera parte ecuacion de
trayectoria que se grafica. El comando cosd (angulo en sexagesimales)
yc = r*sind(5*t); % Segunda parte ecuacion de
trayectoria que se grafica. El comando sind (angulo en sexagesimales)
zc = ones(1, length(xc))*5; % Tercera parte ecuacion de
trayectoria que se grafica for th = 0:-res1:angulo1
% La variable res1 es velocidad animacion y para rotar en el sentido opuesto agujas
del reloj se multiplica por '-1' y1 = r*sind(5*th);
% Primera parte de la ecuacion de la trayectoria que se seguira hasta donde llegue
th x1 = 2*r*cosd(th); % Segunda parte
de la ecuacion de la trayectoria que se seguira hasta donde llegue th
z1 = 5; % Esta es la altura en donde se dibujara
la trayectoria Pc = [0;0;z1]; %
Punto inicial Pc del radio de la circunferencia de la Trayectoria
Po = [0;0;0]; % Punto inicial Po del vector de posicion
(Centro de coordenadas) Pu = [2*r;0;z1];
% Punto final Pu del vector posicion fijo de referencia Ps
= [x1;y1;z1]; % Punto final Ps del vector posicion que esta
siguiendo la Trayectoria th_rad = (th*pi)/180;
% Conversion del angulo th en sexagesimal a th_rad en radianes para la funcion rotx

co_R = (roty(th_rad))*co; % Ecuacion con la


funcion roty semejante a la matriz Ry %Ry = [cosd(th) 0
sind(th);0 1 0;-sind(th) 0 cosd(th)]; % Matriz de rotacion en el eje 'Y' en
el mismo sentido a las agujas del reloj %co_R = Ry*co;
% Rotacion del vector co en el eje Y originando el vector co_R
plot3(co_R(1,:)+x1,co_R(2,:)+y1,co_R(3,:)+z1,'r',xc,yc,zc) % Se suma a cada
coordenada de la funcion, las coordenadas de la trayectoria.
% De esta forma parecera como si la funcion estuviera siguiendo a la trayectoria
hold on % Activamos que el grafico anterior se
mantenga vector3d(Po,Ps,'r',1) %
Graficamos el vector posicion que esta siguiendo la Trayectoria (Color Rojo)
hold on % Activamos que el grafico anterior se
mantenga vector3d(Po,Pu,'b',1) %
Graficamos el vector posicion fijo de referencia (Color Azul)
hold on % Activamos que el grafico anterior se
mantenga plot3(0,0,0,'mo') %
Graficamos el centro de coordenadas del Punto Po (Color Magenta)
hold on % Activamos que el grafico anterior se
mantenga plot3(0,0,z1,'mo') %
Graficamos el centro de la Trayectoria del Punto Pc de la circunferencia (Color
Magenta) hold on %
Activamos que el grafico anterior se mantenga
vector3d(Pc,Ps,'g',1) % Graficamos el desplazamiento del vector
del radio de la circunferencia (Color Verde) xlabel('EJE
X','Color','r') % Dar nombre al eje X
ylabel('EJE Y','Color','g') % Dar nombre al eje Y
zlabel('EJE Z','Color','b') % Dar nombre al eje Z
title(['Rotacion 2D en el Eje Y en la Trayectoria 3',' ','Angulo giro negativo =
' num2str(th)]); % Declaramos un titulo con los resultados de los angulos
grid on % Activamos las rejillas
axis([-8 8 -8 8 -8 8]) % Establecemos un sistema de ejes fijo X,
Y y Z como minimos y maximos pause(0.01)
end end end salidaxx =
co_R(1,:); salidayy = co_R(2,:); salidazz = co_R(3,:);
end if variables == 2 %
Rotar con respecto a Y, en 3D if angulo1 >= 0
% Se elige angulo positivo if tray1 == 1
% Se elige trayectoria 1 (Teniendo en cuenta el angulo positivo)
t = 0:360; % Se dibuja primero la trayectoria que
seguira la funcion r = 3;
% Este sera el radio de la Trayectoria de la circunferencia xc
= r*cosd(t); % Primera parte ecuacion de trayectoria
que se grafica. El comando cosd (angulo en sexagesimales) yc =
r*sind(t); % Segunda parte ecuacion de trayectoria que
se grafica. El comando sind (angulo en sexagesimales) zc =
ones(1, length(xc))*5; % Tercera parte ecuacion de trayectoria que
se grafica for th = 0:res1:angulo1 % La
variable res1 es la velocidad de animacion y para rotar en el mismo sentido agujas
del reloj debe ser positivo y1 = r*sind(th);
% Primera parte de la ecuacion de la trayectoria que se seguira hasta donde llegue
th x1 = r*cosd(th); % Segunda parte
de la ecuacion de la trayectoria que se seguira hasta donde llegue th
z1 = 5; % Esta es la altura en donde se dibujara
la trayectoria for c = 1:25 for
f = 1:25 Ry = [cosd(th) 0 sind(th);0 1 0;-sind(th)
0 cosd(th)]; % Matriz de rotacion en el eje 'Y' en el mismo sentido a las
agujas del reloj vector_z = [x(f,c);y(f,c);z(f,c)];
Rot_y = Ry*vector_z; X(f,c) = Rot_y(1);
Y(f,c) = Rot_y(2); Z(f,c) = Rot_y(3);
end end surf(X+x1,Y+y1,Z+z1)
% Se grafica la superficie 3D con el comando surf xlabel('EJE
X','Color','r') % Dar nombre al eje X
ylabel('EJE Y','Color','g') % Dar nombre al eje Y
zlabel('EJE Z','Color','b') % Dar nombre al eje Z
title(['Rotacion 3D en el Eje Y en la Trayectoria 1',' ','Angulo giro positivo =
' num2str(th)]); % Declaramos un titulo con los resultados de los angulos
grid on % Activamos las rejillas
axis([-20 20 -20 20 -20 20]); % Establecemos un sistema de ejes fijo
X, Y y Z como minimos y maximos pause(0.1);
end end
if tray1 == 2 % Se elige
trayectoria 2 (Teniendo en cuenta el angulo positivo) t =
0:360; % Se dibuja primero la trayectoria que
seguira la funcion r = 3;
% Aqui la variable r sera parte de la ecuacion de la trayectoria a seguir
xc = r*cosd(5*t); % Primera parte ecuacion de
trayectoria que se grafica. El comando cosd (angulo en sexagesimales)
yc = r*sind(t); % Segunda parte ecuacion de
trayectoria que se grafica. El comando sind (angulo en sexagesimales)
zc = ones(1, length(xc))*5; % Tercera parte ecuacion de
trayectoria que se grafica for th = 0:res1:angulo1
% La variable res1 es la velocidad de animacion y para rotar en el mismo sentido
agujas del reloj debe ser positivo y1 = r*sind(th);
% Primera parte de la ecuacion de la trayectoria que se seguira hasta donde llegue
th x1 = r*cosd(5*th); % Segunda parte
de la ecuacion de la trayectoria que se seguira hasta donde llegue th
z1 = 5; % Esta es la altura en donde se dibujara
la trayectoria for c = 1:25 for
f = 1:25 Ry = [cosd(th) 0 sind(th);0 1 0;-sind(th)
0 cosd(th)]; % Matriz de rotacion en el eje 'Y' en el mismo sentido a las
agujas del reloj vector_z = [x(f,c);y(f,c);z(f,c)];
Rot_y = Ry*vector_z; X(f,c) = Rot_y(1);
Y(f,c) = Rot_y(2); Z(f,c) = Rot_y(3);
end end surf(X+x1,Y+y1,Z+z1)
% Se grafica la superficie 3D con el comando surf xlabel('EJE
X','Color','r') % Dar nombre al eje X
ylabel('EJE Y','Color','g') % Dar nombre al eje Y
zlabel('EJE Z','Color','b') % Dar nombre al eje Z
title(['Rotacion 3D en el Eje Y en la Trayectoria 2',' ','Angulo giro positivo =
' num2str(th)]); % Declaramos un titulo con los resultados de los angulos
grid on % Activamos las rejillas
axis([-20 20 -20 20 -20 20]); % Establecemos un sistema de ejes fijo
X, Y y Z como minimos y maximos pause(0.1);
end end if tray1 == 3
% Se elige trayectoria 3 (Teniendo en cuenta el angulo positivo)
t = 0:360; % Se dibuja primero la trayectoria que
seguira la funcion r = 3;
% Aqui la variable r sera parte de la ecuacion de la trayectoria a seguir
xc = 2*r*cosd(t); % Primera parte ecuacion de
trayectoria que se grafica. El comando cosd (angulo en sexagesimales)
yc = r*sind(5*t); % Segunda parte ecuacion de
trayectoria que se grafica. El comando sind (angulo en sexagesimales)
zc = ones(1, length(xc))*5; % Tercera parte ecuacion de
trayectoria que se grafica for th = 0:res1:angulo1
% La variable res1 es la velocidad de animacion y para rotar en el mismo sentido
agujas del reloj debe ser positivo y1 = r*sind(5*th);
% Primera parte de la ecuacion de la trayectoria que se seguira hasta donde llegue
th x1 = 2*r*cosd(th); % Segunda parte
de la ecuacion de la trayectoria que se seguira hasta donde llegue th
z1 = 5; % Esta es la altura en donde se dibujara
la trayectoria for c = 1:25 for
f = 1:25 Ry = [cosd(th) 0 sind(th);0 1 0;-sind(th)
0 cosd(th)]; % Matriz de rotacion en el eje 'Y' en el mismo sentido a las
agujas del reloj vector_z = [x(f,c);y(f,c);z(f,c)];
Rot_y = Ry*vector_z; X(f,c) = Rot_y(1);
Y(f,c) = Rot_y(2); Z(f,c) = Rot_y(3);
end end surf(X+x1,Y+y1,Z+z1)
% Se grafica la superficie 3D con el comando surf xlabel('EJE
X','Color','r') % Dar nombre al eje X
ylabel('EJE Y','Color','g') % Dar nombre al eje Y
zlabel('EJE Z','Color','b') % Dar nombre al eje Z
title(['Rotacion 3D en el Eje Y en la Trayectoria 3',' ','Angulo giro positivo =
' num2str(th)]); % Declaramos un titulo con los resultados de los angulos
grid on % Activamos las rejillas
axis([-20 20 -20 20 -20 20]); % Establecemos un sistema de ejes fijo
X, Y y Z como minimos y maximos pause(0.1);
end end end if angulo1 <
0 % Se elige angulo negativo
if tray1 == 1 % Se elige trayectoria 1 (Teniendo
en cuenta el angulo negativo)
t = 0:360; % Se dibuja
primero la trayectoria que seguira la funcion r = 3;
% Este sera el radio de la Trayectoria de la circunferencia xc
= r*cosd(t); % Primera parte ecuacion de trayectoria
que se grafica. El comando cosd (angulo en sexagesimales) yc =
r*sind(t); % Segunda parte ecuacion de trayectoria que
se grafica. El comando sind (angulo en sexagesimales) zc =
ones(1, length(xc))*5; % Tercera parte ecuacion de trayectoria que
se grafica for th = 0:-res1:angulo1 % La
variable res1 es velocidad animacion y para rotar en el sentido opuesto agujas del
reloj se multiplica por '-1' y1 = r*sind(th);
% Primera parte de la ecuacion de la trayectoria que se seguira hasta donde llegue
th x1 = r*cosd(th); % Segunda parte
de la ecuacion de la trayectoria que se seguira hasta donde llegue th
z1 = 5; % Esta es la altura en donde se dibujara
la trayectoria for c = 1:25 for
f = 1:25 Ry = [cosd(th) 0 sind(th);0 1 0;-sind(th)
0 cosd(th)]; % Matriz de rotacion en el eje 'Y' en el mismo sentido a las
agujas del reloj vector_z = [x(f,c);y(f,c);z(f,c)];
Rot_y = Ry*vector_z; X(f,c) = Rot_y(1);
Y(f,c) = Rot_y(2); Z(f,c) = Rot_y(3);
end end surf(X+x1,Y+y1,Z+z1)
% Se grafica la superficie 3D con el comando surf xlabel('EJE
X','Color','r') % Dar nombre al eje X
ylabel('EJE Y','Color','g') % Dar nombre al eje Y
zlabel('EJE Z','Color','b') % Dar nombre al eje Z
title(['Rotacion 3D en el Eje Y en la Trayectoria 1',' ','Angulo giro negativo =
' num2str(th)]); % Declaramos un titulo con los resultados de los angulos
grid on % Activamos las rejillas
axis([-20 20 -20 20 -20 20]); % Establecemos un sistema de ejes fijo
X, Y y Z como minimos y maximos pause(0.1);
end end if tray1 == 2
% Se elige trayectoria 2 (Teniendo en cuenta el angulo negativo)
t = 0:360; % Se dibuja primero la trayectoria que
seguira la funcion r = 3;
% Aqui la variable r sera parte de la ecuacion de la trayectoria a seguir
xc = r*cosd(5*t); % Primera parte ecuacion de
trayectoria que se grafica. El comando cosd (angulo en sexagesimales)
yc = r*sind(t); % Segunda parte ecuacion de
trayectoria que se grafica. El comando sind (angulo en sexagesimales)
zc = ones(1, length(xc))*5; % Tercera parte ecuacion de
trayectoria que se grafica for th = 0:-res1:angulo1
% La variable res1 es velocidad animacion y para rotar en el sentido opuesto agujas
del reloj se multiplica por '-1' y1 = r*sind(th);
% Primera parte de la ecuacion de la trayectoria que se seguira hasta donde llegue
th x1 = r*cosd(5*th); % Segunda parte
de la ecuacion de la trayectoria que se seguira hasta donde llegue th
z1 = 5; % Esta es la altura en donde se dibujara
la trayectoria for c = 1:25 for
f = 1:25 Ry = [cosd(th) 0 sind(th);0 1 0;-sind(th)
0 cosd(th)]; % Matriz de rotacion en el eje 'Y' en el mismo sentido a las
agujas del reloj vector_z = [x(f,c);y(f,c);z(f,c)];
Rot_y = Ry*vector_z; X(f,c) = Rot_y(1);
Y(f,c) = Rot_y(2); Z(f,c) = Rot_y(3);
end end surf(X+x1,Y+y1,Z+z1)
% Se grafica la superficie 3D con el comando surf xlabel('EJE
X','Color','r') % Dar nombre al eje X
ylabel('EJE Y','Color','g') % Dar nombre al eje Y
zlabel('EJE Z','Color','b') % Dar nombre al eje Z
title(['Rotacion 3D en el Eje Y en la Trayectoria 2',' ','Angulo giro negativo =
' num2str(th)]); % Declaramos un titulo con los resultados de los angulos
grid on % Activamos las rejillas
axis([-20 20 -20 20 -20 20]); % Establecemos un sistema de ejes fijo
X, Y y Z como minimos y maximos pause(0.1);
end end if tray1 == 3
% Se elige trayectoria 3 (Teniendo en cuenta el angulo negativo)
t = 0:360; % Se dibuja primero la trayectoria que
seguira la funcion r = 3;
% Aqui la variable r sera parte de la ecuacion de la trayectoria a seguir
xc = 2*r*cosd(t); % Primera parte ecuacion de
trayectoria que se grafica. El comando cosd (angulo en sexagesimales)
yc = r*sind(5*t); % Segunda parte
ecuacion de trayectoria que se grafica. El comando sind (angulo en sexagesimales)
zc = ones(1, length(xc))*5; % Tercera parte ecuacion de
trayectoria que se grafica for th = 0:-res1:angulo1
% La variable res1 es velocidad animacion y para rotar en el sentido opuesto agujas
del reloj se multiplica por '-1' y1 = r*sind(5*th);
% Primera parte de la ecuacion de la trayectoria que se seguira hasta donde llegue
th x1 = 2*r*cosd(th); % Segunda parte
de la ecuacion de la trayectoria que se seguira hasta donde llegue th
z1 = 5; % Esta es la altura en donde se dibujara
la trayectoria for c = 1:25 for
f = 1:25 Ry = [cosd(th) 0 sind(th);0 1 0;-sind(th)
0 cosd(th)]; % Matriz de rotacion en el eje 'Y' en el mismo sentido a las
agujas del reloj vector_z = [x(f,c);y(f,c);z(f,c)];
Rot_y = Ry*vector_z; X(f,c) = Rot_y(1);
Y(f,c) = Rot_y(2); Z(f,c) = Rot_y(3);
end end surf(X+x1,Y+y1,Z+z1)
% Se grafica la superficie 3D con el comando surf xlabel('EJE
X','Color','r') % Dar nombre al eje X
ylabel('EJE Y','Color','g') % Dar nombre al eje Y
zlabel('EJE Z','Color','b') % Dar nombre al eje Z
title(['Rotacion 3D en el Eje Y en la Trayectoria 3',' ','Angulo giro negativo =
' num2str(th)]); % Declaramos un titulo con los resultados de los angulos
grid on % Activamos las rejillas
axis([-20 20 -20 20 -20 20]); % Establecemos un sistema de ejes fijo
X, Y y Z como minimos y maximos pause(0.1);
end end end end case 3
% Todo el case 3 es rotar con respecto a Z (2D o 3D) if variables == 1
% Rotar con respecto a Z, en 2D co = [salidaxx; salidayy; salidazz];
% Esta variable co es una matriz que se utilizara para guardar los conjuntos de
datos de la funci�n if angulo1 >= 0
% Se elige angulo positivo if tray1 == 1
% Se elige trayectoria 1 (Teniendo en cuenta el angulo positivo)
t = 0:360; % Se dibuja primero la trayectoria que
seguira la funcion r = 3;
% Este sera el radio de la Trayectoria de la circunferencia xc
= r*cosd(t); % Primera parte ecuacion de trayectoria
que se grafica. El comando cosd (angulo en sexagesimales) yc =
r*sind(t); % Segunda parte ecuacion de trayectoria que
se grafica. El comando sind (angulo en sexagesimales) zc =
ones(1, length(xc))*5; % Tercera parte ecuacion de trayectoria que
se grafica for th = 0:res1:angulo1 % La
variable res1 es la velocidad de animacion y para rotar en el mismo sentido agujas
del reloj debe ser positivo y1 = r*sind(th);
% La trayectoria que se seguira sera de una circunferencia hasta donde llegue th
x1 = r*cosd(th); % La trayectoria que se seguira sera de
una circunferencia hasta donde llegue th z1 = 5;
% Esta es la altura en donde se dibujara la trayectoria de la circunferencia
Pc = [0;0;z1]; % Punto inicial Pc del radio de la
circunferencia de la Trayectoria Po = [0;0;0];
% Punto inicial Po del vector de posicion (Centro de coordenadas)
Pu = [r;0;z1]; % Punto final Pu del vector posicion fijo
de referencia Ps = [x1;y1;z1]; %
Punto final Ps del vector posicion que esta siguiendo la Trayectoria
th_rad = (th*pi)/180; % Conversion del angulo th en sexagesimal
a th_rad en radianes para la funcion rotz y rotx Pz =
(rotz(th_rad))*Pu; % Ecuacion con la funcion rotz considerando
valores de su angulo en radianes semejante a la matriz Rz
%co_R = (rotz(th_rad))*co; % Ecuacion con la funcion rotx
considerando valores de su angulo en radianes semejante a la matriz Rx
Rz = [cosd(th) -sind(th) 0; sind(th) cosd(th) 0; 0 0 1]; % Matriz de rotacion
en el eje 'Z' en el mismo sentido a las agujas del reloj
co_R = Rz*co; % Rotacion del
vector co en el eje Z originando el vector co_R
plot3(co_R(1,:)+x1,co_R(2,:)+y1,co_R(3,:)+z1,'r',xc,yc,zc) % Se suma a cada
coordenada de la funcion, las coordenadas de la trayectoria.
% De esta forma parecera como si la funcion estuviera siguiendo a la trayectoria
hold on % Activamos que el grafico anterior se
mantenga vector3d(Po,Ps,'r',1) %
Graficamos el vector posicion que esta siguiendo la Trayectoria (Color Rojo)
hold on % Activamos que el grafico anterior se
mantenga vector3d(Po,Pu,'b',1) %
Graficamos el vector posicion fijo de referencia (Color Azul)
hold on % Activamos que el grafico anterior se
mantenga plot3(0,0,0,'mo') %
Graficamos el centro de coordenadas del Punto Po (Color Magenta)
hold on % Activamos que el grafico anterior se
mantenga plot3(0,0,z1,'mo') %
Graficamos el centro de la Trayectoria del Punto Pc de la circunferencia (Color
Magenta)
hold on % Activamos que el
grafico anterior se mantenga vector3d(Pc,Pz,'g',1)
% Graficamos el desplazamiento del vector del radio de la circunferencia (Color
Verde) xlabel('EJE X','Color','r') % Dar
nombre al eje X ylabel('EJE Y','Color','g') %
Dar nombre al eje Y zlabel('EJE Z','Color','b')
% Dar nombre al eje Z title(['Rotacion 2D en el Eje Z en la
Trayectoria 1',' ','Angulo giro positivo = ' num2str(th)]); % Declaramos un
titulo con los resultados de los angulos grid on
% Activamos las rejillas axis([-8 8 -8 8 -8 8])
% Establecemos un sistema de ejes fijo X, Y y Z como minimos y maximos
pause(0.01) end end
if tray1 == 2 % Se elige trayectoria 2 (Teniendo
en cuenta el angulo positivo) t = 0:360;
% Se dibuja primero la trayectoria que seguira la funcion r =
3; % Aqui la variable r sera parte de la
ecuacion de la trayectoria a seguir xc = r*cosd(5*t);
% Primera parte ecuacion de trayectoria que se grafica. El comando cosd (angulo en
sexagesimales) yc = r*sind(t); %
Segunda parte ecuacion de trayectoria que se grafica. El comando sind (angulo en
sexagesimales) zc = ones(1, length(xc))*5; %
Tercera parte ecuacion de trayectoria que se grafica for th =
0:res1:angulo1 % La variable res1 es la velocidad de animacion
y para rotar en el mismo sentido agujas del reloj debe ser positivo
y1 = r*sind(th); % Primera parte de la ecuacion de la
trayectoria que se seguira hasta donde llegue th x1 =
r*cosd(5*th); % Segunda parte de la ecuacion de la
trayectoria que se seguira hasta donde llegue th z1 = 5;
% Esta es la altura en donde se dibujara la trayectoria
Pc = [0;0;z1]; % Punto inicial Pc del radio de la
circunferencia de la Trayectoria Po = [0;0;0];
% Punto inicial Po del vector de posicion (Centro de coordenadas)
Pu = [r;0;z1]; % Punto final Pu del vector posicion fijo
de referencia Ps = [x1;y1;z1]; %
Punto final Ps del vector posicion que esta siguiendo la Trayectoria
th_rad = (th*pi)/180; % Conversion del angulo th en sexagesimal
a th_rad en radianes para la funcion rotx
co_R = (rotz(th_rad))*co; % Ecuacion con la funcion rotz semejante a
la matriz Rz %Rz = [cosd(th) -sind(th) 0; sind(th) cosd(th)
0; 0 0 1]; % Matriz de rotacion en el eje 'Z' en el mismo sentido a las
agujas del reloj %co_R = Rz*co;
% Rotacion del vector co en el eje Z originando el vector co_R
plot3(co_R(1,:)+x1,co_R(2,:)+y1,co_R(3,:)+z1,'r',xc,yc,zc) % Se suma a cada
coordenada de la funcion, las coordenadas de la trayectoria.
% De esta forma parecera como si la funcion estuviera siguiendo a la trayectoria
hold on % Activamos que el grafico anterior se
mantenga vector3d(Po,Ps,'r',1) %
Graficamos el vector posicion que esta siguiendo la Trayectoria (Color Rojo)
hold on % Activamos que el grafico anterior se
mantenga vector3d(Po,Pu,'b',1) %
Graficamos el vector posicion fijo de referencia (Color Azul)
hold on % Activamos que el grafico anterior se
mantenga plot3(0,0,0,'mo') %
Graficamos el centro de coordenadas del Punto Po (Color Magenta)
hold on % Activamos que el grafico anterior se
mantenga plot3(0,0,z1,'mo') %
Graficamos el centro de la Trayectoria del Punto Pc de la circunferencia (Color
Magenta) hold on %
Activamos que el grafico anterior se mantenga
vector3d(Pc,Ps,'g',1) % Graficamos el desplazamiento del vector
del radio de la circunferencia (Color Verde) xlabel('EJE
X','Color','r') % Dar nombre al eje X
ylabel('EJE Y','Color','g') % Dar nombre al eje Y
zlabel('EJE Z','Color','b') % Dar nombre al eje Z
title(['Rotacion 2D en el Eje Z en la Trayectoria 2',' ','Angulo giro positivo =
' num2str(th)]); % Declaramos un titulo con los resultados de los angulos
grid on % Activamos las rejillas
axis([-8 8 -8 8 -8 8]) % Establecemos un sistema de ejes fijo X,
Y y Z como minimos y maximos pause(0.01)
end end if tray1 == 3
% Se elige trayectoria 3 (Teniendo en cuenta el angulo positivo)
t = 0:360; % Se dibuja primero la trayectoria que
seguira la funcion r = 3;
% Aqui la variable r sera parte de la ecuacion de la trayectoria a seguir
xc = 2*r*cosd(t); % Primera parte ecuacion de
trayectoria que se grafica. El comando cosd (angulo en sexagesimales)
yc = r*sind(5*t); % Segunda parte ecuacion de
trayectoria que se grafica. El comando sind (angulo en sexagesimales)
zc = ones(1, length(xc))*5; % Tercera parte ecuacion de
trayectoria que se grafica for th = 0:res1:angulo1
% La variable res1 es la velocidad de animacion y para rotar en el mismo sentido
agujas del reloj debe ser positivo y1 = r*sind(5*th);
% Primera parte de la ecuacion de la trayectoria que se seguira hasta donde llegue
th x1 = 2*r*cosd(th); % Segunda parte
de la ecuacion de la trayectoria que se seguira hasta donde llegue th
z1 = 5; % Esta es la altura en donde se dibujara
la trayectoria
Pc = [0;0;z1]; % Punto inicial
Pc del radio de la circunferencia de la Trayectoria Po =
[0;0;0]; % Punto inicial Po del vector de posicion
(Centro de coordenadas) Pu = [2*r;0;z1];
% Punto final Pu del vector posicion fijo de referencia Ps
= [x1;y1;z1]; % Punto final Ps del vector posicion que esta
siguiendo la Trayectoria th_rad = (th*pi)/180;
% Conversion del angulo th en sexagesimal a th_rad en radianes para la funcion rotx
co_R = (rotz(th_rad))*co; % Ecuacion con la funcion rotz semejante a
la matriz Rz %Rz = [cosd(th) -sind(th) 0; sind(th) cosd(th)
0; 0 0 1]; % Matriz de rotacion en el eje 'Z' en el mismo sentido a las
agujas del reloj %co_R = Rz*co;
% Rotacion del vector co en el eje Z originando el vector co_R
plot3(co_R(1,:)+x1,co_R(2,:)+y1,co_R(3,:)+z1,'r',xc,yc,zc) % Se suma a cada
coordenada de la funcion, las coordenadas de la trayectoria.
% De esta forma parecera como si la funcion estuviera siguiendo a la trayectoria
hold on % Activamos que el grafico anterior se
mantenga vector3d(Po,Ps,'r',1) %
Graficamos el vector posicion que esta siguiendo la Trayectoria (Color Rojo)
hold on % Activamos que el grafico anterior se
mantenga vector3d(Po,Pu,'b',1) %
Graficamos el vector posicion fijo de referencia (Color Azul)
hold on % Activamos que el grafico anterior se
mantenga plot3(0,0,0,'mo') %
Graficamos el centro de coordenadas del Punto Po (Color Magenta)
hold on % Activamos que el grafico anterior se
mantenga plot3(0,0,z1,'mo') %
Graficamos el centro de la Trayectoria del Punto Pc de la circunferencia (Color
Magenta) hold on %
Activamos que el grafico anterior se mantenga
vector3d(Pc,Ps,'g',1) % Graficamos el desplazamiento del vector
del radio de la circunferencia (Color Verde) xlabel('EJE
X','Color','r') % Dar nombre al eje X
ylabel('EJE Y','Color','g') % Dar nombre al eje Y
zlabel('EJE Z','Color','b') % Dar nombre al eje Z
title(['Rotacion 2D en el Eje Z en la Trayectoria 3',' ','Angulo giro positivo =
' num2str(th)]); % Declaramos un titulo con los resultados de los angulos
grid on % Activamos las rejillas
axis([-8 8 -8 8 -8 8]) % Establecemos un sistema de ejes fijo X,
Y y Z como minimos y maximos pause(0.01)
end end end if angulo1 < 0
% Se elige angulo negativo if tray1 == 1
% Se elige trayectoria 1 (Teniendo en cuenta el angulo negativo)
t = 0:360; % Se dibuja primero la trayectoria que
seguira la funcion r = 3;
% Este sera el radio de la Trayectoria de la circunferencia xc
= r*cosd(t); % Primera parte ecuacion de trayectoria
que se grafica. El comando cosd (angulo en sexagesimales) yc =
r*sind(t); % Segunda parte ecuacion de trayectoria que
se grafica. El comando sind (angulo en sexagesimales) zc =
ones(1, length(xc))*5; % Tercera parte ecuacion de trayectoria que
se grafica for th = 0:-res1:angulo1 % La
variable res1 es velocidad animacion y para rotar en el sentido opuesto agujas del
reloj se multiplica por '-1' y1 = r*sind(th);
% La trayectoria que se seguira sera de una circunferencia hasta donde llegue th
x1 = r*cosd(th); % La trayectoria que se seguira sera de
una circunferencia hasta donde llegue th z1 = 5;
% Esta es la altura en donde se dibujara la trayectoria de la circunferencia
Pc = [0;0;z1]; % Punto inicial Pc del radio de la
circunferencia de la Trayectoria Po = [0;0;0];
% Punto inicial Po del vector de posicion (Centro de coordenadas)
Pu = [r;0;z1]; % Punto final Pu del vector posicion fijo
de referencia Ps = [x1;y1;z1]; %
Punto final Ps del vector posicion que esta siguiendo la Trayectoria
th_rad = (th*pi)/180; % Conversion del angulo th en sexagesimal
a th_rad en radianes para la funcion rotz y rotx Pz =
(rotz(th_rad))*Pu; % Ecuacion con la funcion rotz considerando
valores de su angulo en radianes semejante a la matriz Rz
%co_R = (rotz(th_rad))*co; % Ecuacion con la funcion rotx
considerando valores de su angulo en radianes semejante a la matriz Rx
Rz = [cosd(th) -sind(th) 0; sind(th) cosd(th) 0; 0 0 1]; % Matriz de rotacion
en el eje 'Z' en el mismo sentido a las agujas del reloj
co_R = Rz*co; % Rotacion del
vector co en el eje Z originando el vector co_R
plot3(co_R(1,:)+x1,co_R(2,:)+y1,co_R(3,:)+z1,'r',xc,yc,zc) % Se suma a cada
coordenada de la funcion, las coordenadas de la trayectoria.
% De esta forma parecera como si la funcion estuviera siguiendo a la trayectoria
hold on % Activamos que el grafico anterior se
mantenga vector3d(Po,Ps,'r',1) %
Graficamos el vector posicion que esta siguiendo la Trayectoria (Color Rojo)
hold on % Activamos que el grafico anterior se
mantenga vector3d(Po,Pu,'b',1) %
Graficamos el vector posicion fijo de referencia (Color Azul)
hold on % Activamos que el grafico anterior se
mantenga plot3(0,0,0,'mo') %
Graficamos el centro de coordenadas del Punto Po (Color Magenta)
hold on % Activamos que el
grafico anterior se mantenga plot3(0,0,z1,'mo')
% Graficamos el centro de la Trayectoria del Punto Pc de la circunferencia (Color
Magenta) hold on %
Activamos que el grafico anterior se mantenga
vector3d(Pc,Pz,'g',1) % Graficamos el desplazamiento del vector
del radio de la circunferencia (Color Verde) xlabel('EJE
X','Color','r') % Dar nombre al eje X
ylabel('EJE Y','Color','g') % Dar nombre al eje Y
zlabel('EJE Z','Color','b') % Dar nombre al eje Z
title(['Rotacion 2D en el Eje Z en la Trayectoria 1',' ','Angulo giro negativo =
' num2str(th)]); % Declaramos un titulo con los resultados de los angulos
grid on % Activamos las rejillas
axis([-8 8 -8 8 -8 8]) % Establecemos un sistema de ejes fijo X,
Y y Z como minimos y maximos pause(0.01)
end end if tray1 == 2
% Se elige trayectoria 2 (Teniendo en cuenta el angulo negativo)
t = 0:360; % Se dibuja primero la trayectoria que
seguira la funcion r = 3;
% Aqui la variable r sera parte de la ecuacion de la trayectoria a seguir
xc = r*cosd(5*t); % Primera parte ecuacion de
trayectoria que se grafica. El comando cosd (angulo en sexagesimales)
yc = r*sind(t); % Segunda parte ecuacion de
trayectoria que se grafica. El comando sind (angulo en sexagesimales)
zc = ones(1, length(xc))*5; % Tercera parte ecuacion de
trayectoria que se grafica for th = 0:-res1:angulo1
% La variable res1 es velocidad animacion y para rotar en el sentido opuesto agujas
del reloj se multiplica por '-1' y1 = r*sind(th);
% Primera parte de la ecuacion de la trayectoria que se seguira hasta donde llegue
th x1 = r*cosd(5*th); % Segunda parte
de la ecuacion de la trayectoria que se seguira hasta donde llegue th
z1 = 5; % Esta es la altura en donde se dibujara
la trayectoria Pc = [0;0;z1];
% Punto inicial Pc del radio de la circunferencia de la Trayectoria
Po = [0;0;0]; % Punto inicial Po del vector de posicion
(Centro de coordenadas) Pu = [r;0;z1];
% Punto final Pu del vector posicion fijo de referencia Ps
= [x1;y1;z1]; % Punto final Ps del vector posicion que esta
siguiendo la Trayectoria th_rad = (th*pi)/180;
% Conversion del angulo th en sexagesimal a th_rad en radianes para la funcion rotx
co_R = (rotz(th_rad))*co; % Ecuacion con la funcion rotz semejante a
la matriz Rz %Rz = [cosd(th) -sind(th) 0; sind(th) cosd(th)
0; 0 0 1]; % Matriz de rotacion en el eje 'Z' en el mismo sentido a las
agujas del reloj %co_R = Rz*co;
% Rotacion del vector co en el eje Z originando el vector co_R
plot3(co_R(1,:)+x1,co_R(2,:)+y1,co_R(3,:)+z1,'r',xc,yc,zc) % Se suma a cada
coordenada de la funcion, las coordenadas de la trayectoria.
% De esta forma parecera como si la funcion estuviera siguiendo a la trayectoria
hold on % Activamos que el grafico anterior se
mantenga vector3d(Po,Ps,'r',1) %
Graficamos el vector posicion que esta siguiendo la Trayectoria (Color Rojo)
hold on % Activamos que el grafico anterior se
mantenga vector3d(Po,Pu,'b',1) %
Graficamos el vector posicion fijo de referencia (Color Azul)
hold on % Activamos que el grafico anterior se
mantenga plot3(0,0,0,'mo') %
Graficamos el centro de coordenadas del Punto Po (Color Magenta)
hold on % Activamos que el grafico anterior se
mantenga plot3(0,0,z1,'mo') %
Graficamos el centro de la Trayectoria del Punto Pc de la circunferencia (Color
Magenta) hold on %
Activamos que el grafico anterior se mantenga
vector3d(Pc,Ps,'g',1) % Graficamos el desplazamiento del vector
del radio de la circunferencia (Color Verde) xlabel('EJE
X','Color','r') % Dar nombre al eje X
ylabel('EJE Y','Color','g') % Dar nombre al eje Y
zlabel('EJE Z','Color','b') % Dar nombre al eje Z
title(['Rotacion 2D en el Eje Z en la Trayectoria 2',' ','Angulo giro negativo =
' num2str(th)]); % Declaramos un titulo con los resultados de los angulos
grid on % Activamos las rejillas
axis([-8 8 -8 8 -8 8]) % Establecemos un sistema de ejes fijo X,
Y y Z como minimos y maximos pause(0.01)
end end if tray1 == 3
% Se elige trayectoria 3 (Teniendo en cuenta el angulo negativo)
t = 0:360; % Se dibuja primero la trayectoria que
seguira la funcion r = 3;
% Aqui la variable r sera parte de la ecuacion de la trayectoria a seguir
xc = 2*r*cosd(t); % Primera parte ecuacion de
trayectoria que se grafica. El comando cosd (angulo en sexagesimales)
yc = r*sind(5*t); % Segunda parte ecuacion de
trayectoria que se grafica. El comando sind (angulo en sexagesimales)
zc = ones(1, length(xc))*5; % Tercera parte ecuacion de
trayectoria que se grafica for th = 0:-res1:angulo1
% La variable res1 es velocidad animacion y para rotar en el sentido opuesto agujas
del reloj se multiplica por '-1' y1 = r*sind(5*th);
% Primera parte de la ecuacion de la trayectoria que se seguira hasta donde llegue
th
x1 = 2*r*cosd(th); % Segunda parte de
la ecuacion de la trayectoria que se seguira hasta donde llegue th
z1 = 5; % Esta es la altura en donde se dibujara
la trayectoria Pc = [0;0;z1];
% Punto inicial Pc del radio de la circunferencia de la Trayectoria
Po = [0;0;0]; % Punto inicial Po del vector de posicion
(Centro de coordenadas) Pu = [2*r;0;z1];
% Punto final Pu del vector posicion fijo de referencia Ps
= [x1;y1;z1]; % Punto final Ps del vector posicion que esta
siguiendo la Trayectoria th_rad = (th*pi)/180;
% Conversion del angulo th en sexagesimal a th_rad en radianes para la funcion rotx
co_R = (rotz(th_rad))*co; % Ecuacion con la funcion rotz semejante a
la matriz Rz %Rz = [cosd(th) -sind(th) 0; sind(th) cosd(th)
0; 0 0 1]; % Matriz de rotacion en el eje 'Z' en el mismo sentido a las
agujas del reloj %co_R = Rz*co;
% Rotacion del vector co en el eje Z originando el vector co_R
plot3(co_R(1,:)+x1,co_R(2,:)+y1,co_R(3,:)+z1,'r',xc,yc,zc) % Se suma a cada
coordenada de la funcion, las coordenadas de la trayectoria.
% De esta forma parecera como si la funcion estuviera siguiendo a la trayectoria
hold on % Activamos que el grafico anterior se
mantenga vector3d(Po,Ps,'r',1) %
Graficamos el vector posicion que esta siguiendo la Trayectoria (Color Rojo)
hold on % Activamos que el grafico anterior se
mantenga vector3d(Po,Pu,'b',1) %
Graficamos el vector posicion fijo de referencia (Color Azul)
hold on % Activamos que el grafico anterior se
mantenga plot3(0,0,0,'mo') %
Graficamos el centro de coordenadas del Punto Po (Color Magenta)
hold on % Activamos que el grafico anterior se
mantenga plot3(0,0,z1,'mo') %
Graficamos el centro de la Trayectoria del Punto Pc de la circunferencia (Color
Magenta) hold on %
Activamos que el grafico anterior se mantenga
vector3d(Pc,Ps,'g',1) % Graficamos el desplazamiento del vector
del radio de la circunferencia (Color Verde) xlabel('EJE
X','Color','r') % Dar nombre al eje X
ylabel('EJE Y','Color','g') % Dar nombre al eje Y
zlabel('EJE Z','Color','b') % Dar nombre al eje Z
title(['Rotacion 2D en el Eje Z en la Trayectoria 3',' ','Angulo giro negativo =
' num2str(th)]); % Declaramos un titulo con los resultados de los angulos
grid on % Activamos las rejillas
axis([-8 8 -8 8 -8 8]) % Establecemos un sistema de ejes fijo X,
Y y Z como minimos y maximos pause(0.01)
end end end salidaxx =
co_R(1,:); salidayy = co_R(2,:); salidazz = co_R(3,:);
end if variables == 2 %
Rotar con respecto a Z, en 3D if angulo1 >= 0
% Se elige angulo positivo if tray1 == 1
% Se elige trayectoria 1 (Teniendo en cuenta el angulo positivo)
t = 0:360; % Se dibuja primero la trayectoria que
seguira la funcion r = 3;
% Este sera el radio de la Trayectoria de la circunferencia xc
= r*cosd(t); % Primera parte ecuacion de trayectoria
que se grafica. El comando cosd (angulo en sexagesimales) yc =
r*sind(t); % Segunda parte ecuacion de trayectoria que
se grafica. El comando sind (angulo en sexagesimales) zc =
ones(1, length(xc))*5; % Tercera parte ecuacion de trayectoria que
se grafica for th = 0:res1:angulo1 % La
variable res1 es la velocidad de animacion y para rotar en el mismo sentido agujas
del reloj debe ser positivo y1 = r*sind(th);
% Primera parte de la ecuacion de la trayectoria que se seguira hasta donde llegue
th x1 = r*cosd(th); z1 = 5;
% Esta es la altura en donde se dibujara la trayectoria for
c = 1:25 for f = 1:25
Rz = [cosd(th) -sind(th) 0; sind(th) cosd(th) 0; 0 0 1]; % Matriz de rotacion
en el eje 'Z' en el mismo sentido a las agujas del reloj
vector_z = [x(f,c);y(f,c);z(f,c)]; Rot_z =
Rz*vector_z; X(f,c) = Rot_z(1);
Y(f,c) = Rot_z(2); Z(f,c) = Rot_z(3);
end end surf(X+x1,Y+y1,Z+z1)
% Se grafica la superficie 3D con el comando surf xlabel('EJE
X','Color','r') % Dar nombre al eje X
ylabel('EJE Y','Color','g') % Dar nombre al
eje Y zlabel('EJE Z','Color','b') % Dar nombre
al eje Z title(['Rotacion 3D en el Eje Z en la Trayectoria 1','
','Angulo giro positivo = ' num2str(th)]); % Declaramos un titulo con los
resultados de los angulos grid on
% Activamos las rejillas axis([-20 20 -20 20 -20 20]);
% Establecemos un sistema de ejes fijo X, Y y Z como minimos y maximos
pause(0.1); end end
if tray1 == 2 % Se elige trayectoria 2 (Teniendo
en cuenta el angulo positivo) t = 0:360;
% Se dibuja primero la trayectoria que seguira la funcion r =
3; % Aqui la variable r sera parte de la
ecuacion de la trayectoria a seguir xc = r*cosd(5*t);
% Primera parte ecuacion de trayectoria que se grafica. El comando cosd (angulo en
sexagesimales) yc = r*sind(t); %
Segunda parte ecuacion de trayectoria que se grafica. El comando sind (angulo en
sexagesimales) zc = ones(1, length(xc))*5; %
Tercera parte ecuacion de trayectoria que se grafica for th =
0:res1:angulo1 % La variable res1 es la velocidad de animacion
y para rotar en el mismo sentido agujas del reloj debe ser positivo
y1 = r*sind(th); % Primera parte de la ecuacion de la
trayectoria que se seguira hasta donde llegue th x1 =
r*cosd(5*th); % Segunda parte de la ecuacion de la
trayectoria que se seguira hasta donde llegue th z1 = 5;
% Esta es la altura en donde se dibujara la trayectoria for
c = 1:25 for f = 1:25
Rz = [cosd(th) -sind(th) 0; sind(th) cosd(th) 0; 0 0 1]; % Matriz de rotacion
en el eje 'Z' en el mismo sentido a las agujas del reloj
vector_z = [x(f,c);y(f,c);z(f,c)]; Rot_z =
Rz*vector_z; X(f,c) = Rot_z(1);
Y(f,c) = Rot_z(2); Z(f,c) = Rot_z(3);
end end surf(X+x1,Y+y1,Z+z1)
% Se grafica la superficie 3D con el comando surf xlabel('EJE
X','Color','r') % Dar nombre al eje X
ylabel('EJE Y','Color','g') % Dar nombre al eje Y
zlabel('EJE Z','Color','b') % Dar nombre al eje Z
title(['Rotacion 3D en el Eje Z en la Trayectoria 2',' ','Angulo giro positivo =
' num2str(th)]); % Declaramos un titulo con los resultados de los angulos
grid on % Activamos las rejillas
axis([-20 20 -20 20 -20 20]); % Establecemos un sistema de ejes fijo
X, Y y Z como minimos y maximos pause(0.1);
end end if tray1 == 3
% Se elige trayectoria 3 (Teniendo en cuenta el angulo positivo)
t = 0:360; % Se dibuja primero la trayectoria que
seguira la funcion r = 3;
% Aqui la variable r sera parte de la ecuacion de la trayectoria a seguir
xc = 2*r*cosd(t); % Primera parte ecuacion de
trayectoria que se grafica. El comando cosd (angulo en sexagesimales)
yc = r*sind(5*t); % Segunda parte ecuacion de
trayectoria que se grafica. El comando sind (angulo en sexagesimales)
zc = ones(1, length(xc))*5; % Tercera parte ecuacion de
trayectoria que se grafica for th = 0:res1:angulo1
% La variable res1 es la velocidad de animacion y para rotar en el mismo sentido
agujas del reloj debe ser positivo y1 = r*sind(5*th);
% Primera parte de la ecuacion de la trayectoria que se seguira hasta donde llegue
th x1 = 2*r*cosd(th); z1 = 5;
% Esta es la altura en donde se dibujara la trayectoria for
c = 1:25 for f = 1:25
Rz = [cosd(th) -sind(th) 0; sind(th) cosd(th) 0; 0 0 1]; % Matriz de rotacion
en el eje 'Z' en el mismo sentido a las agujas del reloj
vector_z = [x(f,c);y(f,c);z(f,c)]; Rot_z =
Rz*vector_z; X(f,c) = Rot_z(1);
Y(f,c) = Rot_z(2); Z(f,c) = Rot_z(3);
end end surf(X+x1,Y+y1,Z+z1)
% Se grafica la superficie 3D con el comando surf xlabel('EJE
X','Color','r') % Dar nombre al eje X
ylabel('EJE Y','Color','g') % Dar nombre al eje Y
zlabel('EJE Z','Color','b') % Dar nombre al eje Z
title(['Rotacion 3D en el Eje Z en la Trayectoria 3',' ','Angulo giro positivo =
' num2str(th)]); % Declaramos un titulo con los resultados de los angulos
grid on % Activamos las
rejillas axis([-20 20 -20 20 -20 20]); %
Establecemos un sistema de ejes fijo X, Y y Z como minimos y maximos
pause(0.1); end end end
if angulo1 < 0 % Se elige angulo negativo
if tray1 == 1 % Se elige trayectoria 1 (Teniendo
en cuenta el angulo negativo) t = 0:360;
% Se dibuja primero la trayectoria que seguira la funcion r =
3; % Este sera el radio de la Trayectoria de
la circunferencia xc = r*cosd(t);
% Primera parte ecuacion de trayectoria que se grafica. El comando cosd (angulo en
sexagesimales) yc = r*sind(t); %
Segunda parte ecuacion de trayectoria que se grafica. El comando sind (angulo en
sexagesimales) zc = ones(1, length(xc))*5; %
Tercera parte ecuacion de trayectoria que se grafica for th =
0:-res1:angulo1 % La variable res1 es velocidad animacion y
para rotar en el sentido opuesto agujas del reloj se multiplica por '-1'
y1 = r*sind(th); % Primera parte de la ecuacion de la
trayectoria que se seguira hasta donde llegue th x1 =
r*cosd(th); % Segunda parte de la ecuacion de la
trayectoria que se seguira hasta donde llegue th z1 = 5;
% Esta es la altura en donde se dibujara la trayectoria for
c = 1:25 for f = 1:25
Rz = [cosd(th) -sind(th) 0; sind(th) cosd(th) 0; 0 0 1]; % Matriz de rotacion
en el eje 'Z' en el mismo sentido a las agujas del reloj
vector_z = [x(f,c);y(f,c);z(f,c)]; Rot_z =
Rz*vector_z; X(f,c) = Rot_z(1);
Y(f,c) = Rot_z(2); Z(f,c) = Rot_z(3);
end end surf(X+x1,Y+y1,Z+z1)
% Se grafica la superficie 3D con el comando surf xlabel('EJE
X','Color','r') % Dar nombre al eje X
ylabel('EJE Y','Color','g') % Dar nombre al eje Y
zlabel('EJE Z','Color','b') % Dar nombre al eje Z
title(['Rotacion 3D en el Eje Z en la Trayectoria 1',' ','Angulo giro negativo =
' num2str(th)]); % Declaramos un titulo con los resultados de los angulos
grid on % Activamos las rejillas
axis([-20 20 -20 20 -20 20]); % Establecemos un sistema de ejes fijo
X, Y y Z como minimos y maximos pause(0.1);
end end if tray1 == 2
% Se elige trayectoria 2 (Teniendo en cuenta el angulo negativo)
t = 0:360; % Se dibuja primero la trayectoria que
seguira la funcion r = 3;
% Aqui la variable r sera parte de la ecuacion de la trayectoria a seguir
xc = r*cosd(5*t); % Primera parte ecuacion de
trayectoria que se grafica. El comando cosd (angulo en sexagesimales)
yc = r*sind(t); % Segunda parte ecuacion de
trayectoria que se grafica. El comando sind (angulo en sexagesimales)
zc = ones(1, length(xc))*5; % Tercera parte ecuacion de
trayectoria que se grafica for th = 0:-res1:angulo1
% La variable res1 es velocidad animacion y para rotar en el sentido opuesto agujas
del reloj se multiplica por '-1' y1 = r*sind(th);
% Primera parte de la ecuacion de la trayectoria que se seguira hasta donde llegue
th x1 = r*cosd(5*th); % Segunda parte
de la ecuacion de la trayectoria que se seguira hasta donde llegue th
z1 = 5; % Esta es la altura en donde se dibujara
la trayectoria for c = 1:25 for
f = 1:25 Rz = [cosd(th) -sind(th) 0; sind(th)
cosd(th) 0; 0 0 1]; % Matriz de rotacion en el eje 'Z' en el mismo sentido a
las agujas del reloj vector_z =
[x(f,c);y(f,c);z(f,c)]; Rot_z = Rz*vector_z;
X(f,c) = Rot_z(1); Y(f,c) = Rot_z(2);
Z(f,c) = Rot_z(3); end end
surf(X+x1,Y+y1,Z+z1) % Se grafica la superficie 3D con el
comando surf xlabel('EJE X','Color','r') % Dar
nombre al eje X ylabel('EJE Y','Color','g') %
Dar nombre al eje Y zlabel('EJE Z','Color','b')
% Dar nombre al eje Z title(['Rotacion 3D en el Eje Z en la
Trayectoria 2',' ','Angulo giro negativo = ' num2str(th)]); % Declaramos un
titulo con los resultados de los angulos grid on
% Activamos las rejillas
axis([-20 20 -20 20 -20 20]); % Establecemos un
sistema de ejes fijo X, Y y Z como minimos y maximos
pause(0.1); end end
if tray1 == 3 % Se elige trayectoria 3 (Teniendo
en cuenta el angulo negativo) t = 0:360;
% Se dibuja primero la trayectoria que seguira la funcion r =
3; % Aqui la variable r sera parte de la
ecuacion de la trayectoria a seguir xc = 2*r*cosd(t);
% Primera parte ecuacion de trayectoria que se grafica. El comando cosd (angulo en
sexagesimales) yc = r*sind(5*t); %
Segunda parte ecuacion de trayectoria que se grafica. El comando sind (angulo en
sexagesimales) zc = ones(1, length(xc))*5; %
Tercera parte ecuacion de trayectoria que se grafica for th =
0:-res1:angulo1 % La variable res1 es velocidad animacion y
para rotar en el sentido opuesto agujas del reloj se multiplica por '-1'
y1 = r*sind(5*th); % Primera parte de la ecuacion de la
trayectoria que se seguira hasta donde llegue th x1 =
2*r*cosd(th); % Segunda parte de la ecuacion de la
trayectoria que se seguira hasta donde llegue th z1 = 5;
% Esta es la altura en donde se dibujara la trayectoria for
c = 1:25 for f = 1:25
Rz = [cosd(th) -sind(th) 0; sind(th) cosd(th) 0; 0 0 1]; % Matriz de rotacion
en el eje 'Z' en el mismo sentido a las agujas del reloj
vector_z = [x(f,c);y(f,c);z(f,c)]; Rot_z =
Rz*vector_z; X(f,c) = Rot_z(1);
Y(f,c) = Rot_z(2); Z(f,c) = Rot_z(3);
end end surf(X+x1,Y+y1,Z+z1)
% Se grafica la superficie 3D con el comando surf xlabel('EJE
X','Color','r') % Dar nombre al eje X
ylabel('EJE Y','Color','g') % Dar nombre al eje Y
zlabel('EJE Z','Color','b') % Dar nombre al eje Z
title(['Rotacion 3D en el Eje Z en la Trayectoria 3',' ','Angulo giro negativo =
' num2str(th)]); % Declaramos un titulo con los resultados de los angulos
grid on % Activamos las rejillas
axis([-20 20 -20 20 -20 20]); % Establecemos un sistema de ejes fijo
X, Y y Z como minimos y maximos pause(0.1);
end end end end case 4
% Todo el case 4 es rotar con respecto a un eje arbitrario xk =
get(handles.edit6,'String'); xk1 = str2num(xk);
% Componente 'X' del vector arbitrario yk = get(handles.edit7,'String');
yk1 = str2num(yk); % Componente 'Y' del
vector arbitrario zk = get(handles.edit8,'String'); zk1 =
str2num(zk); % Componente 'Z' del vector
arbitrario m = sqrt((xk1^2)+(yk1^2)+(zk1^2)); %
Obtenci�n de la magnitud del vector arbitrario eje_a = [xk1/m; yk1/m;
zk1/m]; % Vector unitario con direcci�n del vector
arbitrario if variables == 1
% Rotar con respecto al Eje arbitrario, en 2D co = [salidaxx; salidayy;
salidazz]; if angulo1 >= 0 % Se
elige angulo positivo if tray1 == 1
% Se elige trayectoria 1 (Teniendo en cuenta el angulo positivo)
t = 0:360; % Se dibuja primero la trayectoria que
seguira la funcion r = 3;
% Este sera el radio de la Trayectoria de la circunferencia xc
= r*cosd(t); % Primera parte ecuacion de trayectoria
que se grafica. El comando cosd (angulo en sexagesimales) yc =
r*sind(t); % Segunda parte ecuacion de trayectoria que
se grafica. El comando sind (angulo en sexagesimales) zc =
ones(1, length(xc))*5; % Tercera parte ecuacion de trayectoria que
se grafica for th = 0:res1:angulo1 % La
variable res1 es la velocidad de animacion y para rotar en el mismo sentido agujas
del reloj debe ser positivo y1 = r*sind(th);
% Primera parte de la ecuacion de la trayectoria que se seguira hasta donde llegue
th x1 = r*cosd(th); % Segunda parte
de la ecuacion de la trayectoria que se seguira hasta donde llegue th
z1 = 5; % Esta es la altura en donde se dibujara
la trayectoria Pc = [0;0;z1]; %
Punto inicial Pc del radio de la circunferencia de la Trayectoria
Po = [0;0;0]; % Punto inicial Po del vector de posicion
(Centro de coordenadas) Pu = [r;0;z1];
% Punto final Pu del vector posicion fijo de referencia
Ps = [x1;y1;z1]; % Punto final Ps
del vector posicion que esta siguiendo la Trayectoria
th_rad = (th*pi)/180; % Conversion del angulo th en sexagesimal
a th_rad en radianes para la funcion rotz y rotx Pz =
(rotz(th_rad))*Pu; % Ecuacion con la funcion rotz considerando
valores de su angulo en radianes semejante a la matriz Rz
vo = 1-cosd(th); R_eje_a = [(eje_a(1)^2)*vo+cosd(th),
eje_a(1)*eje_a(2)*vo-eje_a(3)*sind(th), eje_a(1)*eje_a(3)*vo+eje_a(2)*sind(th);
eje_a(1)*eje_a(2)*vo+eje_a(3)*sind(th), (eje_a(2)^2)*vo+cosd(th),
eje_a(2)*eje_a(3)*vo-eje_a(1)*sind(th); eje_a(1)*eje_a(3)*vo-eje_a(2)*sind(th),
eje_a(2)*eje_a(3)*vo+eje_a(1)*sind(th), (eje_a(3)^2)*vo+cosd(th)];
co_R = R_eje_a*co;
plot3(co_R(1,:)+x1,co_R(2,:)+y1,co_R(3,:)+z1,'r',xc,yc,zc) % Se suma a cada
coordenada de la funcion, las coordenadas de la trayectoria.
% De esta forma parecera como si la funcion estuviera siguiendo a la trayectoria
hold on % Activamos que el grafico anterior se
mantenga vector3d(Po,Ps,'r',1) %
Graficamos el vector posicion que esta siguiendo la Trayectoria (Color Rojo)
hold on % Activamos que el grafico anterior se
mantenga vector3d(Po,Pu,'b',1) %
Graficamos el vector posicion fijo de referencia (Color Azul)
hold on % Activamos que el grafico anterior se
mantenga plot3(0,0,0,'mo') %
Graficamos el centro de coordenadas del Punto Po (Color Magenta)
hold on % Activamos que el grafico anterior se
mantenga plot3(0,0,z1,'mo') %
Graficamos el centro de la Trayectoria del Punto Pc de la circunferencia (Color
Magenta) hold on %
Activamos que el grafico anterior se mantenga
vector3d(Pc,Pz,'g',1) % Graficamos el desplazamiento del vector
del radio de la circunferencia (Color Verde) xlabel('EJE
X','Color','r') % Dar nombre al eje X
ylabel('EJE Y','Color','g') % Dar nombre al eje Y
zlabel('EJE Z','Color','b') % Dar nombre al eje Z
title(['Rotacion 2D en un Eje Arbitrario en la Trayectoria 1',' ','Angulo giro
positivo = ' num2str(th)]); % Declaramos un titulo con resultados de angulos
grid on % Activamos las rejillas
axis([-8 8 -8 8 -8 8]) % Establecemos un sistema de ejes fijo X,
Y y Z como minimos y maximos pause(0.01)
end end if tray1 == 2
% Se elige trayectoria 2 (Teniendo en cuenta el angulo positivo)
t = 0:360; % Se dibuja primero la trayectoria que
seguira la funcion r = 3;
% Aqui la variable r sera parte de la ecuacion de la trayectoria a seguir
xc = r*cosd(5*t); % Primera parte ecuacion de
trayectoria que se grafica. El comando cosd (angulo en sexagesimales)
yc = r*sind(t); % Segunda parte ecuacion de
trayectoria que se grafica. El comando sind (angulo en sexagesimales)
zc = ones(1, length(xc))*5; % Tercera parte ecuacion de
trayectoria que se grafica for th = 0:res1:angulo1
% La variable res1 es la velocidad de animacion y para rotar en el mismo sentido
agujas del reloj debe ser positivo y1 = r*sind(th);
% Primera parte de la ecuacion de la trayectoria que se seguira hasta donde llegue
th x1 = r*cosd(5*th); % Segunda parte
de la ecuacion de la trayectoria que se seguira hasta donde llegue th
z1 = 5; % Esta es la altura en donde se dibujara
la trayectoria Pc = [0;0;z1];
% Punto inicial Pc del radio de la circunferencia de la Trayectoria
Po = [0;0;0]; % Punto inicial Po del vector de posicion
(Centro de coordenadas) Pu = [r;0;z1];
% Punto final Pu del vector posicion fijo de referencia Ps
= [x1;y1;z1]; % Punto final Ps del vector posicion que esta
siguiendo la Trayectoria th_rad = (th*pi)/180;
% Conversion del angulo th en sexagesimal a th_rad en radianes para la funcion rotx
vo = 1-cosd(th); R_eje_a = [(eje_a(1)^2)*vo+cosd(th),
eje_a(1)*eje_a(2)*vo-eje_a(3)*sind(th), eje_a(1)*eje_a(3)*vo+eje_a(2)*sind(th);
eje_a(1)*eje_a(2)*vo+eje_a(3)*sind(th), (eje_a(2)^2)*vo+cosd(th),
eje_a(2)*eje_a(3)*vo-eje_a(1)*sind(th); eje_a(1)*eje_a(3)*vo-eje_a(2)*sind(th),
eje_a(2)*eje_a(3)*vo+eje_a(1)*sind(th), (eje_a(3)^2)*vo+cosd(th)];
co_R = R_eje_a*co;
plot3(co_R(1,:)+x1,co_R(2,:)+y1,co_R(3,:)+z1,'r',xc,yc,zc) % Se suma a cada
coordenada de la funcion, las coordenadas de la trayectoria.
% De esta forma parecera como si la funcion estuviera siguiendo a la trayectoria
hold on % Activamos que el grafico anterior se
mantenga vector3d(Po,Ps,'r',1) %
Graficamos el vector posicion que esta siguiendo la Trayectoria (Color Rojo)
hold on % Activamos que el grafico anterior se
mantenga vector3d(Po,Pu,'b',1) %
Graficamos el vector posicion fijo de referencia (Color Azul)
hold on % Activamos que el grafico anterior se
mantenga plot3(0,0,0,'mo') %
Graficamos el centro de coordenadas del Punto Po (Color Magenta)
hold on % Activamos que el grafico anterior se
mantenga plot3(0,0,z1,'mo') %
Graficamos el centro de la Trayectoria del Punto Pc de la circunferencia (Color
Magenta) hold on %
Activamos que el grafico anterior se mantenga
vector3d(Pc,Ps,'g',1) % Graficamos el desplazamiento del vector
del radio de la circunferencia (Color Verde)
xlabel('EJE X','Color','r') % Dar nombre al
eje X ylabel('EJE Y','Color','g') % Dar nombre
al eje Y zlabel('EJE Z','Color','b') % Dar
nombre al eje Z title(['Rotacion 2D en un Eje Arbitrario en
la Trayectoria 2',' ','Angulo giro positivo = ' num2str(th)]); % Declaramos un
titulo con resultados de angulos grid on
% Activamos las rejillas axis([-8 8 -8 8 -8 8])
% Establecemos un sistema de ejes fijo X, Y y Z como minimos y maximos
pause(0.01) end end
if tray1 == 3 % Se elige trayectoria 3 (Teniendo
en cuenta el angulo positivo) t = 0:360;
% Se dibuja primero la trayectoria que seguira la funcion r =
3; % Aqui la variable r sera parte de la
ecuacion de la trayectoria a seguir xc = 2*r*cosd(t);
% Primera parte ecuacion de trayectoria que se grafica. El comando cosd (angulo en
sexagesimales) yc = r*sind(5*t); %
Segunda parte ecuacion de trayectoria que se grafica. El comando sind (angulo en
sexagesimales) zc = ones(1, length(xc))*5; %
Tercera parte ecuacion de trayectoria que se grafica for th =
0:res1:angulo1 % La variable res1 es la velocidad de animacion
y para rotar en el mismo sentido agujas del reloj debe ser positivo
y1 = r*sind(5*th); % Primera parte de la ecuacion de la
trayectoria que se seguira hasta donde llegue th x1 =
2*r*cosd(th); % Segunda parte de la ecuacion de la
trayectoria que se seguira hasta donde llegue th z1 = 5;
% Esta es la altura en donde se dibujara la trayectoria
Pc = [0;0;z1]; % Punto inicial Pc del radio de la
circunferencia de la Trayectoria Po = [0;0;0];
% Punto inicial Po del vector de posicion (Centro de coordenadas)
Pu = [2*r;0;z1]; % Punto final Pu del vector posicion fijo
de referencia Ps = [x1;y1;z1]; %
Punto final Ps del vector posicion que esta siguiendo la Trayectoria
th_rad = (th*pi)/180; % Conversion del angulo th en sexagesimal
a th_rad en radianes para la funcion rotx
vo = 1-cosd(th); R_eje_a = [(eje_a(1)^2)*vo+cosd(th),
eje_a(1)*eje_a(2)*vo-eje_a(3)*sind(th), eje_a(1)*eje_a(3)*vo+eje_a(2)*sind(th);
eje_a(1)*eje_a(2)*vo+eje_a(3)*sind(th), (eje_a(2)^2)*vo+cosd(th),
eje_a(2)*eje_a(3)*vo-eje_a(1)*sind(th); eje_a(1)*eje_a(3)*vo-eje_a(2)*sind(th),
eje_a(2)*eje_a(3)*vo+eje_a(1)*sind(th), (eje_a(3)^2)*vo+cosd(th)];
co_R = R_eje_a*co;
plot3(co_R(1,:)+x1,co_R(2,:)+y1,co_R(3,:)+z1,'r',xc,yc,zc) % Se suma a cada
coordenada de la funcion, las coordenadas de la trayectoria.
% De esta forma parecera como si la funcion estuviera siguiendo a la trayectoria
hold on % Activamos que el grafico anterior se
mantenga vector3d(Po,Ps,'r',1) %
Graficamos el vector posicion que esta siguiendo la Trayectoria (Color Rojo)
hold on % Activamos que el grafico anterior se
mantenga vector3d(Po,Pu,'b',1) %
Graficamos el vector posicion fijo de referencia (Color Azul)
hold on % Activamos que el grafico anterior se
mantenga plot3(0,0,0,'mo') %
Graficamos el centro de coordenadas del Punto Po (Color Magenta)
hold on % Activamos que el grafico anterior se
mantenga plot3(0,0,z1,'mo') %
Graficamos el centro de la Trayectoria del Punto Pc de la circunferencia (Color
Magenta) hold on %
Activamos que el grafico anterior se mantenga
vector3d(Pc,Ps,'g',1) % Graficamos el desplazamiento del vector
del radio de la circunferencia (Color Verde) xlabel('EJE
X','Color','r') % Dar nombre al eje X
ylabel('EJE Y','Color','g') % Dar nombre al eje Y
zlabel('EJE Z','Color','b') % Dar nombre al eje Z
title(['Rotacion 2D en un Eje Arbitrario en la Trayectoria 3',' ','Angulo giro
positivo = ' num2str(th)]); % Declaramos un titulo con resultados de angulos
grid on % Activamos las rejillas
axis([-8 8 -8 8 -8 8]) pause(0.01) end
end end if angulo1 < 0
% Se elige angulo negativo if tray1 == 1
% Se elige trayectoria 1 (Teniendo en cuenta el angulo negativo)
t = 0:360; % Se dibuja primero la trayectoria que
seguira la funcion r = 3;
% Este sera el radio de la Trayectoria de la circunferencia xc
= r*cosd(t); % Primera parte ecuacion de trayectoria
que se grafica. El comando cosd (angulo en sexagesimales) yc =
r*sind(t); % Segunda parte ecuacion de trayectoria que
se grafica. El comando sind (angulo en sexagesimales) zc =
ones(1, length(xc))*5; % Tercera parte ecuacion de trayectoria que
se grafica for th = 0:-res1:angulo1 % La
variable res1 es velocidad animacion y para rotar en el sentido opuesto agujas del
reloj se multiplica por '-1' y1 = r*sind(th);
% Primera parte de la ecuacion de la trayectoria que se seguira hasta donde llegue
th x1 = r*cosd(th); % Segunda parte
de la ecuacion de la trayectoria que se seguira hasta donde llegue th
z1 = 5; % Esta es la
altura en donde se dibujara la trayectoria
Pc = [0;0;z1]; % Punto inicial Pc del radio de la
circunferencia de la Trayectoria Po = [0;0;0];
% Punto inicial Po del vector de posicion (Centro de coordenadas)
Pu = [r;0;z1]; % Punto final Pu del vector posicion fijo
de referencia Ps = [x1;y1;z1]; %
Punto final Ps del vector posicion que esta siguiendo la Trayectoria
th_rad = (th*pi)/180; % Conversion del angulo th en sexagesimal
a th_rad en radianes para la funcion rotz y rotx Pz =
(rotz(th_rad))*Pu; % Ecuacion con la funcion rotz considerando
valores de su angulo en radianes semejante a la matriz Rz
vo = 1-cosd(th); R_eje_a = [(eje_a(1)^2)*vo+cosd(th),
eje_a(1)*eje_a(2)*vo-eje_a(3)*sind(th), eje_a(1)*eje_a(3)*vo+eje_a(2)*sind(th);
eje_a(1)*eje_a(2)*vo+eje_a(3)*sind(th), (eje_a(2)^2)*vo+cosd(th),
eje_a(2)*eje_a(3)*vo-eje_a(1)*sind(th); eje_a(1)*eje_a(3)*vo-eje_a(2)*sind(th),
eje_a(2)*eje_a(3)*vo+eje_a(1)*sind(th), (eje_a(3)^2)*vo+cosd(th)];
co_R = R_eje_a*co;
plot3(co_R(1,:)+x1,co_R(2,:)+y1,co_R(3,:)+z1,'r',xc,yc,zc) % Se suma a cada
coordenada de la funcion, las coordenadas de la trayectoria.
% De esta forma parecera como si la funcion estuviera siguiendo a la trayectoria
hold on % Activamos que el grafico anterior se
mantenga vector3d(Po,Ps,'r',1) %
Graficamos el vector posicion que esta siguiendo la Trayectoria (Color Rojo)
hold on % Activamos que el grafico anterior se
mantenga vector3d(Po,Pu,'b',1) %
Graficamos el vector posicion fijo de referencia (Color Azul)
hold on % Activamos que el grafico anterior se
mantenga plot3(0,0,0,'mo') %
Graficamos el centro de coordenadas del Punto Po (Color Magenta)
hold on % Activamos que el grafico anterior se
mantenga plot3(0,0,z1,'mo') %
Graficamos el centro de la Trayectoria del Punto Pc de la circunferencia (Color
Magenta) hold on %
Activamos que el grafico anterior se mantenga
vector3d(Pc,Pz,'g',1) % Graficamos el desplazamiento del vector
del radio de la circunferencia (Color Verde) xlabel('EJE
X','Color','r') % Dar nombre al eje X
ylabel('EJE Y','Color','g') % Dar nombre al eje Y
zlabel('EJE Z','Color','b') % Dar nombre al eje Z
title(['Rotacion 2D en un Eje Arbitrario en la Trayectoria 1',' ','Angulo giro
negativo = ' num2str(th)]); % Declaramos un titulo con resultados de angulos
grid on % Activamos las rejillas
axis([-8 8 -8 8 -8 8]) % Establecemos un sistema de ejes fijo X,
Y y Z como minimos y maximos pause(0.01)
end end if tray1 == 2
% Se elige trayectoria 2 (Teniendo en cuenta el angulo negativo)
t = 0:360; % Se dibuja primero la trayectoria que
seguira la funcion r = 3;
% Aqui la variable r sera parte de la ecuacion de la trayectoria a seguir
xc = r*cosd(5*t); % Primera parte ecuacion de
trayectoria que se grafica. El comando cosd (angulo en sexagesimales)
yc = r*sind(t); % Segunda parte ecuacion de
trayectoria que se grafica. El comando sind (angulo en sexagesimales)
zc = ones(1, length(xc))*5; % Tercera parte ecuacion de
trayectoria que se grafica for th = 0:-res1:angulo1
% La variable res1 es velocidad animacion y para rotar en el sentido opuesto agujas
del reloj se multiplica por '-1' y1 = r*sind(th);
% Primera parte de la ecuacion de la trayectoria que se seguira hasta donde llegue
th x1 = r*cosd(5*th); % Segunda parte
de la ecuacion de la trayectoria que se seguira hasta donde llegue th
z1 = 5; % Esta es la altura en donde se dibujara
la trayectoria Pc = [0;0;z1];
% Punto inicial Pc del radio de la circunferencia de la Trayectoria
Po = [0;0;0]; % Punto inicial Po del vector de posicion
(Centro de coordenadas) Pu = [r;0;z1];
% Punto final Pu del vector posicion fijo de referencia Ps
= [x1;y1;z1]; % Punto final Ps del vector posicion que esta
siguiendo la Trayectoria th_rad = (th*pi)/180;
% Conversion del angulo th en sexagesimal a th_rad en radianes para la funcion rotx
vo = 1-cosd(th); R_eje_a = [(eje_a(1)^2)*vo+cosd(th),
eje_a(1)*eje_a(2)*vo-eje_a(3)*sind(th), eje_a(1)*eje_a(3)*vo+eje_a(2)*sind(th);
eje_a(1)*eje_a(2)*vo+eje_a(3)*sind(th), (eje_a(2)^2)*vo+cosd(th),
eje_a(2)*eje_a(3)*vo-eje_a(1)*sind(th); eje_a(1)*eje_a(3)*vo-eje_a(2)*sind(th),
eje_a(2)*eje_a(3)*vo+eje_a(1)*sind(th), (eje_a(3)^2)*vo+cosd(th)];
co_R = R_eje_a*co;
plot3(co_R(1,:)+x1,co_R(2,:)+y1,co_R(3,:)+z1,'r',xc,yc,zc) % Se suma a cada
coordenada de la funcion, las coordenadas de la trayectoria.
% De esta forma parecera como si la funcion estuviera siguiendo a la trayectoria
hold on % Activamos que el grafico anterior se
mantenga vector3d(Po,Ps,'r',1) %
Graficamos el vector posicion que esta siguiendo la Trayectoria (Color Rojo)
hold on % Activamos que el grafico anterior se
mantenga vector3d(Po,Pu,'b',1) %
Graficamos el vector posicion fijo de referencia (Color Azul)
hold on % Activamos que el grafico anterior se
mantenga
plot3(0,0,0,'mo') % Graficamos el
centro de coordenadas del Punto Po (Color Magenta) hold on
% Activamos que el grafico anterior se mantenga
plot3(0,0,z1,'mo') % Graficamos el centro de la Trayectoria
del Punto Pc de la circunferencia (Color Magenta) hold on
% Activamos que el grafico anterior se mantenga
vector3d(Pc,Ps,'g',1) % Graficamos el desplazamiento del vector
del radio de la circunferencia (Color Verde) xlabel('EJE
X','Color','r') % Dar nombre al eje X
ylabel('EJE Y','Color','g') % Dar nombre al eje Y
zlabel('EJE Z','Color','b') % Dar nombre al eje Z
title(['Rotacion 2D en un Eje Arbitrario en la Trayectoria 2',' ','Angulo giro
negativo = ' num2str(th)]); % Declaramos un titulo con resultados de angulos
grid on % Activamos las rejillas
axis([-8 8 -8 8 -8 8]) % Establecemos un sistema de ejes fijo X,
Y y Z como minimos y maximos pause(0.01)
end end if tray1 == 3
% Se elige trayectoria 3 (Teniendo en cuenta el angulo negativo)
t = 0:360; % Se dibuja primero la trayectoria que
seguira la funcion r = 3;
% Aqui la variable r sera parte de la ecuacion de la trayectoria a seguir
xc = 2*r*cosd(t); % Primera parte ecuacion de
trayectoria que se grafica. El comando cosd (angulo en sexagesimales)
yc = r*sind(5*t); % Segunda parte ecuacion de
trayectoria que se grafica. El comando sind (angulo en sexagesimales)
zc = ones(1, length(xc))*5; % Tercera parte ecuacion de
trayectoria que se grafica for th = 0:-res1:angulo1
% La variable res1 es velocidad animacion y para rotar en el sentido opuesto agujas
del reloj se multiplica por '-1' y1 = r*sind(5*th);
% Primera parte de la ecuacion de la trayectoria que se seguira hasta donde llegue
th x1 = 2*r*cosd(th); % Segunda parte
de la ecuacion de la trayectoria que se seguira hasta donde llegue th
z1 = 5; % Esta es la altura en donde se dibujara
la trayectoria Pc = [0;0;z1];
% Punto inicial Pc del radio de la circunferencia de la Trayectoria
Po = [0;0;0]; % Punto inicial Po del vector de posicion
(Centro de coordenadas) Pu = [2*r;0;z1];
% Punto final Pu del vector posicion fijo de referencia Ps
= [x1;y1;z1]; % Punto final Ps del vector posicion que esta
siguiendo la Trayectoria th_rad = (th*pi)/180;
% Conversion del angulo th en sexagesimal a th_rad en radianes para la funcion rotx
vo = 1-cosd(th); R_eje_a = [(eje_a(1)^2)*vo+cosd(th),
eje_a(1)*eje_a(2)*vo-eje_a(3)*sind(th), eje_a(1)*eje_a(3)*vo+eje_a(2)*sind(th);
eje_a(1)*eje_a(2)*vo+eje_a(3)*sind(th), (eje_a(2)^2)*vo+cosd(th),
eje_a(2)*eje_a(3)*vo-eje_a(1)*sind(th); eje_a(1)*eje_a(3)*vo-eje_a(2)*sind(th),
eje_a(2)*eje_a(3)*vo+eje_a(1)*sind(th), (eje_a(3)^2)*vo+cosd(th)];
co_R = R_eje_a*co;
plot3(co_R(1,:)+x1,co_R(2,:)+y1,co_R(3,:)+z1,'r',xc,yc,zc) % Se suma a cada
coordenada de la funcion, las coordenadas de la trayectoria.
% De esta forma parecera como si la funcion estuviera siguiendo a la trayectoria
hold on % Activamos que el grafico anterior se
mantenga vector3d(Po,Ps,'r',1) %
Graficamos el vector posicion que esta siguiendo la Trayectoria (Color Rojo)
hold on % Activamos que el grafico anterior se
mantenga vector3d(Po,Pu,'b',1) %
Graficamos el vector posicion fijo de referencia (Color Azul)
hold on % Activamos que el grafico anterior se
mantenga plot3(0,0,0,'mo') %
Graficamos el centro de coordenadas del Punto Po (Color Magenta)
hold on % Activamos que el grafico anterior se
mantenga plot3(0,0,z1,'mo') %
Graficamos el centro de la Trayectoria del Punto Pc de la circunferencia (Color
Magenta) hold on %
Activamos que el grafico anterior se mantenga
vector3d(Pc,Ps,'g',1) % Graficamos el desplazamiento del vector
del radio de la circunferencia (Color Verde) xlabel('EJE
X','Color','r') % Dar nombre al eje X
ylabel('EJE Y','Color','g') % Dar nombre al eje Y
zlabel('EJE Z','Color','b') % Dar nombre al eje Z
title(['Rotacion 2D en un Eje Arbitrario en la Trayectoria 3',' ','Angulo giro
negativo = ' num2str(th)]); % Declaramos un titulo con resultados de angulos
grid on % Activamos las rejillas
axis([-8 8 -8 8 -8 8]) % Establecemos un sistema de ejes fijo X,
Y y Z como minimos y maximos pause(0.01)
end end end salidaxx =
co_R(1,:); salidayy = co_R(2,:); salidazz = co_R(3,:);
end
if variables == 2 % Rotar con
respecto al Eje arbitrario, en 3D if angulo1 >= 0
% Se elige angulo positivo if tray1 == 1
% Se elige trayectoria 1 (Teniendo en cuenta el angulo positivo)
t = 0:360; % Se dibuja primero la trayectoria que
seguira la funcion r = 3;
% Este sera el radio de la Trayectoria de la circunferencia xc
= r*cosd(t); % Primera parte ecuacion de trayectoria
que se grafica. El comando cosd (angulo en sexagesimales) yc =
r*sind(t); % Segunda parte ecuacion de trayectoria que
se grafica. El comando sind (angulo en sexagesimales) zc =
ones(1, length(xc))*5; % Tercera parte ecuacion de trayectoria que
se grafica for th = 0:res1:angulo1 % La
variable res1 es la velocidad de animacion y para rotar en el mismo sentido agujas
del reloj debe ser positivo y1 = r*sind(th);
% Primera parte de la ecuacion de la trayectoria que se seguira hasta donde llegue
th x1 = r*cosd(th); % Segunda parte
de la ecuacion de la trayectoria que se seguira hasta donde llegue th
z1 = 5; % Esta es la altura en donde se dibujara
la trayectoria for c = 1:25 for
f = 1:25 vo = 1-cosd(th);
R_eje_a = [(eje_a(1)^2)*vo+cosd(th), eje_a(1)*eje_a(2)*vo-eje_a(3)*sind(th),
eje_a(1)*eje_a(3)*vo+eje_a(2)*sind(th); eje_a(1)*eje_a(2)*vo+eje_a(3)*sind(th),
(eje_a(2)^2)*vo+cosd(th), eje_a(2)*eje_a(3)*vo-eje_a(1)*sind(th);
eje_a(1)*eje_a(3)*vo-eje_a(2)*sind(th), eje_a(2)*eje_a(3)*vo+eje_a(1)*sind(th),
(eje_a(3)^2)*vo+cosd(th)]; vector_z =
[x(f,c);y(f,c);z(f,c)]; Rot_eje_a1 =
R_eje_a*vector_z; X(f,c) = Rot_eje_a1(1);
Y(f,c) = Rot_eje_a1(2); Z(f,c) = Rot_eje_a1(3);
end end surf(X+x1,Y+y1,Z+z1)
% Se grafica la superficie 3D con el comando surf xlabel('EJE
X','Color','r') % Dar nombre al eje X
ylabel('EJE Y','Color','g') % Dar nombre al eje Y
zlabel('EJE Z','Color','b') % Dar nombre al eje Z
title(['Rotacion 3D en un Eje Arbitrario en la Trayectoria 1',' ','Angulo giro
positivo = ' num2str(th)]); % Declaramos un titulo con resultados de angulos
grid on % Activamos las rejillas
axis([-20 20 -20 20 -20 20]); % Establecemos un sistema de ejes fijo
X, Y y Z como minimos y maximos pause(0.1);
end end if tray1 == 2
% Se elige trayectoria 2 (Teniendo en cuenta el angulo positivo)
t = 0:360; % Se dibuja primero la trayectoria que
seguira la funcion r = 3;
% Aqui la variable r sera parte de la ecuacion de la trayectoria a seguir
xc = r*cosd(5*t); % Primera parte ecuacion de
trayectoria que se grafica. El comando cosd (angulo en sexagesimales)
yc = r*sind(t); % Segunda parte ecuacion de
trayectoria que se grafica. El comando sind (angulo en sexagesimales)
zc = ones(1, length(xc))*5; % Tercera parte ecuacion de
trayectoria que se grafica for th = 0:res1:angulo1
% La variable res1 es la velocidad de animacion y para rotar en el mismo sentido
agujas del reloj debe ser positivo y1 = r*sind(th);
% Primera parte de la ecuacion de la trayectoria que se seguira hasta donde llegue
th x1 = r*cosd(5*th); % Segunda parte
de la ecuacion de la trayectoria que se seguira hasta donde llegue th
z1 = 5; % Esta es la altura en donde se dibujara
la trayectoria for c = 1:25 for
f = 1:25 vo = 1-cosd(th);
R_eje_a = [(eje_a(1)^2)*vo+cosd(th), eje_a(1)*eje_a(2)*vo-eje_a(3)*sind(th),
eje_a(1)*eje_a(3)*vo+eje_a(2)*sind(th); eje_a(1)*eje_a(2)*vo+eje_a(3)*sind(th),
(eje_a(2)^2)*vo+cosd(th), eje_a(2)*eje_a(3)*vo-eje_a(1)*sind(th);
eje_a(1)*eje_a(3)*vo-eje_a(2)*sind(th), eje_a(2)*eje_a(3)*vo+eje_a(1)*sind(th),
(eje_a(3)^2)*vo+cosd(th)]; vector_z =
[x(f,c);y(f,c);z(f,c)]; Rot_eje_a1 =
R_eje_a*vector_z; X(f,c) = Rot_eje_a1(1);
Y(f,c) = Rot_eje_a1(2); Z(f,c) = Rot_eje_a1(3);
end end surf(X+x1,Y+y1,Z+z1)
% Se grafica la superficie 3D con el comando surf xlabel('EJE
X','Color','r') % Dar nombre al eje X
ylabel('EJE Y','Color','g') % Dar nombre al eje Y
zlabel('EJE Z','Color','b') % Dar nombre al eje Z
title(['Rotacion 3D en un Eje Arbitrario en la Trayectoria 2',' ','Angulo giro
positivo = ' num2str(th)]); % Declaramos un titulo con resultados de angulos
grid on % Activamos las rejillas
axis([-20 20 -20 20 -20 20]); % Establecemos un
sistema de ejes fijo X, Y y Z como minimos y maximos
pause(0.1); end end
if tray1 == 3 % Se elige trayectoria 3 (Teniendo
en cuenta el angulo positivo) t = 0:360;
% Se dibuja primero la trayectoria que seguira la funcion r =
3; % Aqui la variable r sera parte de la
ecuacion de la trayectoria a seguir xc = 2*r*cosd(t);
% Primera parte ecuacion de trayectoria que se grafica. El comando cosd (angulo en
sexagesimales) yc = r*sind(5*t); %
Segunda parte ecuacion de trayectoria que se grafica. El comando sind (angulo en
sexagesimales) zc = ones(1, length(xc))*5; %
Tercera parte ecuacion de trayectoria que se grafica for th =
0:res1:angulo1 % La variable res1 es la velocidad de animacion
y para rotar en el mismo sentido agujas del reloj debe ser positivo
y1 = r*sind(5*th); % Primera parte de la ecuacion de la
trayectoria que se seguira hasta donde llegue th x1 =
2*r*cosd(th); % Segunda parte de la ecuacion de la
trayectoria que se seguira hasta donde llegue th z1 = 5;
% Esta es la altura en donde se dibujara la trayectoria for
c = 1:25 for f = 1:25
vo = 1-cosd(th); R_eje_a =
[(eje_a(1)^2)*vo+cosd(th), eje_a(1)*eje_a(2)*vo-eje_a(3)*sind(th),
eje_a(1)*eje_a(3)*vo+eje_a(2)*sind(th); eje_a(1)*eje_a(2)*vo+eje_a(3)*sind(th),
(eje_a(2)^2)*vo+cosd(th), eje_a(2)*eje_a(3)*vo-eje_a(1)*sind(th);
eje_a(1)*eje_a(3)*vo-eje_a(2)*sind(th), eje_a(2)*eje_a(3)*vo+eje_a(1)*sind(th),
(eje_a(3)^2)*vo+cosd(th)]; vector_z =
[x(f,c);y(f,c);z(f,c)]; Rot_eje_a1 =
R_eje_a*vector_z; X(f,c) = Rot_eje_a1(1);
Y(f,c) = Rot_eje_a1(2); Z(f,c) = Rot_eje_a1(3);
end end surf(X+x1,Y+y1,Z+z1)
% Se grafica la superficie 3D con el comando surf xlabel('EJE
X','Color','r') % Dar nombre al eje X
ylabel('EJE Y','Color','g') % Dar nombre al eje Y
zlabel('EJE Z','Color','b') % Dar nombre al eje Z
title(['Rotacion 3D en un Eje Arbitrario en la Trayectoria 3',' ','Angulo giro
positivo = ' num2str(th)]); % Declaramos un titulo con resultados de angulos
grid on % Activamos las rejillas
axis([-20 20 -20 20 -20 20]); % Establecemos un sistema de ejes fijo
X, Y y Z como minimos y maximos pause(0.1);
end end end if angulo1 <
0 % Se elige angulo negativo
if tray1 == 1 % Se elige trayectoria 1 (Teniendo
en cuenta el angulo negativo) t = 0:360;
% Se dibuja primero la trayectoria que seguira la funcion r =
3; % Este sera el radio de la Trayectoria de
la circunferencia xc = r*cosd(t);
% Primera parte ecuacion de trayectoria que se grafica. El comando cosd (angulo en
sexagesimales) yc = r*sind(t); %
Segunda parte ecuacion de trayectoria que se grafica. El comando sind (angulo en
sexagesimales) zc = ones(1, length(xc))*5; %
Tercera parte ecuacion de trayectoria que se grafica for th =
0:-res1:angulo1 % La variable res1 es velocidad animacion y
para rotar en el sentido opuesto agujas del reloj se multiplica por '-1'
y1 = r*sind(th); % Primera parte de la ecuacion de la
trayectoria que se seguira hasta donde llegue th x1 =
r*cosd(th); % Segunda parte de la ecuacion de la
trayectoria que se seguira hasta donde llegue th z1 = 5;
% Esta es la altura en donde se dibujara la trayectoria for
c = 1:25 for f = 1:25
vo = 1-cosd(th); R_eje_a =
[(eje_a(1)^2)*vo+cosd(th), eje_a(1)*eje_a(2)*vo-eje_a(3)*sind(th),
eje_a(1)*eje_a(3)*vo+eje_a(2)*sind(th); eje_a(1)*eje_a(2)*vo+eje_a(3)*sind(th),
(eje_a(2)^2)*vo+cosd(th), eje_a(2)*eje_a(3)*vo-eje_a(1)*sind(th);
eje_a(1)*eje_a(3)*vo-eje_a(2)*sind(th), eje_a(2)*eje_a(3)*vo+eje_a(1)*sind(th),
(eje_a(3)^2)*vo+cosd(th)]; vector_z =
[x(f,c);y(f,c);z(f,c)]; Rot_eje_a1 =
R_eje_a*vector_z; X(f,c) = Rot_eje_a1(1);
Y(f,c) = Rot_eje_a1(2); Z(f,c) = Rot_eje_a1(3);
end end surf(X+x1,Y+y1,Z+z1)
% Se grafica la superficie 3D con el comando surf
xlabel('EJE X','Color','r') % Dar nombre al
eje X ylabel('EJE Y','Color','g') % Dar nombre
al eje Y zlabel('EJE Z','Color','b') % Dar
nombre al eje Z title(['Rotacion 3D en un Eje Arbitrario en la
Trayectoria 1',' ','Angulo giro negativo = ' num2str(th)]); % Declaramos un
titulo con resultados de angulos grid on
% Activamos las rejillas axis([-20 20 -20 20 -20 20]);
% Establecemos un sistema de ejes fijo X, Y y Z como minimos y maximos
pause(0.1); end end
if tray1 == 2 % Se elige trayectoria 2 (Teniendo
en cuenta el angulo negativo) t = 0:360;
% Se dibuja primero la trayectoria que seguira la funcion r =
3; % Aqui la variable r sera parte de la
ecuacion de la trayectoria a seguir xc = r*cosd(5*t);
% Primera parte ecuacion de trayectoria que se grafica. El comando cosd (angulo en
sexagesimales) yc = r*sind(t); %
Segunda parte ecuacion de trayectoria que se grafica. El comando sind (angulo en
sexagesimales) zc = ones(1, length(xc))*5; %
Tercera parte ecuacion de trayectoria que se grafica for th =
0:-res1:angulo1 % La variable res1 es velocidad animacion y
para rotar en el sentido opuesto agujas del reloj se multiplica por '-1'
y1 = r*sind(th); % Primera parte de la ecuacion de la
trayectoria que se seguira hasta donde llegue th x1 =
r*cosd(5*th); % Segunda parte de la ecuacion de la
trayectoria que se seguira hasta donde llegue th z1 = 5;
% Esta es la altura en donde se dibujara la trayectoria for
c = 1:25 for f = 1:25
vo = 1-cosd(th); R_eje_a =
[(eje_a(1)^2)*vo+cosd(th), eje_a(1)*eje_a(2)*vo-eje_a(3)*sind(th),
eje_a(1)*eje_a(3)*vo+eje_a(2)*sind(th); eje_a(1)*eje_a(2)*vo+eje_a(3)*sind(th),
(eje_a(2)^2)*vo+cosd(th), eje_a(2)*eje_a(3)*vo-eje_a(1)*sind(th);
eje_a(1)*eje_a(3)*vo-eje_a(2)*sind(th), eje_a(2)*eje_a(3)*vo+eje_a(1)*sind(th),
(eje_a(3)^2)*vo+cosd(th)]; vector_z =
[x(f,c);y(f,c);z(f,c)]; Rot_eje_a1 =
R_eje_a*vector_z; X(f,c) = Rot_eje_a1(1);
Y(f,c) = Rot_eje_a1(2); Z(f,c) = Rot_eje_a1(3);
end end surf(X+x1,Y+y1,Z+z1)
% Se grafica la superficie 3D con el comando surf xlabel('EJE
X','Color','r') % Dar nombre al eje X
ylabel('EJE Y','Color','g') % Dar nombre al eje Y
zlabel('EJE Z','Color','b') % Dar nombre al eje Z
title(['Rotacion 3D en un Eje Arbitrario en la Trayectoria 2',' ','Angulo giro
negativo = ' num2str(th)]); % Declaramos un titulo con resultados de angulos
grid on % Activamos las rejillas
axis([-20 20 -20 20 -20 20]); % Establecemos un sistema de ejes fijo
X, Y y Z como minimos y maximos pause(0.1);
end end if tray1 == 3
% Se elige trayectoria 3 (Teniendo en cuenta el angulo negativo)
t = 0:360; % Se dibuja primero la trayectoria que
seguira la funcion r = 3;
% Aqui la variable r sera parte de la ecuacion de la trayectoria a seguir
xc = 2*r*cosd(t); % Primera parte ecuacion de
trayectoria que se grafica. El comando cosd (angulo en sexagesimales)
yc = r*sind(5*t); % Segunda parte ecuacion de
trayectoria que se grafica. El comando sind (angulo en sexagesimales)
zc = ones(1, length(xc))*5; % Tercera parte ecuacion de
trayectoria que se grafica for th = 0:-res1:angulo1
% La variable res1 es velocidad animacion y para rotar en el sentido opuesto agujas
del reloj se multiplica por '-1' y1 = r*sind(5*th);
% Primera parte de la ecuacion de la trayectoria que se seguira hasta donde llegue
th x1 = 2*r*cosd(th); % Segunda parte
de la ecuacion de la trayectoria que se seguira hasta donde llegue th
z1 = 5; % Esta es la altura en donde se dibujara
la trayectoria for c = 1:25 for
f = 1:25 vo = 1-cosd(th);
R_eje_a = [(eje_a(1)^2)*vo+cosd(th), eje_a(1)*eje_a(2)*vo-eje_a(3)*sind(th),
eje_a(1)*eje_a(3)*vo+eje_a(2)*sind(th); eje_a(1)*eje_a(2)*vo+eje_a(3)*sind(th),
(eje_a(2)^2)*vo+cosd(th), eje_a(2)*eje_a(3)*vo-eje_a(1)*sind(th);
eje_a(1)*eje_a(3)*vo-eje_a(2)*sind(th), eje_a(2)*eje_a(3)*vo+eje_a(1)*sind(th),
(eje_a(3)^2)*vo+cosd(th)]; vector_z =
[x(f,c);y(f,c);z(f,c)]; Rot_eje_a1 =
R_eje_a*vector_z; X(f,c) = Rot_eje_a1(1);
Y(f,c) = Rot_eje_a1(2); Z(f,c) = Rot_eje_a1(3);
end end
surf(X+x1,Y+y1,Z+z1) % Se grafica la superficie 3D con el
comando surf xlabel('EJE X','Color','r') % Dar
nombre al eje X ylabel('EJE Y','Color','g') %
Dar nombre al eje Y zlabel('EJE Z','Color','b')
% Dar nombre al eje Z title(['Rotacion 3D en un Eje Arbitrario
en la Trayectoria 3',' ','Angulo giro negativo = ' num2str(th)]); % Declaramos
un titulo con resultados de angulos grid on
% Activamos las rejillas axis([-20 20 -20 20 -20 20]);
% Establecemos un sistema de ejes fijo X, Y y Z como minimos y maximos
pause(0.1); end end end
end end function edit4_CreateFcn(hObject, eventdata, handles)
% NOTA.- Buscar la aplicacion de edit4 (No aparece en el GUIDE) % hObject handle
to edit4 (see GCBO) % eventdata reserved - to be defined in a future version of
MATLAB % handles empty - handles not created until after all CreateFcns called
% Hint: edit controls usually have a white background on Windows. % See ISPC
and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white'); end function edit5_Callback(hObject,
eventdata, handles) % NOTA.- Buscar la aplicacion de
edit5 (No aparece en el GUIDE) % hObject handle to edit6 (see GCBO) % eventdata
reserved - to be defined in a future version of MATLAB % handles structure with
handles and user data (see GUIDATA) % Hints: get(hObject,'String') returns
contents of edit6 as text % str2double(get(hObject,'String')) returns
contents of edit6 as a double function edit5_CreateFcn(hObject, eventdata,
handles) % NOTA.- Buscar la aplicacion de edit5 (No
aparece en el GUIDE) % hObject handle to edit6 (see GCBO) % eventdata reserved
- to be defined in a future version of MATLAB % handles empty - handles not
created until after all CreateFcns called % Hint: edit controls usually have a
white background on Windows. % See ISPC and COMPUTER. if ispc &&
isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white'); end % slider1 es la ventana en la
interface de GUI donde se ingresa el valor de la velocidad de rotacion de la
funcion para graficos 2D y 3D function slider1_Callback(hObject, eventdata,
handles) % hObject handle to slider1 (see GCBO) % eventdata reserved - to be
defined in a future version of MATLAB % handles structure with handles and user
data (see GUIDATA) % Hints: get(hObject,'Value') returns position of slider %
get(hObject,'Min') and get(hObject,'Max') to determine range of slider global res1;
% Variable res1 es la velocidad de animacion. Positivo se rota en sentido a las
agujas del reloj. Negativo en sentido contrario v_vel =
get(handles.slider1,'Value'); % La variable v_vel
captura el valor del slider1 res1 = v_vel/10;
% La variable res1 es la velocidad de la animacion captura el valor de v_vel
set(handles.text11,'String',fix(v_vel)) % La variable
v_vel es enviada a la Caja de Texto text11
% slider1 es la ventana en la interface de GUI donde se ingresa el valor de la
velocidad de rotacion de la funcion para graficos 2D y 3D function
slider1_CreateFcn(hObject, eventdata, handles) % hObject handle to slider1 (see
GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles
empty - handles not created until after all CreateFcns called % Hint: slider
controls usually have a light gray background. if
isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor',[.9 .9 .9]); end % text11 es la ventana en la
interface de GUI donde se visualiza el valor de la velocidad de rotacion de la
funcion para graficos 2D y 3D function text11_CreateFcn(hObject, eventdata,
handles) % hObject handle to text11 (see GCBO) % eventdata reserved - to be
defined in a future version of MATLAB % handles empty - handles not created
until after all CreateFcns called % popupmenu1 es la ventana en la interface de
GUI de donde se selecciona el tipo de trayectoria que la funcion seguira para
graficos 2D y 3D function popupmenu1_Callback(hObject, eventdata, handles) %
hObject handle to popupmenu1 (see GCBO) % eventdata reserved - to be defined in
a future version of MATLAB % handles structure with handles and user data (see
GUIDATA) % Hints: contents = cellstr(get(hObject,'String')) returns popupmenu1
contents as cell array % contents{get(hObject,'Value')} returns selected
item from popupmenu1 v_t = get(handles.popupmenu1,'Value');
% La variable v_t captura el valor seleccionado en el popmenu1 global tray1;
% Variable tray1 para representar el tipo de la Trayectoria (Uno, Dos o Tres)
switch v_t % Se elige la
Trayectoria a seguir case 1
% Si se selecciono 1 tray1 = 1;
% Entonces la variable tray1 sera la Trayectoria 1 case 2
% Si se selecciono 2 tray1 = 2;
% Entonces la variable tray1 sera la Trayectoria 2 case 3
% Si se selecciono 3 tray1 = 3;
% Entonces la variable tray1 sera la Trayectoria 3 end % popupmenu1 es la
ventana en la interface de GUI de donde se selecciona el tipo de trayectoria que la
funcion seguira para graficos 2D y 3D function popupmenu1_CreateFcn(hObject,
eventdata, handles) % hObject handle to popupmenu1 (see GCBO) % eventdata
reserved - to be defined in a future version of MATLAB % handles empty - handles
not created until after all CreateFcns called % Hint: popupmenu controls usually
have a white background on Windows. % See ISPC and COMPUTER. if ispc &&
isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white'); end % popupmenu2 es la ventana en la
interface de GUI de donde se selecciona el Eje con respecto al que la funcion
rotara para graficos 2D y 3D function popupmenu2_Callback(hObject, eventdata,
handles) % hObject handle to popupmenu2 (see GCBO) % eventdata reserved - to be
defined in a future version of MATLAB % handles structure with handles and user
data (see GUIDATA) % Hints: contents = cellstr(get(hObject,'String')) returns
popupmenu2 contents as cell array % contents{get(hObject,'Value')} returns
selected item from popupmenu2 v_r = get(handles.popupmenu2,'Value');
% La variable v_r captura el valor seleccionado en el popmenu2 global rotar;
% Variable rotar para representar con respecto a que Eje se rotara (X - Y - Z)
global xk1; % Esta variable xk1
no tiene uso en esta parte del programa. Se reserva para posterior uso global yk1;
% Esta variable yk1 no tiene uso en esta parte del programa. Se reserva para
posterior uso
global zk1; % Esta variable zk1
no tiene uso en esta parte del programa. Se reserva para posterior uso global m
% Esta variable m no tiene uso en esta parte del programa. Se reserva para
posterior uso global eje_a %
Esta variable eje_a no tiene uso en esta parte del programa. Se reserva para
posterior uso switch v_r %
Se elige el Eje con respecto al cual se rotara case 1
% Si se selecciono 1 rotar = 1;
% Entonces la variable rotar sera la rotacion respecto al Eje X case 2
% Si se selecciono 2 rotar = 2;
% Entonces la variable rotar sera la rotacion respecto al Eje Y case 3
% Si se selecciono 3 rotar = 3;
% Entonces la variable rotar sera la rotacion respecto al Eje Z case 4
% Si se selecciono 4 rotar = 4;
% Entonces la variable rotar sera la rotacion respecto a un Eje Arbitrario end
% popupmenu2 es la ventana en la interface de GUI de donde se selecciona el Eje con
respecto al que la funcion rotara para graficos 2D y 3D function
popupmenu2_CreateFcn(hObject, eventdata, handles) % hObject handle to popupmenu2
(see GCBO) % eventdata reserved - to be defined in a future version of MATLAB %
handles empty - handles not created until after all CreateFcns called % Hint:
popupmenu controls usually have a white background on Windows. % See ISPC and
COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white'); end % edit6 es la ventana en la
interface de GUI donde se ingresa el valor de la coordenada X del Eje Arbitrario
para graficos 2D y 3D function edit6_Callback(hObject, eventdata, handles) %
hObject handle to edit6 (see GCBO) % eventdata reserved - to be defined in a
future version of MATLAB % handles structure with handles and user data (see
GUIDATA) % Hints: get(hObject,'String') returns contents of edit6 as text %
str2double(get(hObject,'String')) returns contents of edit6 as a double % edit6
es la ventana en la interface de GUI donde se ingresa el valor de la coordenada X
del Eje Arbitrario para graficos 2D y 3D function edit6_CreateFcn(hObject,
eventdata, handles) % hObject handle to edit6 (see GCBO) % eventdata reserved -
to be defined in a future version of MATLAB % handles empty - handles not
created until after all CreateFcns called % Hint: edit controls usually have a
white background on Windows. % See ISPC and COMPUTER. if ispc &&
isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white'); end % edit7 es la ventana en la
interface de GUI donde se ingresa el valor de la coordenada Y del Eje Arbitrario
para graficos 2D y 3D function edit7_Callback(hObject, eventdata, handles) %
hObject handle to edit7 (see GCBO) % eventdata reserved - to be defined in a
future version of MATLAB % handles structure with handles and user data (see
GUIDATA) % Hints: get(hObject,'String') returns contents of edit7 as text %
str2double(get(hObject,'String')) returns contents of edit7 as a double % edit7
es la ventana en la interface de GUI donde se ingresa el valor de la coordenada Y
del Eje Arbitrario para graficos 2D y 3D function edit7_CreateFcn(hObject,
eventdata, handles) % hObject handle to edit7 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB % handles
empty - handles not created until after all CreateFcns called % Hint: edit
controls usually have a white background on Windows. % See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white'); end % edit8 es la ventana en la
interface de GUI donde se ingresa el valor de la coordenada Z del Eje Arbitrario
para graficos 2D y 3D function edit8_Callback(hObject, eventdata, handles) %
hObject handle to edit8 (see GCBO) % eventdata reserved - to be defined in a
future version of MATLAB % handles structure with handles and user data (see
GUIDATA) % Hints: get(hObject,'String') returns contents of edit8 as text %
str2double(get(hObject,'String')) returns contents of edit8 as a double % edit8
es la ventana en la interface de GUI donde se ingresa el valor de la coordenada Z
del Eje Arbitrario para graficos 2D y 3D function edit8_CreateFcn(hObject,
eventdata, handles) % hObject handle to edit8 (see GCBO) % eventdata reserved -
to be defined in a future version of MATLAB % handles empty - handles not
created until after all CreateFcns called % Hint: edit controls usually have a
white background on Windows. % See ISPC and COMPUTER. if ispc &&
isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))