MATLAB
Rotar y trasladar funciones 2D y 3D con vectores de traqueo Versión Mejorada
Autor: Ingeniero Electrónico: Monteza Zevallos Fidel Tomas Junio de 2018 (Primera Edición) V. J. M. J. / A. M. M. J.
Rotar y trasladar funciones 2D y 3D con vectores de traqueo Versión Mejorada
Índice general INTRODUCCIÓN 1.- DESARROLLO 2.- EXPLICACIÓN BREVE DEL FUNCIONAMIENTO 3.- GRAFICAR EN 2D 4.- ROTAR Y TRASLADAR FUNCIONES EN 2D 5.- GRAFICAR EN 3D 6.- ROTAR Y TRASLADAR UNA FUNCIÓN EN 3D 7. LÍNEAS DEL ALGORITMO DEL PROGRAMA GRAFICAR.m
Rotar y trasladar funciones 2D y 3D con vectores de traqueo Versión Mejorada
INTRODUCCIÓN La cinemática es la ciencia del movimiento que trata el tema sin considerar las fuerzas que lo ocasionan. Dentro de esa ciencia se estudian la posición, la velocidad, la aceleración y todas las demás derivadas de alto orden de las variables de posición. En consecuencia, el estudio de la cinemática de manipuladores se refiere a todas las propiedades geométricas y basadas en el tiempo del movimiento. La manipulación de robots implica el movimiento de piezas y diferentes herramientas en el espacio. Para hacer la representación de estas piezas es necesario definir sistemas de coordenadas. Para que un robot pueda manipular ciertos objetos, es necesario saber la posición y orientación de la pieza respecto al robot. Para poder hacer esto, existen métodos para la representación de posición y orientación espacial de un objeto. Utilizar la matriz de transformación homogénea es uno de ellos. También se pueden desarrollar por cuaterniones, el cual es un método computacional que se utiliza por algunos robots comerciales para la representación de la orientación. Es necesario tener conocimientos sobre Ángulos d e Euler igualmente. Los ángulos de Euler constituyen un conjunto de tres coordenadas angulares que sirven para especificar la orientación de un sistema de referencia de ejes ortogonales, normalmente móvil, respecto a otro sistema de referencia de ejes ortogonales normalmente fijos. Fueron introducidos por Leonhard Euler en mecánica del sólido rígido para describir la orientación de un sistema de referencia solidario con un sólido rígido en movimiento.
1.- DESARROLLO Para este desarrollo es importante recordar las matrices de rotación, tanto aquellas que rotan en el mismo sentido al de las agujas del reloj (Generadas por un ángulo trigonométrico negativo), como las que rotan en sentido inverso (Generadas por un ángulo trigonométrico positivo). Matrices de giro con ángulos de Euler en el mismo sentido de las agujas del reloj
0 −0 100
0 01 0 − 0
− 0 0 0 0 1
Matriz de giro en el Eje X
Matriz de giro en el Eje Y
Matriz de giro en el Eje Z
Y la matriz de transformación general para la rotación en el mismo senti do al de las agujas del reloj (Generadas por un ángulo trigonométrico negativo):
Matrices de giro con ángulos de Euler en el sentido opuesto de las agujas del reloj
0 001 − 0
0 − 0 10 0
0 − 0 0 0 1
Matriz de giro en el Eje X
Matriz de giro en el Eje Y
Matriz de giro en el Eje Z
2.- EXPLICACIÓN BREVE DEL FUNCIONAMIENTO A continuación, se muestra la interfaz GUI GUI creada con ayuda de GUIDE-MATLAB. GUIDE-MATLAB.
Interface del programa de una función que permite graficar el desplazamiento de funciones 2D o 3D en tiempo real
Sirve para rotar funciones con respecto a cualquiera de los ejes X, Y o Z, aplicando matrices de transformación básicas, y la matriz de transformación general. Se puede seleccionar una cuarta opción referente a rotar la función, que es empleando la matriz de “Eje arbitrario” estudiada en cinemática de robots manipuladores.
Interface del programa de una función f(x) = x^4 operando en tiempo real con un angulo positivo de 90 grados
La interfaz cuenta con una parte donde se grafica la función que el usuario ingrese, ya sea f(x) o en su defecto f(x,y), además de seis cajas de texto, dos para ingresar las respectivas funciones, una tercera para el ángulo que se rotará, y las últimas tres son para ingresar cada uno de los tres componentes del vector arbitrario con respecto al cual rotará (Si así se elige) la función, cuenta también con dos ‘popupmenu’ en los cuales se elige una de las tres trayectorias, y en el otro uno de los cuatro diferentes ejes con respecto a los cuales rotar. Finalmente, la interfaz tiene un ‘slider’ que sirve para aumentar la velocidad de la animación hasta veinte veces y un botón que sirve para iniciar la animación como se puede visualizar en la siguiente figura: Si desea ejecutar el programa con una función f(x). Deberá seguir en la zona del panel de mandos los siguientes pasos:
1.- Tipear una función en la celda denominada "f(x)= "f(x)=", ", por ejemplo: sin(x) rotación" tipear el valor del ángulo que se desea rotar negativo o positivo (Puede ser de más de una vuelta) 2.- En la celda denominada "Angulo "Angulo de rotación" a" hacer clik para elegir un eje de giro determinado 3.- En el selector denominado "Rotar "Rotar con respecto a" trayectorias" hacer clik para elegir una determinada 4.- En el selector denominado "Elija "Elija una de tres trayectorias" 5.- Si en el paso anterior selecciono Rotar con respecto a EJE ARBITRARIO debe ingresar un valor numérico en cada celda de "Componentes del eje arbitrario". 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 20)" debe deslizarlo para seleccionar el valor de la velocidad de rotación 7.- Listo ahora puede ejecutar la tecla denominada "INICIAR SIMULACION" SIMULACION" y podrá apreciar como su función f(x) sigue una trayectoria determinada, seguida por dos vectores de traqueo (Vector verde de traqueo horizontal y Vector rojo de traqueo vertical). Además de tener un vector de referencia color azul, el que indicara la posición inicial de la trayectoria que se sigue.
Interface del programa de una función f(x) = sin(x) operando en tiempo real con un angulo positivo de 90 g rados
Interface del programa de una función f(x,y) = x^3*y^3 operando en tiempo real con un angulo positivo de 360 grados
Si desea ejecutar el programa con una función f(x,y). Seguir los siguientes pasos: 1.- Tipear una función en la celda denominada "f(x,y)=", "f(x,y)=", por ejemplo: sin(x)*cos(x) 2.- En la celda denominada "Angulo "Angulo de rotación" rotación" tipear el valor del ángulo que se desea rotar negativo o positivo (Puede ser de más de una vuelta) 3.- En el selector denominado "Rotar "Rotar con respecto a" a" hacer clik para elegir un eje de giro determinado 4.- En el selector denominado "Elija "Elija una de tres trayectorias" trayectorias" hacer clik para elegir una determinada 5.- Si en el paso anterior selecciono Rotar con respecto a EJE ARBITRARIO debe ingresar un valor numérico en cada celda de "Componentes del eje arbitrario". arbitrario". Por el contrario, si solo selecciono EJE X - EJE Y o EJE Z, entonces puede dejar en blanco estas celdas 20)" debe deslizarlo para seleccionar el valor de la velocidad de rotación 6.- En el selector HScroll denominado "Velocidad (0 - 20)" debe
7.- Listo ahora puede ejecutar la tecla denominada "INICIAR SIMULACION" SIMULACION" y podrá apreciar como su función f(x) sigue una trayectoria determinada, seguida igualmente por dos vectores de traqueo. Además de tener un vector de referencia color azul que indicara la posición inicial de la trayectoria que se sigue.
Interface del programa de una función f(x,y) = sin(x)*cos(y) operando en tiempo real con un angulo positivo de 360 grados
NOTA.- En NOTA.- En este proyecto se deben considerar las matrices que generan una rotación en el mismo sentido al de las agujas del reloj tanto para movimientos en el mismo sentido de las agujas como para movimientos en sentido opuesto. La explicación es la siguiente: Al momento de ingresar el ángulo este debe ser ingresado i ngresado con signo de forma tal que el programa automáticamente reemplaza este valor en el ángulo de la matriz generando automáticamente el ti po de rotación señalada por el usuario.
Interface del programa de una función f(x) = x^2+2*x operando en tiempo real con un angulo negativo de 360 grados
3.- GRAFICAR EN 2D Primero se obtiene la función en la variable ‘S’ pero en forma de cadena de carácter, utiliza la función ‘vectorize(inline(s))’ para evaluar dichos caracteres y si el programa lo reconoce, lo convierte a una función. Los arreglos ‘salidaxx’, ‘salidayy’, y ‘sali dazz’, son los vectores que se utilizarán para guardar todo el conjunto de datos de la función, que después se multiplicarán por la matriz de rotación.
Parte de las líneas del programa de la interface
En el ciclo se observa cómo se c rea un vector ‘b’ que contiene todos los datos de pares ordenados de la función. Y también se observa cómo se rellena ‘salidaxx’ y ‘salidayy’ con los datos de la función, nótese que dichos vectores primero se declaran con un tamaño necesario, pero rellenos de ceros. 4.- ROTAR Y TRASLADAR FUNCIONES EN 2D En cuanto se presiona el botón "INICIAR SIMULACION" se SIMULACION" se entra a una serie de condiciones que están delimitadas principalmente por la variable ‘rotar’, la cual se utiliza como un ‘switch’ que puede contener hasta cuatro casos diferentes, uno para si el usuario elige rotar con respecto a ‘X’, ‘ Y’ o ‘Z’, o en su defecto si se eli ge rotar con respecto a un eje arbitrario.
Parte de las líneas del programa de la interface
Como se puede observar en la figura anterior, el caso mostrado es para cuando se requiera girar con respecto a X. ‘co’ es un vector de 3x1 que tiene los valores de la función f(x) en las tres coordenadas. Nótese que la trayectoria uno que es la que se muestra es una circunferencia parametrizada. ‘Rx’ es la matriz de rotación básica con respecto al eje ‘X’. Se aprecia que ‘co_R’ es el resultado de multiplicar la matriz de rotación con respecto a ‘X’ de 3x3, por el vector de 3x1 que contiene todos los elementos de la función a rotar, por ello ‘co_R’ es de dimensiones de 3x1. Y dicho vector contiene todas las coordenadas de la función ya rotada. Por ello se nota un efecto de rotación. Para trasladar dicha función por la circunferencia parametrizada (que representa la trayectoria número 1), simplemente se le suman a cada uno de los elementos del vector que cont iene los elementos de la función ya rotada, los elementos en ‘X’, ‘Y’ y ‘Z’ de la circunferencia para que se vea el efecto de que no sólo está rotando la función, sino que también se mueve a lo largo de dicha circunferencia. 5.- GRAFICAR EN 3D Cuando se teclea en el cuadro de texto correspondiente a la f unción f(x,y), automáticamente el valor de la variable llamada ‘variables’ cambia a 2. Pero para poder graficar en 3 dimensiones es necesario crear un mallado en MATLAB con la función ‘meshgrid’, pero antes de ello es imperativo declarar los valores del dominio, tanto de la variable independiente ‘x’ como los de la variable ‘y’, por ello se declara con la función ‘linspace’ un vector de veinticinco valores que irán de ‘-2*pi’ hasta ‘2*pi’.
Parte de las líneas del programa de la interface
Después se utiliza la función ‘vectorize’ de la misma forma que ya se había comentado anteriormente, pero ahora, con el fin de reconocer una función de dos variables independientes f(x,y) con el fin de graficar en tres dimensiones. Como se puede observar en la línea 100, directamente después de teclear la función, la misma se gráfica. esto con la ayuda de la funci ón ‘surfc’. 6.- ROTAR Y TRASLADAR UNA FUNCIÓN EN 3D En esta parte del código se observa que si la función ‘variables’ toma el valor de dos, entonces entra a dichas líneas de código. La variable ‘th2’ es la variable del ángulo, aquí es donde también se toma en cuenta la condición de que si el ángulo es positivo o negativo, esto para controlar el movimiento de la animación, tanto de rotación como de traslación. Asimismo, si la trayectoria es la numero uno, entonces se utiliza la misma circunferencia parametrizada como trayectoria uno. Es necesario tener en un vector los elementos de ‘X’, ‘Y’ y ‘Z’ de la l a función de tres dimensiones, para eso, se uti lizan dos iteraciones, que estarán llenando el número de filas y columnas de cada uno de los elementos de la función, y a la vez, guardando dichos elementos como partes de un vector de 3x1, el cual es el ‘vector_z’, dicho vector se multiplicará por la matriz de rotación de ‘X’ y así se obtendrán en el vector ‘Rot_x’ los valores de los componentes de ‘X’, ‘Y’ y ‘Z’ de la f unción pero ya rotada con respecto a ‘X’.
Pero para trasladar la función a lo largo de la circunferencia que representa la trayectoria uno, se empleó la misma técnica que se utilizó en dos dimensiones, simplemente se le suman a cada uno de los elementos del vector que contiene los elementos de la función ya rotada, los elementos en ‘X’, ‘Y’ y ‘ Z’ de la circunferencia para que se vea el efecto de que no sólo está rotando la función, sino que también se mueve a lo largo de dicha trayectoria, esto se ve en la línea de código donde aparece la función surf(X+x1,Y+y1,Z+z1). Y de esa forma, básicamente es como se realizó esta i nterfaz. Lo demás son una serie de sentencias y condiciones necesarias para que se pudiera realizar como se esperaba.
7. LÍNEAS DEL ALGORITMO DEL PROGRAMA GRAFICAR.m %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % 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 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 si solo selecciono selecciono EJE X - EJE Y o EJE Z. Entonces puede puede dejar en blanco estas celdas 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)=", "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 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 si solo selecciono selecciono EJE X - EJE Y o EJE Z. Entonces puede puede dejar en blanco estas celdas 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 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 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(varargin) % GRAFICAR MATLAB lineas de codigo para el archivo graficar.fig % GRAFICAR, by itself, creates creates a new GRAFICAR or raises the existing existing singleton*. singleton*. % % H = GRAFICAR returns returns the handle to a new GRAFICAR or the handle handle to the existing existing singleton*. % % GRAFICAR('CALLBACK',hObj GRAFICAR('CA LLBACK',hObject,eventDa ect,eventData,handles,. ta,handles,...) ..) calls the local function named named CALLBACK in graficar.m graficar.m with the given input arguments. arguments. %
% GRAFICAR('Property','Val GRAFICAR('Pr operty','Value',...) ue',...) creates creates a new GRAFICAR or raises the existing existing singleton*. Starting from the the left, property property value pairs are % applied to the GUI before before graficar_OpeningFcn graficar_OpeningFcn gets gets called. An unrecognized unrecognized property name or or invalid value makes makes property application application stop. % All inputs are passed to graficar_Ope ningFcn via varargin. % % *See GUI Options on GUIDE's Tools Tools menu. Choose "GUI allows only one instance instance to run (singleton)" (singleton)". . % % See also: GUIDE, GUIDATA, GUIHANDLES gui_Singleton gui_Singleton = 1; gui_State = struct( 'gui_Name' ,mfilename, 'gui_Singleton' 'gui_Singleton',gui_Singleton, ,gui_Singleton,'gui_OpeningFcn' 'gui_OpeningFcn' ,@graficar_OpeningFcn, 'gui_OutputFcn' 'gui_OutputFcn',@graficar_OutputFcn, ,@graficar_OutputFcn,'gui_LayoutFcn' 'gui_LayoutFcn',[], ,[],'gui_Callback' 'gui_Callback',[]); ,[]); if if nargin && ischar(varargin{1}) gui_State.gui_Callback = str2func(varargin{1}); end
% A && B (B es unicamente evaluado si A es verdadero) % El comando str2func(S) convierte a una funcion la variable tipo cadena S
if nargout 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(hObj graficar_OpeningFcn(hObject, ect, eventdata, handles, varargin) % This function has no output args, see OutputFcn. % hObject handle to figure % eventdata reserved - to be defined defined in a future version version of MATLAB % handles handles structure with handles and user data (see GUIDATA) % varargin varargin command line line arguments arguments to graficar (see VARARGIN) 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(hand uiwait(handles.figure1) les.figure1); ;
% Outputs from this function are returned to the command line. function varargout = graficar_OutputFcn(hObject, eventdata, handles) % varargout cell array for returning output output args (see VARARGOUT); VARARGOUT); % hObject handle to figure % eventdata reserved - to be defined defined in a future version version of MATLAB % handles handles structure with handles and user data (see GUIDATA) % Get default command line output from handles structure varargout{1} = handles.output; 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, edit1_Callback(hObject, eventdata, handles) % Funcion en 3D global variables; global variables; % Esta variable se utiliza para determinar el tipo de grafico. Si es Uno 2D y si es Dos 3D global x; global x; global y; global y; global z; global z; variables = 2;
% Vale '2' si es una funcion del tipo f(x,y)
x = linspace(-2*pi,2*pi,25); linspace(-2*pi,2*pi,25); y = linspace(-2*pi,2*pi,25); linspace(-2*pi,2*pi,25);
% Arreglo para x de 25 valores desde -2pi a 2pi % Arreglo para y de 25 valores desde -2pi a 2pi
s = get(handles.edit1, get(handles.edit1, 'string' ); f = vectorize(inline(s)); vectorize(inline(s));
[x,y] = meshgrid(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 defined in a future version version of MATLAB % handles handles empty - handles handles not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc if ispc && isequal(get(hObject, 'BackgroundColor' ), get(0,'defaultUi get(0, 'defaultUicontrolBackg controlBackgroundColor' roundColor' )) set(hObject,'BackgroundColor' set(hObject,'BackgroundColor', ,'white' '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, edit2_Callback(hObject, eventdata, handles) global angulo1; global angulo1; % Declaramos la variable angulo1 del tipo global angulo = get(handles.edit2, get(handles.edit2, 'string' ); % La variable angulo captura el valor ingresado en la Caja edit2 en tipo cadena angulo1 = str2num(angulo); 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 defined in a future version version of MATLAB % handles handles empty - handles handles not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc if ispc && isequal(get(hObject, 'BackgroundColor' ), get(0,'defaultUi get(0, 'defaultUicontrolBackg controlBackgroundColor' roundColor' )) set(hObject,'BackgroundColor' set(hObject,'BackgroundColor', ,'white' '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, edit3_Callback(hObject, eventdata, handles) % Funcion en 2D global variables; global variables; % Esta variable se utiliza para determinar el tipo de grafico. Si es Uno 2D y si es Dos 3D global x; global x; global y; global y; % Esta variable y no tiene uso en esta parte del programa. Se reserva para posterior uso global z; global z; % Esta variable z no tiene uso en esta parte del programa. Se reserva para posterior uso global rotar; global rotar; % Esta variable rotar no tiene uso en esta parte del programa. Se reserva para posterior uso global salidaxx; 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; 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; 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, get(handles.edit3, 'string' ); f = vectorize(inline(s)); vectorize(inline(s)); x = -10:0.5:10; u = f(x); t = 90;
% La variable x va desde -10 hasta 10 en particiones de 0.5 (Se originan 41 valores)
% Vectores salidaxx = salidayy = salidazz =
del tamaño de la variable x que se rellenan con CEROS para inicializarlos y despues utilizarlos. zeros(size(x)); zeros(size(x)); zeros(size(x));
plot(x,u) % Vectorizar valores de la funcion f(x) for ii for ii = 1:size(x,2) 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 defined in a future version version of MATLAB % handles handles empty - handles handles not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc if ispc && isequal(get(hObject, 'BackgroundColor' ), get(0,'defaultUi get(0, 'defaultUicontrolBackg controlBackgroundColor' roundColor' )) set(hObject,'BackgroundColor' set(hObject,'BackgroundColor', ,'white' '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 graficos 3D function pushbutton4_Callback(hOb pushbutton4_Callback(hObject, ject, eventdata, handles) % Boton de ejecucion denominado pushbutton4 con la etiqueta INICIAR global angulo1; global angulo1; % Variable angulo1 para representar el Angulo de rotacion global variables; global variables; % Esta variable se utiliza para determinar el tipo de grafico. Si es Uno 2D y si es Dos 3D global rotar; global rotar; % Variable principal que dara inicio a cada Case (Son cuatro Case) global x; global x; global y; global y; global z; global z; global salidaxx; 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; 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; 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; global tray1; % Variable tray1 para representar el tipo de la Trayectoria (Uno, Dos o Tres) global res1; 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; global eje_a; % Variable eje_a para representar el vector unitario con dirección del vector arbitrario global xk1; global xk1; % Variable xk1 es la componente X del vector arbitrario global yk1; global yk1; % Variable yk1 es la componente Y del vector arbitrario global zk1; global zk1; % Variable zk1 es la componente Z del vector arbitrario global m; 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 tray1 = 2 tray1 = 3 variables = 2 angulo1 > 0 tray1 = 1 tray1 = 2 tray1 = 3 angulo1 < 0 tray1 = 1 tray1 = 2 tray1 = 3 Case2 variables = 1 angulo1 > 0 tray1 = 1 tray1 = 2 tray1 = 3 angulo1 < 0 tray1 = 1 tray1 = 2 tray1 = 3 variables = 2 angulo1 > 0 tray1 = 1 tray1 = 2 tray1 = 3 angulo1 < 0 tray1 = 1 tray1 = 2 tray1 = 3 Case3 variables = 1 angulo1 > 0 tray1 = 1 tray1 = 2 tray1 = 3 angulo1 < 0 tray1 = 1 tray1 = 2 tray1 = 3 variables = 2 angulo1 > 0 tray1 = 1 tray1 = 2 tray1 = 3 angulo1 < 0 tray1 = 1 tray1 = 2 tray1 = 3 Case4 variables = 1 angulo1 > 0 tray1 = 1 tray1 = 2 tray1 = 3 angulo1 < 0 tray1 = 1 tray1 = 2 tray1 = 3 variables = 2 angulo1 > 0
Se elige trayectoria 1 considerando Se elige trayectoria 2 considerando Se elige trayectoria 3 considerando 3D respecto a X Angulo de rotacion positivo Se elige trayectoria 1 considerando Se elige trayectoria 2 considerando Se elige trayectoria 3 considerando Angulo de rotacion negativo Se elige trayectoria 1 considerando Se elige trayectoria 2 considerando Se elige trayectoria 3 considerando
el angulo negativo el angulo negativo el angulo negativo
el angulo positivo el angulo positivo el angulo positivo el angulo negativo el angulo negativo el angulo negativo
Todo el case 2 es rotar con respecto a 2D respecto a Y Angulo de rotacion positivo Se elige trayectoria 1 considerando el Se elige trayectoria 2 considerando el Se elige trayectoria 3 considerando el Angulo de rotacion negativo Se elige trayectoria 1 considerando el Se elige trayectoria 2 considerando el Se elige trayectoria 3 considerando el 3D respecto a Y Angulo de rotacion positivo Se elige trayectoria 1 considerando el Se elige trayectoria 2 considerando el Se elige trayectoria 3 considerando el Angulo de rotacion negativo Se elige trayectoria 1 considerando el Se elige trayectoria 2 considerando el Se elige trayectoria 3 considerando el Todo el case 3 es rotar con respecto a 2D respecto a Z Angulo de rotacion positivo Se elige trayectoria 1 considerando el Se elige trayectoria 2 considerando el Se elige trayectoria 3 considerando el Angulo de rotacion negativo Se elige trayectoria 1 considerando el Se elige trayectoria 2 considerando el Se elige trayectoria 3 considerando el 3D respecto a Z Angulo de rotacion positivo Se elige trayectoria 1 considerando el Se elige trayectoria 2 considerando el Se elige trayectoria 3 considerando el Angulo de rotacion negativo Se elige trayectoria 1 considerando el Se elige trayectoria 2 considerando el Se elige trayectoria 3 considerando el
Y (2D o 3D)
angulo positivo angulo positivo angulo positivo angulo negativo angulo negativo angulo negativo
angulo positivo angulo positivo angulo positivo angulo negativo angulo negativo angulo negativo Z (2D o 3D)
angulo positivo angulo positivo angulo positivo angulo negativo angulo negativo angulo negativo
angulo positivo angulo positivo angulo positivo angulo negativo angulo negativo angulo negativo
Todo el case 4 es rotar con respecto un Eje arbitrario (2D 0 3D) 2D respecto a un Eje arbitrario Angulo de rotacion positivo Se elige trayectoria 1 considerando el angulo positivo Se elige trayectoria 2 considerando el angulo positivo Se elige trayectoria 3 considerando el angulo positivo Angulo de rotacion negativo Se elige trayectoria 1 considerando el angulo negativo Se elige trayectoria 2 considerando el angulo negativo Se elige trayectoria 3 considerando el angulo negativo 3D respecto a un Eje arbitrario 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 switch rotar case 1 case 1 if variables if variables == 1 co = [salidaxx; salidayy; salidazz]; if angulo1 if angulo1 >= 0 if tray1 if tray1 == 1 t = 0:360; r = 3; xc = r*cosd(t); yc = r*sind(t); zc = ones(1, length(xc))*5; for th for th = 0:res1:angulo1 y1 = r*sind(th); x1 = r*cosd(th); z1 = 5; Pc = [0;0;z1]; Po = [0;0;0]; Pu = [r;0;z1]; Ps = [x1;y1;z1]; th_rad = (th*pi)/180; Pz = (rotz(th_rad))*Pu;
% % % % % % % % % % % % % % %
Rotar con respecto a X, Y o Z Todo el case 1 es rotar con respecto a X (2D o 3D) Si es igual a 1 es en 2D (Rotar en 2D con respecto a X) Esta variable co es una matriz que se utilizara para guardar los conjuntos de datos de la función Se elige angulo de rotacion positivo en 2D Se elige trayectoria 1 (Teniendo en cuenta el angulo positivo) Se dibuja primero la trayectoria que seguira la funcion Este sera el radio de la Trayectoria de la circunferencia circunferencia Primera parte ecuacion de trayectoria que se grafica. El comando cosd (angulo en sexagesimal sexagesimales) es) Segunda parte ecuacion de trayectoria que se grafica. El comando sind (angulo en sexagesimal sexagesimales) es) Tercera parte ecuacion de trayectoria que se grafica La variable res1 es la velocidad de animacion y para rotar en el mismo sentido agujas del reloj debe ser positivo La trayectoria que se seguira sera de una circunferencia hasta donde llegue th La trayectoria que se seguira sera de una circunferencia hasta donde llegue th Esta es la altura en donde se dibujara la trayectoria de la circunferencia
% % % % % %
Punto inicial Pc del radio de la circunferencia de la Trayectoria Punto inicial Po del vector de posicion (Centro de coordenadas) Punto final Pu del vector posicion fijo de referencia Punto final Ps del vector posicion que esta siguiendo la Trayectoria Conversion del angulo th en sexagesimal a th_rad en radianes para la funcion rotz y rotx 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 considerand o 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 plot3(co_R(1,:)+x1,co_R(2,:)+y1,co_ (2,:)+y1,co_R(3,:)+z1, R(3,:)+z1, 'r' 'r',xc,yc,zc) ,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' vector3d(Po,Ps,'r',1) ,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' vector3d(Po,Pu,'b',1) ,1) % Graficamos el vector posicion fijo de referencia (Color Azul) hold on % Activamos que el grafico anterior se mantenga plot3(0,0,0, 'mo' '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' 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' vector3d(Pc,Pz,'g',1) ,1) % Graficamos el desplazamiento del vector del radio de la circunferencia (Color Verde) xlabel('EJE xlabel('EJE X', X' ,'Color' 'Color', ,'r' 'r') ) % Dar nombre al eje X ylabel('EJE ylabel('EJE Y', Y' ,'Color' 'Color', ,'g' 'g') ) % Dar nombre al eje Y zlabel('EJE zlabel('EJE Z', Z' ,'Color' 'Color', ,'b' 'b') ) % Dar nombre al eje Z title(['Rotacion title(['Rotacion 2D en el Eje X en la Trayectoria 1' ,' ','Angulo giro positivo = ' num2str(th)]); 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 if tray1 == 2 t = 0:360; r = 3; xc = r*cosd(5*t); yc = r*sind(t); zc = ones(1, length(xc))*5;
% % % % % %
Se elige trayectoria 2 (Teniendo en cuenta el angulo positivo) Se dibuja primero la trayectoria que seguira la funcion Aqui la variable r sera parte de la ecuacion de la trayectoria a seguir Primera parte ecuacion de trayectoria que se grafica. El comando cosd (angulo en sexagesimal sexagesimales) es) Segunda parte ecuacion de trayectoria que se grafica. El comando sind (angulo en sexagesimales) sexagesimales) Tercera parte ecuacion de trayectoria que se grafica
for th = 0:res1:angulo1 for th y1 = r*sind(th); x1 = r*cosd(5*th); r*cosd(5*th); z1 = 5; Pc = [0;0;z1]; Po = [0;0;0]; Pu = [r;0;z1]; Ps = [x1;y1;z1]; th_rad = (th*pi)/180;
% % % %
La variable res1 es la velocidad de animacion y para rotar en el mismo sentido agujas del reloj debe ser positivo Primera parte de la ecuacion de la trayectoria que se seguira hasta donde llegue th Segunda parte de la ecuacion de la trayectoria que se seguira hasta donde llegue th Esta es la altura en donde se dibujara la trayectoria
% % % % %
Punto inicial Pc del radio de la circunferencia de la Trayectoria Punto inicial Po del vector de posicion (Centro de coordenadas) Punto final Pu del vector posicion fijo de referencia Punto final Ps del vector posicion que esta siguiendo la Trayectoria Conversion del angulo th en sexagesimal a th_rad en radianes para la funcion rotx
co_R = (rotx(th_rad))*co; (rotx(th_rad))*co; % Ecuacion con la funcion rotx semejante a la matriz Rx %Rx = [1 0 0;0 0;0 cosd(th) -sind(th);0 sind(th) cosd(th)]; cosd(th)]; % Matriz de rotacion en el eje 'X' en el mismo sentido a las 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 plot3(co_R(1,:)+x1,co_R(2,:)+y1,co_ (2,:)+y1,co_R(3,:)+z1, R(3,:)+z1, 'r' 'r',xc,yc,zc) ,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' vector3d(Po,Ps,'r',1) ,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' vector3d(Po,Pu,'b',1) ,1) % Graficamos el vector posicion fijo de referencia (Color Azul) hold on % Activamos que el grafico anterior se mantenga plot3(0,0,0, 'mo' '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' 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' vector3d(Pc,Ps,'g',1) ,1) % Graficamos el desplazamiento del vector del radio de la circunferencia (Color Verde) xlabel('EJE xlabel('EJE X', X' ,'Color' 'Color', ,'r' 'r') ) % Dar nombre al eje X ylabel('EJE ylabel('EJE Y', Y' ,'Color' 'Color', ,'g' 'g') ) % Dar nombre al eje Y zlabel('EJE zlabel('EJE Z', Z' ,'Color' 'Color', ,'b' 'b') ) % Dar nombre al eje Z title(['Rotacion title(['Rotacion 2D en el Eje X en la Trayectoria 2' ,' ','Angulo giro positivo = ' num2str(th)]); 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 if tray1 == 3 t = 0:360; r = 3; xc = 2*r*cosd(t); yc = r*sind(5*t); zc = ones(1, length(xc))*5; for th for th = 0:res1:angulo1 y1 = r*sind(5*th); r*sind(5*th); x1 = 2*r*cosd(th); 2*r*cosd(th); z1 = 5; Pc = [0;0;z1]; Po = [0;0;0]; Pu = [2*r;0;z1]; Ps = [x1;y1;z1]; th_rad = (th*pi)/180;
% % % % % % % % % %
Se elige trayectoria 3 (Teniendo en cuenta el angulo positivo) Se dibuja primero la trayectoria que seguira la funcion Aqui la variable r sera parte de la ecuacion de la trayectoria a seguir Primera parte ecuacion de trayectoria que se grafica. El comando cosd (angulo en sexagesimal sexagesimales) es) Segunda parte ecuacion de trayectoria que se grafica. El comando sind (angulo en sexagesimal sexagesimales) es) Tercera parte ecuacion de trayectoria que se grafica La variable res1 es la velocidad de animacion y para rotar en el mismo sentido agujas del reloj debe ser positivo Primera parte de la ecuacion de la trayectoria que se seguira hasta donde llegue th Segunda parte de la ecuacion de la trayectoria que se seguira hasta donde llegue th Esta es la altura en donde se dibujara la trayectoria
% % % % %
Punto inicial Pc del radio de la circunferencia de la Trayectoria Punto inicial Po del vector de posicion (Centro de coordenadas) Punto final Pu del vector posicion fijo de referencia Punto final Ps del vector posicion que esta siguiendo la Trayectoria Conversion del angulo th en sexagesimal a th_rad en radianes para la funcion rotx
co_R = (rotx(th_rad))*co; (rotx(th_rad))*co; % Ecuacion con la funcion rotx semejante a la matriz Rx %Rx = [1 0 0;0 0;0 cosd(th) -sind(th);0 sind(th) cosd(th)]; cosd(th)]; % Matriz de rotacion en el eje 'X' en el mismo sentido a las 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 plot3(co_R(1,:)+x1,co_R(2,:)+y1,co_ (2,:)+y1,co_R(3,:)+z1, R(3,:)+z1, 'r' 'r',xc,yc,zc) ,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' vector3d(Po,Ps,'r',1) ,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' vector3d(Po,Pu,'b',1) ,1) % Graficamos el vector posicion fijo de referencia (Color Azul) hold on % Activamos que el grafico anterior se mantenga
plot3(0,0,0, 'mo' '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' 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' vector3d(Pc,Ps,'g',1) ,1) % Graficamos el desplazamiento del vector del radio de la circunferencia (Color Verde) xlabel('EJE xlabel('EJE X', X' ,'Color' 'Color', ,'r' 'r') ) % Dar nombre al eje X ylabel('EJE ylabel('EJE Y', Y' ,'Color' 'Color', ,'g' 'g') ) % Dar nombre al eje Y zlabel('EJE zlabel('EJE Z', Z' ,'Color' 'Color', ,'b' 'b') ) % Dar nombre al eje Z title(['Rotacion title(['Rotacion 2D en el Eje X en la Trayectoria 3' ,' ','Angulo giro positivo = ' num2str(th)]); 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 if angulo1 < 0 if tray1 if tray1 == 1 t = 0:360; r = 3; xc = r*cosd(t); yc = r*sind(t); zc = ones(1, length(xc))*5; for th for th = 0:-res1:angulo1 y1 = r*sind(th); x1 = r*cosd(th); z1 = 5; Pc = [0;0;z1]; Po = [0;0;0]; Pu = [r;0;z1]; Ps = [x1;y1;z1]; th_rad = (th*pi)/180; Pz = (rotz(th_rad))*Pu;
% % % % % % % % % % %
Se elige angulo negativo 2D Se elige trayectoria 1 (Teniendo en cuenta el angulo negativo) Se dibuja primero la trayectoria que seguira la funcion Este sera el radio de la Trayectoria de la circunferencia circunferencia Primera parte ecuacion de trayectoria que se grafica. El comando cosd (angulo en sexagesimal sexagesimales) es) Segunda parte ecuacion de trayectoria que se grafica. El comando sind (angulo en sexagesimal sexagesimales) es) Tercera parte ecuacion de trayectoria que se grafica La variable res1 es velocidad animacion y para rotar en el sentido opuesto agujas del reloj se multiplica por '-1' La trayectoria que se seguira sera de una circunferencia hasta donde llegue th La trayectoria que se seguira sera de una circunferencia hasta donde llegue th Esta es la altura en donde se dibujara la trayectoria de la circunferencia
% % % % % %
Punto inicial Pc del radio de la circunferencia de la Trayectoria Punto inicial Po del vector de posicion (Centro de coordenadas) Punto final Pu del vector posicion fijo de referencia Punto final Ps del vector posicion que esta siguiendo la Trayectoria Conversion del angulo th en sexagesimal a th_rad en radianes para la funcion rotz y rotx Ecuacion con la funcion rotz considerando valores de su angulo en radianes semejante a la matriz Rz
%co_R = (rotx(th_ra (rotx(th_rad))*co; d))*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 plot3(co_R(1,:)+x1,co_R(2,:)+y1,co_ (2,:)+y1,co_R(3,:)+z1, R(3,:)+z1, 'r' 'r',xc,yc,zc) ,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' vector3d(Po,Ps,'r',1) ,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' vector3d(Po,Pu,'b',1) ,1) % Graficamos el vector posicion fijo de referencia (Color Azul) hold on % Activamos que el grafico anterior se mantenga plot3(0,0,0, 'mo' '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' 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' vector3d(Pc,Pz,'g',1) ,1) % Graficamos el desplazamiento del vector del radio de la circunferencia (Color Verde) xlabel('EJE xlabel('EJE X', X' ,'Color' 'Color', ,'r' 'r') ) % Dar nombre al eje X ylabel('EJE ylabel('EJE Y', Y' ,'Color' 'Color', ,'g' 'g') ) % Dar nombre al eje Y zlabel('EJE zlabel('EJE Z', Z' ,'Color' 'Color', ,'b' 'b') ) % Dar nombre al eje Z title(['Rotacion title(['Rotacion 2D en el Eje X en la Trayectoria 1' ,' ','Angulo giro negativo = ' num2str(th)]); 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 if tray1 == 2 t = 0:360; r = 3; xc = r*cosd(5*t);
% % % %
Se elige trayectoria 2 (Teniendo en cuenta el angulo negativo) Se dibuja primero la trayectoria que seguira la funcion Aqui la variable r sera parte de la ecuacion de la trayectoria a seguir Primera parte ecuacion de trayectoria que se grafica. El comando cosd (angulo en sexagesimal sexagesimales) es)
yc = r*sind(t); zc = ones(1, length(xc))*5; for th for th = 0:-res1:angulo1 y1 = r*sind(th); x1 = r*cosd(5*th); r*cosd(5*th); z1 = 5;
% % % % % %
Segunda parte ecuacion de trayectoria que se grafica. El comando sind (angulo en sexagesimal sexagesimales) es) Tercera parte ecuacion de trayectoria que se grafica La variable res1 es velocidad animacion y para rotar en el sentido opuesto agujas del reloj se multiplica por '-1' Primera parte de la ecuacion de la trayectoria que se seguira hasta donde llegue th Segunda parte de la ecuacion de la trayectoria que se seguira hasta donde llegue th Esta es la altura en donde se dibujara la trayectoria
Pc = [0;0;z1]; Po = [0;0;0]; Pu = [r;0;z1]; Ps = [x1;y1;z1]; th_rad = (th*pi)/180;
% % % % %
Punto inicial Pc del radio de la circunferencia de la Trayectoria Punto inicial Po del vector de posicion (Centro de coordenadas) Punto final Pu del vector posicion fijo de referencia Punto final Ps del vector posicion que esta siguiendo la Trayectoria Conversion del angulo th en sexagesimal a th_rad en radianes para la funcion rotx
co_R = (rotx(th_rad))*co; (rotx(th_rad))*co; % Ecuacion con la funcion rotx semejante a la matriz Rx %Rx = [1 0 0;0 0;0 cosd(th) -sind(th);0 sind(th) cosd(th)]; cosd(th)]; % Matriz de rotacion en el eje 'X' en el mismo sentido a las 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 plot3(co_R(1,:)+x1,co_R(2,:)+y1,co_ (2,:)+y1,co_R(3,:)+z1, R(3,:)+z1, 'r' 'r',xc,yc,zc) ,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' vector3d(Po,Ps,'r',1) ,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' vector3d(Po,Pu,'b',1) ,1) % Graficamos el vector posicion fijo de referencia (Color Azul) hold on % Activamos que el grafico anterior se mantenga plot3(0,0,0, 'mo' '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' 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' vector3d(Pc,Ps,'g',1) ,1) % Graficamos el desplazamiento del vector del radio de la circunferencia (Color Verde) xlabel('EJE xlabel('EJE X', X' ,'Color' 'Color', ,'r' 'r') ) % Dar nombre al eje X ylabel('EJE ylabel('EJE Y', Y' ,'Color' 'Color', ,'g' 'g') ) % Dar nombre al eje Y zlabel('EJE zlabel('EJE Z', Z' ,'Color' 'Color', ,'b' 'b') ) % Dar nombre al eje Z title(['Rotacion title(['Rotacion 2D en el Eje X en la Trayectoria 2' ,' ','Angulo giro negativo = ' num2str(th)]); 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 if tray1 == 3 t = 0:360; r = 3; xc = 2*r*cosd(t); yc = r*sind(5*t); zc = ones(1, length(xc))*5; for th for th = 0:-res1:angulo1 y1 = r*sind(5*th); r*sind(5*th); x1 = 2*r*cosd(th); 2*r*cosd(th); z1 = 5;
% % % % % % % % % %
Se elige trayectoria 3 (Teniendo en cuenta el angulo negativo) Se dibuja primero la trayectoria que seguira la funcion Aqui la variable r sera parte de la ecuacion de la trayectoria a seguir Primera parte ecuacion de trayectoria que se grafica. El comando cosd (angulo en sexagesimal sexagesimales) es) Segunda parte ecuacion de trayectoria que se grafica. El comando sind (angulo en sexagesimal sexagesimales) es) Tercera parte ecuacion de trayectoria que se grafica La variable res1 es velocidad animacion y para rotar en el sentido opuesto agujas del reloj se multiplica por '-1' Primera parte de la ecuacion de la trayectoria que se seguira hasta donde llegue th Segunda parte de la ecuacion de la trayectoria que se seguira hasta donde llegue th Esta es la altura en donde se dibujara la trayectoria
Pc = [0;0;z1]; Po = [0;0;0]; Pu = [2*r;0;z1]; Ps = [x1;y1;z1]; th_rad = (th*pi)/180;
% % % % %
Punto inicial Pc del radio de la circunferencia de la Trayectoria Punto inicial Po del vector de posicion (Centro de coordenadas) Punto final Pu del vector posicion fijo de referencia Punto final Ps del vector posicion que esta siguiendo la Trayectoria Conversion del angulo th en sexagesimal a th_rad en radianes para la funcion rotx
co_R = (rotx(th_rad))*co; (rotx(th_rad))*co; % Ecuacion con la funcion rotx semejante a la matriz Rx %Rx = [1 0 0;0 0;0 cosd(th) -sind(th);0 sind(th) cosd(th)]; cosd(th)]; % Matriz de rotacion en el eje 'X' en el mismo sentido a las 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 plot3(co_R(1,:)+x1,co_R(2,:)+y1,co_ (2,:)+y1,co_R(3,:)+z1, R(3,:)+z1, 'r' 'r',xc,yc,zc) ,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' vector3d(Po,Ps,'r',1) ,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' 'b',1) ,1) % Graficamos el vector posicion fijo de referencia (Color Azul) hold on % Activamos que el grafico anterior se mantenga plot3(0,0,0, 'mo' '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' 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' vector3d(Pc,Ps,'g',1) ,1) % Graficamos el desplazamiento del vector del radio de la circunferencia (Color Verde) xlabel('EJE xlabel('EJE X', X' ,'Color' 'Color', ,'r' 'r') ) % Dar nombre al eje X ylabel('EJE ylabel('EJE Y', Y' ,'Color' 'Color', ,'g' 'g') ) % Dar nombre al eje Y zlabel('EJE zlabel('EJE Z', Z' ,'Color' 'Color', ,'b' 'b') ) % Dar nombre al eje Z title(['Rotacion title(['Rotacion 2D en el Eje X en la Trayectoria 3' ,' ','Angulo giro negativo = ' num2str(th)]); 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 if variables == 2 % Si es igual a 2 es en 3D (Rotar en 3D con respecto a X) if angulo1 if angulo1 >= 0 % Se elige angulo positivo 2D if tray1 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 circunferencia xc = r*cosd(t); % Primera parte ecuacion de trayectoria que se grafica. El comando cosd (angulo en sexagesimal sexagesimales) es) yc = r*sind(t); % Segunda parte ecuacion de trayectoria que se grafica. El comando sind (angulo en sexagesimal sexagesimales) es) zc = ones(1, length(xc))*5; % Tercera parte ecuacion de trayectoria que se grafica for th for th = 0:res1:angulo1 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 for c = 1:25 for f 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; 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 xlabel('EJE X', X' ,'Color' 'Color', ,'r' 'r') ) % Dar nombre al eje X ylabel('EJE ylabel('EJE Y', Y' ,'Color' 'Color', ,'g' 'g') ) % Dar nombre al eje Y zlabel('EJE zlabel('EJE Z', Z' ,'Color' 'Color', ,'b' 'b') ) % Dar nombre al eje Z title(['Rotacion title(['Rotacion 3D en el Eje X en la Trayectoria 1' ,' ','Angulo giro positivo = ' num2str(th)]); 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 if tray1 == 2 t = 0:360; r = 3; xc = r*cosd(5*t); yc = r*sind(t); zc = ones(1, length(xc))*5; for th for th = 0:res1:angulo1 0:res1:angulo1 y1 = r*sind(th); x1 = r*cosd(5*th);
% % % % % % % % %
Se elige trayectoria 2 (Teniendo en cuenta el angulo positivo) Se dibuja primero la trayectoria que seguira la funcion Aqui la variable r sera parte de la ecuacion de la trayectoria a seguir Primera parte ecuacion de trayectoria que se grafica. El comando cosd (angulo en sexagesimal sexagesimales) es) Segunda parte ecuacion de trayectoria que se grafica. El comando sind (angulo en sexagesimal sexagesimales) es) Tercera parte ecuacion de trayectoria que se grafica La variable res1 es la velocidad de animacion y para rotar en el mismo sentido agujas del reloj debe ser positivo Primera parte de la ecuacion de la trayectoria que se seguira hasta donde llegue 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 for c = 1:25 for f 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; 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 xlabel('EJE X', X' ,'Color' 'Color', ,'r' 'r') ) % Dar nombre al eje X ylabel('EJE ylabel('EJE Y', Y' ,'Color' 'Color', ,'g' 'g') ) % Dar nombre al eje Y zlabel('EJE zlabel('EJE Z', Z' ,'Color' 'Color', ,'b' 'b') ) % Dar nombre al eje Z title(['Rotacion title(['Rotacion 3D en el Eje X en la Trayectoria 2' ,' ','Angulo giro positivo = ' num2str(th)]); 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 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 sexagesimal sexagesimales) es) yc = r*sind(5*t); % Segunda parte ecuacion de trayectoria que se grafica. El comando sind (angulo en sexagesimal sexagesimales) es) zc = ones(1, length(xc))*5; % Tercera parte ecuacion de trayectoria que se grafica for th for th = 0:res1:angulo1 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 for c = 1:25 for f 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; 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 xlabel('EJE X', X' ,'Color' 'Color', ,'r' 'r') ) % Dar nombre al eje X ylabel('EJE ylabel('EJE Y', Y' ,'Color' 'Color', ,'g' 'g') ) % Dar nombre al eje Y zlabel('EJE zlabel('EJE Z', Z' ,'Color' 'Color', ,'b' 'b') ) % Dar nombre al eje Z title(['Rotacion title(['Rotacion 3D en el Eje X en la Trayectoria 3' ,' ','Angulo giro positivo = ' num2str(th)]); 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 if angulo1 < 0 if tray1 if tray1 == 1 t = 0:360; r = 3; xc = r*cosd(t); yc = r*sind(t); zc = ones(1, length(xc))*5; for th for th = 0:-res1:angulo1 0:-res1:angulo1 y1 = r*sind(th); x1 = r*cosd(th); z1 = 5;
% % % % % % % % % % %
Se elige angulo negativo 2D Se elige trayectoria 1 (Teniendo en cuenta el angulo negativo) Se dibuja primero la trayectoria que seguira la funcion Este sera el radio de la Trayectoria de la circunferencia circunferencia Primera parte ecuacion de trayectoria que se grafica. El comando cosd (angulo en sexagesimal sexagesimales) es) Segunda parte ecuacion de trayectoria que se grafica. El comando sind (angulo en sexagesimal sexagesimales) es) Tercera parte ecuacion de trayectoria que se grafica La variable res1 es velocidad animacion y para rotar en el sentido opuesto agujas del reloj se multiplica por '-1' Primera parte de la ecuacion de la trayectoria que se seguira hasta donde llegue th Segunda parte de la ecuacion de la trayectoria que se seguira hasta donde llegue th Esta es la altura en donde se dibujara la trayectoria
for c for c = 1:25 for f 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; 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 xlabel('EJE X', X' ,'Color' 'Color', ,'r' 'r') ) % Dar nombre al eje X ylabel('EJE ylabel('EJE Y', Y' ,'Color' 'Color', ,'g' 'g') ) % Dar nombre al eje Y zlabel('EJE zlabel('EJE Z', Z' ,'Color' 'Color', ,'b' 'b') ) % Dar nombre al eje Z title(['Rotacion title(['Rotacion 3D en el Eje X en la Trayectoria 1' ,' ','Angulo giro negativo = ' num2str(th)]); 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 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 sexagesimal sexagesimales) es) yc = r*sind(t); % Segunda parte ecuacion de trayectoria que se grafica. El comando sind (angulo en sexagesimal sexagesimales) es) zc = ones(1, length(xc))*5; % Tercera parte ecuacion de trayectoria que se grafica for th for th = 0:-res1:angulo1 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 for c = 1:25 for f 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; 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 xlabel('EJE X', X' ,'Color' 'Color', ,'r' 'r') ) % Dar nombre al eje X ylabel('EJE ylabel('EJE Y', Y' ,'Color' 'Color', ,'g' 'g') ) % Dar nombre al eje Y zlabel('EJE zlabel('EJE Z', Z' ,'Color' 'Color', ,'b' 'b') ) % Dar nombre al eje Z title(['Rotacion title(['Rotacion 3D en el Eje X en la Trayectoria 2' ,' ','Angulo giro negativo = ' num2str(th)]); 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 if tray1 == 3 % t = 0:360; % r = 3; % xc = 2*r*cosd(t); % yc = r*sind(5*t); % zc = ones(1, length(xc))*5; % for th for th = 0:-res1:angulo1 0:-res1:angulo1 % y1 = r*sind(5*th); % x1 = 2*r*cosd(th); % z1 = 5; % for c for c = 1:25 for f for f = 1:25 Rx = [1 0 0;0 cosd(th) -sind(th);0
Se elige trayectoria 3 (Teniendo en cuenta el angulo negativo) Se dibuja primero la trayectoria que seguira la funcion Aqui la variable r sera parte de la ecuacion de la trayectoria a seguir Primera parte ecuacion de trayectoria que se grafica. El comando cosd (angulo en sexagesimal sexagesimales) es) Segunda parte ecuacion de trayectoria que se grafica. El comando sind (angulo en sexagesimal sexagesimales) es) Tercera parte ecuacion de trayectoria que se grafica La variable res1 es velocidad animacion y para rotar en el sentido opuesto agujas del reloj se multiplica por '-1' Primera parte de la ecuacion de la trayectoria que se seguira hasta donde llegue th Segunda parte de la ecuacion de la trayectoria que se seguira hasta donde llegue th Esta es la altura en donde se dibujara la trayectoria
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; 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 xlabel('EJE X', X' ,'Color' 'Color', ,'r' 'r') ) % Dar nombre al eje X ylabel('EJE ylabel('EJE Y', Y' ,'Color' 'Color', ,'g' 'g') ) % Dar nombre al eje Y zlabel('EJE zlabel('EJE Z', Z' ,'Color' 'Color', ,'b' 'b') ) % Dar nombre al eje Z title(['Rotacion title(['Rotacion 3D en el Eje X en la Trayectoria 3' ,' ','Angulo giro negativo = ' num2str(th)]); 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 case 2 if variables if variables == 1 co = [salidaxx; salidayy; salidazz]; if angulo1 if angulo1 >= 0 if tray1 if tray1 == 1 t = 0:360; r = 3; xc = r*cosd(t); yc = r*sind(t); zc = ones(1, length(xc))*5; for th for th = 0:res1:angulo1 0:res1:angulo1 y1 = r*sind(th); x1 = r*cosd(th); z1 = 5; Pc = [0;0;z1]; Po = [0;0;0]; Pu = [r;0;z1]; Ps = [x1;y1;z1]; th_rad = (th*pi)/180; Pz = (rotz(th_rad))*Pu;
% % % % % % % % % % % % % %
Todo el case 2 es rotar con respecto a Y (2D o 3D) Si es igual a 1 es en 2D (Rotar en 2D con respecto a Y) Esta variable co es una matriz que se utilizara para guardar los conjuntos de datos de la función Se elige angulo positivo 2D Se elige trayectoria 1 (Teniendo en cuenta el angulo positivo) Se dibuja primero la trayectoria que seguira la funcion Este sera el radio de la Trayectoria de la circunferencia circunferencia Primera parte ecuacion de trayectoria que se grafica. El comando cosd (angulo en sexagesimal sexagesimales) es) Segunda parte ecuacion de trayectoria que se grafica. El comando sind (angulo en sexagesimal sexagesimales) es) Tercera parte ecuacion de trayectoria que se grafica La variable res1 es la velocidad de animacion y para rotar en el mismo sentido agujas del reloj debe ser positivo La trayectoria que se seguira sera de una circunferencia hasta donde llegue th La trayectoria que se seguira sera de una circunferencia hasta donde llegue th Esta es la altura en donde se dibujara la trayectoria de la circunferencia
% % % % % %
Punto inicial Pc del radio de la circunferencia de la Trayectoria Punto inicial Po del vector de posicion (Centro de coordenadas) Punto final Pu del vector posicion fijo de referencia Punto final Ps del vector posicion que esta siguiendo la Trayectoria Conversion del angulo th en sexagesimal a th_rad en radianes para la funcion rotz y rotx Ecuacion con la funcion rotz considerando valores de su angulo en radianes semejante a la matriz Rz
%co_R = (roty(th_ra (roty(th_rad))*co; d))*co; % Ecuacion con la funcion rotx consideran considerando do 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( plot3(co_R(1,:)+x1,co_R(2,:)+y1,co_R 2,:)+y1,co_R(3,:)+z1, (3,:)+z1, 'r' 'r',xc,yc,zc) ,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' vector3d(Po,Ps,'r',1) ,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' vector3d(Po,Pu,'b',1) ,1) % Graficamos el vector posicion fijo de referencia (Color Azul) hold on % Activamos que el grafico anterior se mantenga plot3(0,0,0,'mo' 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' 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' vector3d(Pc,Pz,'g',1) ,1) % Graficamos el desplazamiento del vector del radio de la circunferencia (Color Verde) xlabel('EJE xlabel('EJE X', X' ,'Color' 'Color', ,'r' 'r') ) % Dar nombre al eje X ylabel('EJE ylabel('EJE Y', Y' ,'Color' 'Color', ,'g' 'g') ) % Dar nombre al eje Y zlabel('EJE zlabel('EJE Z', Z' ,'Color' 'Color', ,'b' 'b') ) % Dar nombre al eje Z title(['Rotacion title(['Rotacion 2D en el Eje Y en la Trayectoria 1' ,' ','Angulo giro positivo = ' num2str(th)]); 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 if tray1 == 2 t = 0:360; r = 3; xc = r*cosd(5*t); yc = r*sind(t); zc = ones(1, length(xc))*5; for th for th = 0:res1:angulo1 0:res1:angulo1 y1 = r*sind(th); x1 = r*cosd(5*th); z1 = 5; Pc = [0;0;z1]; Po = [0;0;0]; Pu = [r;0;z1]; Ps = [x1;y1;z1]; th_rad = (th*pi)/180;
% % % % % % % % % %
Se elige trayectoria 2 (Teniendo en cuenta el angulo positivo) Se dibuja primero la trayectoria que seguira la funcion Aqui la variable r sera parte de la ecuacion de la trayectoria a seguir Primera parte ecuacion de trayectoria que se grafica. El comando cosd (angulo en sexagesimal sexagesimales) es) Segunda parte ecuacion de trayectoria que se grafica. El comando sind (angulo en sexagesimal sexagesimales) es) Tercera parte ecuacion de trayectoria que se grafica La variable res1 es la velocidad de animacion y para rotar en el mismo sentido agujas del reloj debe ser positivo Primera parte de la ecuacion de la trayectoria que se seguira hasta donde llegue th Segunda parte de la ecuacion de la trayectoria que se seguira hasta donde llegue th Esta es la altura en donde se dibujara la trayectoria
% % % % %
Punto inicial Pc del radio de la circunferencia de la Trayectoria Punto inicial Po del vector de posicion (Centro de coordenadas) Punto final Pu del vector posicion fijo de referencia Punto final Ps del vector posicion que esta siguiendo la Trayectoria 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) [cosd(th) 0 sind(th);0 sind(th);0 1 0 0;-sind(th) ;-sind(th) 0 cosd(th)]; % Matriz Matriz de rotacion en el el eje 'Y' e en n el el mismo mismo sentido sentido a las las agujas 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( plot3(co_R(1,:)+x1,co_R(2,:)+y1,co_R 2,:)+y1,co_R(3,:)+z1, (3,:)+z1, 'r' 'r',xc,yc,zc) ,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' vector3d(Po,Ps,'r',1) ,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' vector3d(Po,Pu,'b',1) ,1) % Graficamos el vector posicion fijo de referencia (Color Azul) hold on % Activamos que el grafico anterior se mantenga plot3(0,0,0,'mo' 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' 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' vector3d(Pc,Ps,'g',1) ,1) % Graficamos el desplazamiento del vector del radio de la circunferencia (Color Verde) xlabel('EJE xlabel('EJE X', X' ,'Color' 'Color', ,'r' 'r') ) % Dar nombre al eje X ylabel('EJE ylabel('EJE Y', Y' ,'Color' 'Color', ,'g' 'g') ) % Dar nombre al eje Y zlabel('EJE zlabel('EJE Z', Z' ,'Color' 'Color', ,'b' 'b') ) % Dar nombre al eje Z title(['Rotacion title(['Rotacion 2D en el Eje Y en la Trayectoria 2' ,' ','Angulo giro positivo = ' num2str(th)]); 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 if tray1 == 3 t = 0:360; r = 3; xc = 2*r*cosd(t); yc = r*sind(5*t); zc = ones(1, length(xc))*5; for th for th = 0:res1:angulo1 0:res1:angulo1 y1 = r*sind(5*th); x1 = 2*r*cosd(th); z1 = 5; Pc = [0;0;z1]; Po = [0;0;0]; Pu = [2*r;0;z1]; Ps = [x1;y1;z1]; th_rad = (th*pi)/180;
% % % % % % % % % %
Se elige trayectoria 3 (Teniendo en cuenta el angulo positivo) Se dibuja primero la trayectoria que seguira la funcion Aqui la variable r sera parte de la ecuacion de la trayectoria a seguir Primera parte ecuacion de trayectoria que se grafica. El comando cosd (angulo en sexagesimal sexagesimales) es) Segunda parte ecuacion de trayectoria que se grafica. El comando sind (angulo en sexagesimal sexagesimales) es) Tercera parte ecuacion de trayectoria que se grafica La variable res1 es la velocidad de animacion y para rotar en el mismo sentido agujas del reloj debe ser positivo Primera parte de la ecuacion de la trayectoria que se seguira hasta donde llegue th Segunda parte de la ecuacion de la trayectoria que se seguira hasta donde llegue th Esta es la altura en donde se dibujara la trayectoria
% % % % %
Punto inicial Pc del radio de la circunferencia de la Trayectoria Punto inicial Po del vector de posicion (Centro de coordenadas) Punto final Pu del vector posicion fijo de referencia Punto final Ps del vector posicion que esta siguiendo la Trayectoria 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) [cosd(th) 0 sind(th);0 sind(th);0 1 0 0;-sind(th) ;-sind(th) 0 cosd(th)]; % Matriz Matriz de rotacion en el el eje 'Y' en en el el mismo mismo sentido sentido a las las agujas 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( plot3(co_R(1,:)+x1,co_R(2,:)+y1,co_R 2,:)+y1,co_R(3,:)+z1, (3,:)+z1, 'r' 'r',xc,yc,zc) ,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' vector3d(Po,Ps,'r',1) ,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' vector3d(Po,Pu,'b',1) ,1) % Graficamos el vector posicion fijo de referencia (Color Azul) hold on % Activamos que el grafico anterior se mantenga plot3(0,0,0,'mo' 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' 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' vector3d(Pc,Ps,'g',1) ,1) % Graficamos el desplazamiento del vector del radio de la circunferencia (Color Verde) xlabel('EJE xlabel('EJE X', X' ,'Color' 'Color', ,'r' 'r') ) % Dar nombre al eje X ylabel('EJE ylabel('EJE Y', Y' ,'Color' 'Color', ,'g' 'g') ) % Dar nombre al eje Y zlabel('EJE zlabel('EJE Z', Z' ,'Color' 'Color', ,'b' 'b') ) % Dar nombre al eje Z title(['Rotacion title(['Rotacion 2D en el Eje Y en la Trayectoria 3' ,' ','Angulo giro positivo = ' num2str(th)]); 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 if angulo1 < 0 if tray1 if tray1 == 1 t = 0:360; r = 3; xc = r*cosd(t); yc = r*sind(t); zc = ones(1, length(xc))*5; for th for th = 0:-res1:angulo1 0:-res1:angulo1 y1 = r*sind(th); x1 = r*cosd(th); z1 = 5;
% % % % % % % % % % %
Se elige angulo negativo 2D Se elige trayectoria 1 (Teniendo en cuenta el angulo negativo) Se dibuja primero la trayectoria que seguira la funcion Este sera el radio de la Trayectoria de la circunferencia circunferencia Primera parte ecuacion de trayectoria que se grafica. El comando cosd (angulo en sexagesimal sexagesimales) es) Segunda parte ecuacion de trayectoria que se grafica. El comando sind (angulo en sexagesimal sexagesimales) es) Tercera parte ecuacion de trayectoria que se grafica La variable res1 es velocidad animacion y para rotar en el sentido opuesto agujas del reloj se multiplica por '-1' La trayectoria que se seguira sera de una circunferencia hasta donde llegue th La trayectoria que se seguira sera de una circunferencia hasta donde llegue th Esta es la altura en donde se dibujara la trayectoria de la circunferencia
Pc = [0;0;z1]; Po = [0;0;0]; Pu = [r;0;z1]; Ps = [x1;y1;z1]; th_rad = (th*pi)/180; Pz = (rotz(th_rad))*Pu;
% % % % % %
Punto inicial Pc del radio de la circunferencia de la Trayectoria Punto inicial Po del vector de posicion (Centro de coordenadas) Punto final Pu del vector posicion fijo de referencia Punto final Ps del vector posicion que esta siguiendo la Trayectoria Conversion del angulo th en sexagesimal a th_rad en radianes para la funcion rotz y rotx Ecuacion con la funcion rotz considerando valores de su angulo en radianes semejante a la matriz Rz
%co_R = (roty(th_ra (roty(th_rad))*co; d))*co; % Ecuacion con la funcion rotx consideran considerando do 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( plot3(co_R(1,:)+x1,co_R(2,:)+y1,co_R 2,:)+y1,co_R(3,:)+z1, (3,:)+z1, 'r' 'r',xc,yc,zc) ,xc,yc,zc) hold on % Activamos que vector3d(Po,Ps,'r' vector3d(Po,Ps,'r',1) ,1) % Graficamos el hold on % Activamos que vector3d(Po,Pu,'b' vector3d(Po,Pu,'b',1) ,1) % Graficamos el hold on % Activamos que plot3(0,0,0,'mo' plot3(0,0,0,'mo') ) % Graficamos el hold on % Activamos que plot3(0,0,z1,'mo' plot3(0,0,z1,'mo') ) % Graficamos el hold on % Activamos que vector3d(Pc,Pz,'g' vector3d(Pc,Pz,'g',1) ,1) % Graficamos el xlabel('EJE xlabel('EJE X', X' ,'Color' 'Color', ,'r' 'r') ) % Dar nombre al ylabel('EJE ylabel('EJE Y', Y' ,'Color' 'Color', ,'g' 'g') ) % Dar nombre al zlabel('EJE zlabel('EJE Z', Z' ,'Color' 'Color', ,'b' 'b') ) % Dar nombre al title(['Rotacion title(['Rotacion 2D en el Eje Y en la Trayectoria 1' ,' grid on % Activamos las
% 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 el grafico anterior se mantenga vector posicion que esta siguiendo la Trayectoria (Color Rojo) el grafico anterior se mantenga vector posicion fijo de referencia (Color Azul) el grafico anterior se mantenga centro de coordenadas del Punto Po (Color Magenta) el grafico anterior se mantenga centro de la Trayectoria del Punto Pc de la circunferencia (Color Magenta) el grafico anterior se mantenga desplazamiento del vector del radio de la circunferencia (Color Verde) eje X eje Y eje Z ','Angulo giro negativo = ' num2str(th)]); num2str(th)]); % Declaramos un titulo con los resultados de los angulos rejillas
axis([-8 8 -8 8 -8 8]) pause(0.01)
% Establecemos un sistema de ejes fijo X, Y y Z como minimos y maximos
end end if tray1 if tray1 == 2 t = 0:360; r = 3; xc = r*cosd(5*t); yc = r*sind(t); zc = ones(1, length(xc))*5; for th for th = 0:-res1:angulo1 0:-res1:angulo1 y1 = r*sind(th); x1 = r*cosd(5*th); z1 = 5; Pc = [0;0;z1]; Po = [0;0;0]; Pu = [r;0;z1]; Ps = [x1;y1;z1]; th_rad = (th*pi)/180;
% % % % % % % % % %
Se elige trayectoria 2 (Teniendo en cuenta el angulo negativo) Se dibuja primero la trayectoria que seguira la funcion Aqui la variable r sera parte de la ecuacion de la trayectoria a seguir Primera parte ecuacion de trayectoria que se grafica. El comando cosd (angulo en sexagesimal sexagesimales) es) Segunda parte ecuacion de trayectoria que se grafica. El comando sind (angulo en sexagesimal sexagesimales) es) Tercera parte ecuacion de trayectoria que se grafica La variable res1 es velocidad animacion y para rotar en el sentido opuesto agujas del reloj se multiplica por '-1' Primera parte de la ecuacion de la trayectoria que se seguira hasta donde llegue th Segunda parte de la ecuacion de la trayectoria que se seguira hasta donde llegue th Esta es la altura en donde se dibujara la trayectoria
% % % % %
Punto inicial Pc del radio de la circunferencia de la Trayectoria Punto inicial Po del vector de posicion (Centro de coordenadas) Punto final Pu del vector posicion fijo de referencia Punto final Ps del vector posicion que esta siguiendo la Trayectoria 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) [cosd(th) 0 sind(th);0 sind(th);0 1 0 0;-sind(th) ;-sind(th) 0 cosd(th)]; % Matriz Matriz de rotacion en el el eje 'Y' e en n el el mismo mismo sentido sentido a las las agujas 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( plot3(co_R(1,:)+x1,co_R(2,:)+y1,co_R 2,:)+y1,co_R(3,:)+z1, (3,:)+z1, 'r' 'r',xc,yc,zc) ,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' vector3d(Po,Ps,'r',1) ,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' vector3d(Po,Pu,'b',1) ,1) % Graficamos el vector posicion fijo de referencia (Color Azul) hold on % Activamos que el grafico anterior se mantenga plot3(0,0,0,'mo' 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' 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' vector3d(Pc,Ps,'g',1) ,1) % Graficamos el desplazamiento del vector del radio de la circunferencia (Color Verde) xlabel('EJE xlabel('EJE X', X' ,'Color' 'Color', ,'r' 'r') ) % Dar nombre al eje X ylabel('EJE ylabel('EJE Y', Y' ,'Color' 'Color', ,'g' 'g') ) % Dar nombre al eje Y zlabel('EJE zlabel('EJE Z', Z' ,'Color' 'Color', ,'b' 'b') ) % Dar nombre al eje Z title(['Rotacion title(['Rotacion 2D en el Eje Y en la Trayectoria 2' ,' ','Angulo giro negativo = ' num2str(th)]); 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 if tray1 == 3 t = 0:360; r = 3; xc = 2*r*cosd(t); yc = r*sind(5*t); zc = ones(1, length(xc))*5; for th for th = 0:-res1:angulo1 0:-res1:angulo1 y1 = r*sind(5*th); x1 = 2*r*cosd(th); z1 = 5; Pc = [0;0;z1]; Po = [0;0;0]; Pu = [2*r;0;z1]; Ps = [x1;y1;z1]; th_rad = (th*pi)/180;
% % % % % % % % % %
Se elige trayectoria 3 (Teniendo en cuenta el angulo negativo) Se dibuja primero la trayectoria que seguira la funcion Aqui la variable r sera parte de la ecuacion de la trayectoria a seguir Primera parte ecuacion de trayectoria que se grafica. El comando cosd (angulo en sexagesimal sexagesimales) es) Segunda parte ecuacion de trayectoria que se grafica. El comando sind (angulo en sexagesimal sexagesimales) es) Tercera parte ecuacion de trayectoria que se grafica La variable res1 es velocidad animacion y para rotar en el sentido opuesto agujas del reloj se multiplica por '-1' Primera parte de la ecuacion de la trayectoria que se seguira hasta donde llegue th Segunda parte de la ecuacion de la trayectoria que se seguira hasta donde llegue th Esta es la altura en donde se dibujara la trayectoria
% % % % %
Punto inicial Pc del radio de la circunferencia de la Trayectoria Punto inicial Po del vector de posicion (Centro de coordenadas) Punto final Pu del vector posicion fijo de referencia Punto final Ps del vector posicion que esta siguiendo la Trayectoria 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) [cosd(th) 0 sind(th);0 sind(th);0 1 0 0;-sind(th) ;-sind(th) 0 cosd(th)]; % Matriz Matriz de rotacion en el el eje 'Y' e en n el el mismo mismo sentido sentido a las las agujas 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( plot3(co_R(1,:)+x1,co_R(2,:)+y1,co_R 2,:)+y1,co_R(3,:)+z1, (3,:)+z1, 'r' 'r',xc,yc,zc) ,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' vector3d(Po,Ps,'r',1) ,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' vector3d(Po,Pu,'b',1) ,1) % Graficamos el vector posicion fijo de referencia (Color Azul) hold on % Activamos que el grafico anterior se mantenga plot3(0,0,0,'mo' 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' 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' vector3d(Pc,Ps,'g',1) ,1) % Graficamos el desplazamiento del vector del radio de la circunferencia (Color Verde) xlabel('EJE xlabel('EJE X', X' ,'Color' 'Color', ,'r' 'r') ) % Dar nombre al eje X ylabel('EJE ylabel('EJE Y', Y' ,'Color' 'Color', ,'g' 'g') ) % Dar nombre al eje Y zlabel('EJE zlabel('EJE Z', Z' ,'Color' 'Color', ,'b' 'b') ) % Dar nombre al eje Z title(['Rotacion title(['Rotacion 2D en el Eje Y en la Trayectoria 3' ,' ','Angulo giro negativo = ' num2str(th)]); 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 if variables == 2 % Rotar con respecto a Y, en 3D if angulo1 if angulo1 >= 0 % Se elige angulo positivo if tray1 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 circunferencia xc = r*cosd(t); % Primera parte ecuacion de trayectoria que se grafica. El comando cosd (angulo en sexagesimal sexagesimales) es) yc = r*sind(t); % Segunda parte ecuacion de trayectoria que se grafica. El comando sind (angulo en sexagesimal sexagesimales) es) zc = ones(1, length(xc))*5; % Tercera parte ecuacion de trayectoria que se grafica for th for th = 0:res1:angulo1 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 for c = 1:25 for f 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; 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 xlabel('EJE X', X' ,'Color' 'Color', ,'r' 'r') ) % Dar nombre al eje X ylabel('EJE ylabel('EJE Y', Y' ,'Color' 'Color', ,'g' 'g') ) % Dar nombre al eje Y zlabel('EJE zlabel('EJE Z', Z' ,'Color' 'Color', ,'b' 'b') ) % Dar nombre al eje Z title(['Rotacion title(['Rotacion 3D en el Eje Y en la Trayectoria 1' ,' ','Angulo giro positivo = ' num2str(th)]); 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 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 sexagesimal sexagesimales) es) yc = r*sind(t); % Segunda parte ecuacion de trayectoria que se grafica. El comando sind (angulo en sexagesimal sexagesimales) es) zc = ones(1, length(xc))*5; % Tercera parte ecuacion de trayectoria que se grafica for th for th = 0:res1:angulo1 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 for c = 1:25 for f 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; 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 xlabel('EJE X', X' ,'Color' 'Color', ,'r' 'r') ) % Dar nombre al eje X ylabel('EJE ylabel('EJE Y', Y' ,'Color' 'Color', ,'g' 'g') ) % Dar nombre al eje Y zlabel('EJE zlabel('EJE Z', Z' ,'Color' 'Color', ,'b' 'b') ) % Dar nombre al eje Z title(['Rotacion title(['Rotacion 3D en el Eje Y en la Trayectoria 2' ,' ','Angulo giro positivo = ' num2str(th)]); 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 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 sexagesimal sexagesimales) es) yc = r*sind(5*t); % Segunda parte ecuacion de trayectoria que se grafica. El comando sind (angulo en sexagesimal sexagesimales) es) zc = ones(1, length(xc))*5; % Tercera parte ecuacion de trayectoria que se grafica for th for th = 0:res1:angulo1 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 for c = 1:25 for f 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; 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 xlabel('EJE X', X' ,'Color' 'Color', ,'r' 'r') ) % Dar nombre al eje X ylabel('EJE ylabel('EJE Y', Y' ,'Color' 'Color', ,'g' 'g') ) % Dar nombre al eje Y zlabel('EJE zlabel('EJE Z', Z' ,'Color' 'Color', ,'b' 'b') ) % Dar nombre al eje Z title(['Rotacion title(['Rotacion 3D en el Eje Y en la Trayectoria 3' ,' ','Angulo giro positivo = ' num2str(th)]); 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 if angulo1 < 0 if tray1 if tray1 == 1
% Se elige angulo negativo % 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 circunferencia xc = r*cosd(t); % Primera parte ecuacion de trayectoria que se grafica. El comando cosd (angulo en sexagesimal sexagesimales) es) yc = r*sind(t); % Segunda parte ecuacion de trayectoria que se grafica. El comando sind (angulo en sexagesimal sexagesimales) es) zc = ones(1, length(xc))*5; % Tercera parte ecuacion de trayectoria que se grafica for th for th = 0:-res1:angulo1 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 for c = 1:25 for f 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; 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 xlabel('EJE X', X' ,'Color' 'Color', ,'r' 'r') ) % Dar nombre al eje X ylabel('EJE ylabel('EJE Y', Y' ,'Color' 'Color', ,'g' 'g') ) % Dar nombre al eje Y zlabel('EJE zlabel('EJE Z', Z' ,'Color' 'Color', ,'b' 'b') ) % Dar nombre al eje Z title(['Rotacion title(['Rotacion 3D en el Eje Y en la Trayectoria 1' ,' ','Angulo giro negativo = ' num2str(th)]); 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 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 sexagesimal sexagesimales) es) yc = r*sind(t); % Segunda parte ecuacion de trayectoria que se grafica. El comando sind (angulo en sexagesimal sexagesimales) es) zc = ones(1, length(xc))*5; % Tercera parte ecuacion de trayectoria que se grafica for th for th = 0:-res1:angulo1 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 for c = 1:25 for f 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; 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 xlabel('EJE X', X' ,'Color' 'Color', ,'r' 'r') ) % Dar nombre al eje X ylabel('EJE ylabel('EJE Y', Y' ,'Color' 'Color', ,'g' 'g') ) % Dar nombre al eje Y zlabel('EJE zlabel('EJE Z', Z' ,'Color' 'Color', ,'b' 'b') ) % Dar nombre al eje Z title(['Rotacion title(['Rotacion 3D en el Eje Y en la Trayectoria 2' ,' ','Angulo giro negativo = ' num2str(th)]); 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 if tray1 == 3 t = 0:360; r = 3; xc = 2*r*cosd(t);
% % % %
Se elige trayectoria 3 (Teniendo en cuenta el angulo negativo) Se dibuja primero la trayectoria que seguira la funcion Aqui la variable r sera parte de la ecuacion de la trayectoria a seguir Primera parte ecuacion de trayectoria que se grafica. El comando cosd (angulo en sexagesimal sexagesimales) es)
yc = r*sind(5*t); % Segunda parte ecuacion de trayectoria que se grafica. El comando sind (angulo en sexagesimal sexagesimales) es) zc = ones(1, length(xc))*5; % Tercera parte ecuacion de trayectoria que se grafica for th for th = 0:-res1:angulo1 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 for c = 1:25 for f 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; 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 xlabel('EJE X', X' ,'Color' 'Color', ,'r' 'r') ) % Dar nombre al eje X ylabel('EJE ylabel('EJE Y', Y' ,'Color' 'Color', ,'g' 'g') ) % Dar nombre al eje Y zlabel('EJE zlabel('EJE Z', Z' ,'Color' 'Color', ,'b' 'b') ) % Dar nombre al eje Z title(['Rotacion title(['Rotacion 3D en el Eje Y en la Trayectoria 3' ,' ','Angulo giro negativo = ' num2str(th)]); 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 case 3 if variables if variables == 1 co = [salidaxx; salidayy; salidazz]; if angulo1 if angulo1 >= 0 if tray1 if tray1 == 1 t = 0:360; r = 3; xc = r*cosd(t); yc = r*sind(t); zc = ones(1, length(xc))*5; for th for th = 0:res1:angulo1 0:res1:angulo1 y1 = r*sind(th); x1 = r*cosd(th); z1 = 5; Pc = [0;0;z1]; Po = [0;0;0]; Pu = [r;0;z1]; Ps = [x1;y1;z1]; th_rad = (th*pi)/180; Pz = (rotz(th_rad))*Pu;
% % % % % % % % % % % % % %
Todo el case 3 es rotar con respecto a Z (2D o 3D) Rotar con respecto a Z, en 2D Esta variable co es una matriz que se utilizara para guardar los conjuntos de datos de la función Se elige angulo positivo Se elige trayectoria 1 (Teniendo en cuenta el angulo positivo) Se dibuja primero la trayectoria que seguira la funcion Este sera el radio de la Trayectoria de la circunferencia circunferencia Primera parte ecuacion de trayectoria que se grafica. El comando cosd (angulo en sexagesimal sexagesimales) es) Segunda parte ecuacion de trayectoria que se grafica. El comando sind (angulo en sexagesimal sexagesimales) es) Tercera parte ecuacion de trayectoria que se grafica La variable res1 es la velocidad de animacion y para rotar en el mismo sentido agujas del reloj debe ser positivo La trayectoria que se seguira sera de una circunferencia hasta donde llegue th La trayectoria que se seguira sera de una circunferencia hasta donde llegue th Esta es la altura en donde se dibujara la trayectoria de la circunferencia
% % % % % %
Punto inicial Pc del radio de la circunferencia de la Trayectoria Punto inicial Po del vector de posicion (Centro de coordenadas) Punto final Pu del vector posicion fijo de referencia Punto final Ps del vector posicion que esta siguiendo la Trayectoria Conversion del angulo th en sexagesimal a th_rad en radianes para la funcion rotz y rotx Ecuacion con la funcion rotz considerando valores de su angulo en radianes semejante a la matriz Rz
%co_R = (rotz(th_ra (rotz(th_rad))*co; d))*co; % Ecuacion con la funcion rotx consideran considerando do 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( plot3(co_R(1,:)+x1,co_R(2,:)+y1,co_R 2,:)+y1,co_R(3,:)+z1, (3,:)+z1, 'r' 'r',xc,yc,zc) ,xc,yc,zc) hold on vector3d(Po,Ps,'r' vector3d(Po,Ps,'r',1) ,1) hold on vector3d(Po,Pu,'b' vector3d(Po,Pu,'b',1) ,1) hold on plot3(0,0,0,'mo' plot3(0,0,0,'mo') ) hold on plot3(0,0,z1,'mo' plot3(0,0,z1,'mo') )
% % % % % % % %
Activamos que Graficamos el Activamos que Graficamos el Activamos que Graficamos el Activamos que Graficamos el
% 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 el grafico anterior se mantenga vector posicion que esta siguiendo la Trayectoria (Color Rojo) el grafico anterior se mantenga vector posicion fijo de referencia (Color Azul) el grafico anterior se mantenga centro de coordenadas del Punto Po (Color Magenta) el grafico anterior se mantenga 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' vector3d(Pc,Pz,'g',1) ,1) % Graficamos el desplazamiento del vector del radio de la circunferencia (Color Verde) xlabel('EJE xlabel('EJE X', X' ,'Color' 'Color', ,'r' 'r') ) % Dar nombre al eje X ylabel('EJE ylabel('EJE Y', Y' ,'Color' 'Color', ,'g' 'g') ) % Dar nombre al eje Y zlabel('EJE zlabel('EJE Z', Z' ,'Color' 'Color', ,'b' 'b') ) % Dar nombre al eje Z title(['Rotacion title(['Rotacion 2D en el Eje Z en la Trayectoria 1' ,' ','Angulo giro positivo = ' num2str(th)]); 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 if tray1 == 2 t = 0:360; r = 3; xc = r*cosd(5*t); yc = r*sind(t); zc = ones(1, length(xc))*5; for th for th = 0:res1:angulo1 0:res1:angulo1 y1 = r*sind(th); x1 = r*cosd(5*th); z1 = 5; Pc = [0;0;z1]; Po = [0;0;0]; Pu = [r;0;z1]; Ps = [x1;y1;z1]; th_rad = (th*pi)/180;
% % % % % % % % % %
Se elige trayectoria 2 (Teniendo en cuenta el angulo positivo) Se dibuja primero la trayectoria que seguira la funcion Aqui la variable r sera parte de la ecuacion de la trayectoria a seguir Primera parte ecuacion de trayectoria que se grafica. El comando cosd (angulo en sexagesimal sexagesimales) es) Segunda parte ecuacion de trayectoria que se grafica. El comando sind (angulo en sexagesimal sexagesimales) es) Tercera parte ecuacion de trayectoria que se grafica La variable res1 es la velocidad de animacion y para rotar en el mismo sentido agujas del reloj debe ser positivo Primera parte de la ecuacion de la trayectoria que se seguira hasta donde llegue th Segunda parte de la ecuacion de la trayectoria que se seguira hasta donde llegue th Esta es la altura en donde se dibujara la trayectoria
% % % % %
Punto inicial Pc del radio de la circunferencia de la Trayectoria Punto inicial Po del vector de posicion (Centro de coordenadas) Punto final Pu del vector posicion fijo de referencia Punto final Ps del vector posicion que esta siguiendo la Trayectoria 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( plot3(co_R(1,:)+x1,co_R(2,:)+y1,co_R 2,:)+y1,co_R(3,:)+z1, (3,:)+z1, 'r' 'r',xc,yc,zc) ,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' vector3d(Po,Ps,'r',1) ,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' vector3d(Po,Pu,'b',1) ,1) % Graficamos el vector posicion fijo de referencia (Color Azul) hold on % Activamos que el grafico anterior se mantenga plot3(0,0,0,'mo' 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' 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' vector3d(Pc,Ps,'g',1) ,1) % Graficamos el desplazamiento del vector del radio de la circunferencia (Color Verde) xlabel('EJE xlabel('EJE X', X' ,'Color' 'Color', ,'r' 'r') ) % Dar nombre al eje X ylabel('EJE ylabel('EJE Y', Y' ,'Color' 'Color', ,'g' 'g') ) % Dar nombre al eje Y zlabel('EJE zlabel('EJE Z', Z' ,'Color' 'Color', ,'b' 'b') ) % Dar nombre al eje Z title(['Rotacion title(['Rotacion 2D en el Eje Z en la Trayectoria 2' ,' ','Angulo giro positivo = ' num2str(th)]); 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 if tray1 == 3 t = 0:360; r = 3; xc = 2*r*cosd(t); yc = r*sind(5*t); zc = ones(1, length(xc))*5; for th for th = 0:res1:angulo1 0:res1:angulo1 y1 = r*sind(5*th); x1 = 2*r*cosd(th); z1 = 5;
% % % % % % % % % %
Se elige trayectoria 3 (Teniendo en cuenta el angulo positivo) Se dibuja primero la trayectoria que seguira la funcion Aqui la variable r sera parte de la ecuacion de la trayectoria a seguir Primera parte ecuacion de trayectoria que se grafica. El comando cosd (angulo en sexagesimal sexagesimales) es) Segunda parte ecuacion de trayectoria que se grafica. El comando sind (angulo en sexagesimal sexagesimales) es) Tercera parte ecuacion de trayectoria que se grafica La variable res1 es la velocidad de animacion y para rotar en el mismo sentido agujas del reloj debe ser positivo Primera parte de la ecuacion de la trayectoria que se seguira hasta donde llegue th Segunda parte de la ecuacion de la trayectoria que se seguira hasta donde llegue th Esta es la altura en donde se dibujara la trayectoria
Pc = [0;0;z1]; Po = [0;0;0]; Pu = [2*r;0;z1]; Ps = [x1;y1;z1]; th_rad = (th*pi)/180;
% % % % %
Punto inicial Pc del radio de la circunferencia de la Trayectoria Punto inicial Po del vector de posicion (Centro de coordenadas) Punto final Pu del vector posicion fijo de referencia Punto final Ps del vector posicion que esta siguiendo la Trayectoria 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( plot3(co_R(1,:)+x1,co_R(2,:)+y1,co_R 2,:)+y1,co_R(3,:)+z1, (3,:)+z1, 'r' 'r',xc,yc,zc) ,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' vector3d(Po,Ps,'r',1) ,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' vector3d(Po,Pu,'b',1) ,1) % Graficamos el vector posicion fijo de referencia (Color Azul) hold on % Activamos que el grafico anterior se mantenga plot3(0,0,0,'mo' 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' 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' vector3d(Pc,Ps,'g',1) ,1) % Graficamos el desplazamiento del vector del radio de la circunferencia (Color Verde) xlabel('EJE xlabel('EJE X', X' ,'Color' 'Color', ,'r' 'r') ) % Dar nombre al eje X ylabel('EJE ylabel('EJE Y', Y' ,'Color' 'Color', ,'g' 'g') ) % Dar nombre al eje Y zlabel('EJE zlabel('EJE Z', Z' ,'Color' 'Color', ,'b' 'b') ) % Dar nombre al eje Z title(['Rotacion title(['Rotacion 2D en el Eje Z en la Trayectoria 3' ,' ','Angulo giro positivo = ' num2str(th)]); 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 if angulo1 < 0 if tray1 if tray1 == 1 t = 0:360; r = 3; xc = r*cosd(t); yc = r*sind(t); zc = ones(1, length(xc))*5; for th for th = 0:-res1:angulo1 0:-res1:angulo1 y1 = r*sind(th); x1 = r*cosd(th); z1 = 5;
% % % % % % % % % % %
Se elige angulo negativo Se elige trayectoria 1 (Teniendo en cuenta el angulo negativo) Se dibuja primero la trayectoria que seguira la funcion Este sera el radio de la Trayectoria de la circunferencia circunferencia Primera parte ecuacion de trayectoria que se grafica. El comando cosd (angulo en sexagesimal sexagesimales) es) Segunda parte ecuacion de trayectoria que se grafica. El comando sind (angulo en sexagesimal sexagesimales) es) Tercera parte ecuacion de trayectoria que se grafica La variable res1 es velocidad animacion y para rotar en el sentido opuesto agujas del reloj se multiplica por '-1' La trayectoria que se seguira sera de una circunferencia hasta donde llegue th La trayectoria que se seguira sera de una circunferencia hasta donde llegue th Esta es la altura en donde se dibujara la trayectoria de la circunferencia
Pc = [0;0;z1]; Po = [0;0;0]; Pu = [r;0;z1]; Ps = [x1;y1;z1]; th_rad = (th*pi)/180; Pz = (rotz(th_rad))*Pu;
% % % % % %
Punto inicial Pc del radio de la circunferencia de la Trayectoria Punto inicial Po del vector de posicion (Centro de coordenadas) Punto final Pu del vector posicion fijo de referencia Punto final Ps del vector posicion que esta siguiendo la Trayectoria Conversion del angulo th en sexagesimal a th_rad en radianes para la funcion rotz y rotx Ecuacion con la funcion rotz considerando valores de su angulo en radianes semejante a la matriz Rz
%co_R = (rotz(th_ra (rotz(th_rad))*co; d))*co; % Ecuacion con la funcion rotx consideran considerando do 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( plot3(co_R(1,:)+x1,co_R(2,:)+y1,co_R 2,:)+y1,co_R(3,:)+z1, (3,:)+z1, 'r' 'r',xc,yc,zc) ,xc,yc,zc) hold on vector3d(Po,Ps,'r' vector3d(Po,Ps,'r',1) ,1) hold on vector3d(Po,Pu,'b' vector3d(Po,Pu,'b',1) ,1) hold on plot3(0,0,0,'mo' plot3(0,0,0,'mo') )
% % % % % %
Activamos que Graficamos el Activamos que Graficamos el Activamos que Graficamos el
% 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 el grafico anterior se mantenga vector posicion que esta siguiendo la Trayectoria (Color Rojo) el grafico anterior se mantenga vector posicion fijo de referencia (Color Azul) el grafico anterior se mantenga centro de coordenadas del Punto Po (Color Magenta)
hold on % Activamos que el grafico anterior se mantenga plot3(0,0,z1,'mo' 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' vector3d(Pc,Pz,'g',1) ,1) % Graficamos el desplazamiento del vector del radio de la circunferencia (Color Verde) xlabel('EJE xlabel('EJE X', X' ,'Color' 'Color', ,'r' 'r') ) % Dar nombre al eje X ylabel('EJE ylabel('EJE Y', Y' ,'Color' 'Color', ,'g' 'g') ) % Dar nombre al eje Y zlabel('EJE zlabel('EJE Z', Z' ,'Color' 'Color', ,'b' 'b') ) % Dar nombre al eje Z title(['Rotacion title(['Rotacion 2D en el Eje Z en la Trayectoria 1' ,' ','Angulo giro negativo = ' num2str(th)]); 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 if tray1 == 2 t = 0:360; r = 3; xc = r*cosd(5*t); yc = r*sind(t); zc = ones(1, length(xc))*5; for th for th = 0:-res1:angulo1 0:-res1:angulo1 y1 = r*sind(th); x1 = r*cosd(5*th); z1 = 5; Pc = [0;0;z1]; Po = [0;0;0]; Pu = [r;0;z1]; Ps = [x1;y1;z1]; th_rad = (th*pi)/180;
% % % % % % % % % %
Se elige trayectoria 2 (Teniendo en cuenta el angulo negativo) Se dibuja primero la trayectoria que seguira la funcion Aqui la variable r sera parte de la ecuacion de la trayectoria a seguir Primera parte ecuacion de trayectoria que se grafica. El comando cosd (angulo en sexagesimal sexagesimales) es) Segunda parte ecuacion de trayectoria que se grafica. El comando sind (angulo en sexagesimal sexagesimales) es) Tercera parte ecuacion de trayectoria que se grafica La variable res1 es velocidad animacion y para rotar en el sentido opuesto agujas del reloj se multiplica por '-1' Primera parte de la ecuacion de la trayectoria que se seguira hasta donde llegue th Segunda parte de la ecuacion de la trayectoria que se seguira hasta donde llegue th Esta es la altura en donde se dibujara la trayectoria
% % % % %
Punto inicial Pc del radio de la circunferencia de la Trayectoria Punto inicial Po del vector de posicion (Centro de coordenadas) Punto final Pu del vector posicion fijo de referencia Punto final Ps del vector posicion que esta siguiendo la Trayectoria 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( plot3(co_R(1,:)+x1,co_R(2,:)+y1,co_R 2,:)+y1,co_R(3,:)+z1, (3,:)+z1, 'r' 'r',xc,yc,zc) ,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' vector3d(Po,Ps,'r',1) ,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' vector3d(Po,Pu,'b',1) ,1) % Graficamos el vector posicion fijo de referencia (Color Azul) hold on % Activamos que el grafico anterior se mantenga plot3(0,0,0,'mo' 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' 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' vector3d(Pc,Ps,'g',1) ,1) % Graficamos el desplazamiento del vector del radio de la circunferencia (Color Verde) xlabel('EJE xlabel('EJE X', X' ,'Color' 'Color', ,'r' 'r') ) % Dar nombre al eje X ylabel('EJE ylabel('EJE Y', Y' ,'Color' 'Color', ,'g' 'g') ) % Dar nombre al eje Y zlabel('EJE zlabel('EJE Z', Z' ,'Color' 'Color', ,'b' 'b') ) % Dar nombre al eje Z title(['Rotacion title(['Rotacion 2D en el Eje Z en la Trayectoria 2' ,' ','Angulo giro negativo = ' num2str(th)]); 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 if tray1 == 3 t = 0:360; r = 3; xc = 2*r*cosd(t); yc = r*sind(5*t); zc = ones(1, length(xc))*5; for th for th = 0:-res1:angulo1 0:-res1:angulo1 y1 = r*sind(5*th);
% % % % % % % %
Se elige trayectoria 3 (Teniendo en cuenta el angulo negativo) Se dibuja primero la trayectoria que seguira la funcion Aqui la variable r sera parte de la ecuacion de la trayectoria a seguir Primera parte ecuacion de trayectoria que se grafica. El comando cosd (angulo en sexagesimal sexagesimales) es) Segunda parte ecuacion de trayectoria que se grafica. El comando sind (angulo en sexagesimal sexagesimales) es) Tercera parte ecuacion de trayectoria que se grafica La variable res1 es velocidad animacion y para rotar en el sentido opuesto agujas del reloj se multiplica por '-1' Primera parte de la ecuacion de la trayectoria que se seguira hasta donde llegue th
x1 = 2*r*cosd(th) ; z1 = 5;
% Segunda parte de la ecuacion de la trayectoria que se seguira hasta donde llegue th % Esta es la altura en donde se dibujara la trayectoria
Pc = [0;0;z1]; Po = [0;0;0]; Pu = [2*r;0;z1]; Ps = [x1;y1;z1]; th_rad = (th*pi)/180;
% % % % %
Punto inicial Pc del radio de la circunferencia de la Trayectoria Punto inicial Po del vector de posicion (Centro de coordenadas) Punto final Pu del vector posicion fijo de referencia Punto final Ps del vector posicion que esta siguiendo la Trayectoria 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( plot3(co_R(1,:)+x1,co_R(2,:)+y1,co_R 2,:)+y1,co_R(3,:)+z1, (3,:)+z1, 'r' 'r',xc,yc,zc) ,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' vector3d(Po,Ps,'r',1) ,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' vector3d(Po,Pu,'b',1) ,1) % Graficamos el vector posicion fijo de referencia (Color Azul) hold on % Activamos que el grafico anterior se mantenga plot3(0,0,0,'mo' 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' 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' vector3d(Pc,Ps,'g',1) ,1) % Graficamos el desplazamiento del vector del radio de la circunferencia (Color Verde) xlabel('EJE xlabel('EJE X', X' ,'Color' 'Color', ,'r' 'r') ) % Dar nombre al eje X ylabel('EJE ylabel('EJE Y', Y' ,'Color' 'Color', ,'g' 'g') ) % Dar nombre al eje Y zlabel('EJE zlabel('EJE Z', Z' ,'Color' 'Color', ,'b' 'b') ) % Dar nombre al eje Z title(['Rotacion title(['Rotacion 2D en el Eje Z en la Trayectoria 3' ,' ','Angulo giro negativo = ' num2str(th)]); 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 if variables == 2 % Rotar con respecto a Z, en 3D if angulo1 if angulo1 >= 0 % Se elige angulo positivo if tray1 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 circunferencia xc = r*cosd(t); % Primera parte ecuacion de trayectoria que se grafica. El comando cosd (angulo en sexagesimal sexagesimales) es) yc = r*sind(t); % Segunda parte ecuacion de trayectoria que se grafica. El comando sind (angulo en sexagesimal sexagesimales) es) zc = ones(1, length(xc))*5; % Tercera parte ecuacion de trayectoria que se grafica for th for th = 0:res1:angulo1 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 for c = 1:25 for f 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; 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 xlabel('EJE X', X' ,'Color' 'Color', ,'r' 'r') ) % Dar nombre al eje X
ylabel('EJE ylabel( 'EJE Y', Y' ,'Color' 'Color', ,'g' 'g') ) % Dar nombre al eje Y zlabel('EJE zlabel('EJE Z', Z' ,'Color' 'Color', ,'b' 'b') ) % Dar nombre al eje Z title(['Rotacion title(['Rotacion 3D en el Eje Z en la Trayectoria 1' ,' ','Angulo giro positivo = ' num2str(th)]); 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 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 sexagesimal sexagesimales) es) yc = r*sind(t); % Segunda parte ecuacion de trayectoria que se grafica. El comando sind (angulo en sexagesimal sexagesimales) es) zc = ones(1, length(xc))*5; % Tercera parte ecuacion de trayectoria que se grafica for th for th = 0:res1:angulo1 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 for c = 1:25 for f 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; 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 xlabel('EJE X', X' ,'Color' 'Color', ,'r' 'r') ) % Dar nombre al eje X ylabel('EJE ylabel('EJE Y', Y' ,'Color' 'Color', ,'g' 'g') ) % Dar nombre al eje Y zlabel('EJE zlabel('EJE Z', Z' ,'Color' 'Color', ,'b' 'b') ) % Dar nombre al eje Z title(['Rotacion title(['Rotacion 3D en el Eje Z en la Trayectoria 2' ,' ','Angulo giro positivo = ' num2str(th)]); 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 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 sexagesimal sexagesimales) es) yc = r*sind(5*t); % Segunda parte ecuacion de trayectoria que se grafica. El comando sind (angulo en sexagesimal sexagesimales) es) zc = ones(1, length(xc))*5; % Tercera parte ecuacion de trayectoria que se grafica for th for th = 0:res1:angulo1 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 for c = 1:25 for f 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; 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 xlabel('EJE X', X' ,'Color' 'Color', ,'r' 'r') ) % Dar nombre al eje X ylabel('EJE ylabel('EJE Y', Y' ,'Color' 'Color', ,'g' 'g') ) % Dar nombre al eje Y zlabel('EJE zlabel('EJE Z', Z' ,'Color' 'Color', ,'b' 'b') ) % Dar nombre al eje Z title(['Rotacion title(['Rotacion 3D en el Eje Z en la Trayectoria 3' ,' ','Angulo giro positivo = ' num2str(th)]); num2str(th)]); % Declaramos un titulo con los resultados de los angulos
grid on axis([-20 20 -20 20 -20 20]); pause(0.1); end
% Activamos las rejillas % Establecemos un sistema de ejes fijo X, Y y Z como minimos y maximos
end end if angulo1 if angulo1 < 0 % Se elige angulo negativo if tray1 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 circunferencia xc = r*cosd(t); % Primera parte ecuacion de trayectoria que se grafica. El comando cosd (angulo en sexagesimal sexagesimales) es) yc = r*sind(t); % Segunda parte ecuacion de trayectoria que se grafica. El comando sind (angulo en sexagesimal sexagesimales) es) zc = ones(1, length(xc))*5; % Tercera parte ecuacion de trayectoria que se grafica for th for th = 0:-res1:angulo1 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 for c = 1:25 for f 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; 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 xlabel('EJE X', X' ,'Color' 'Color', ,'r' 'r') ) % Dar nombre al eje X ylabel('EJE ylabel('EJE Y', Y' ,'Color' 'Color', ,'g' 'g') ) % Dar nombre al eje Y zlabel('EJE zlabel('EJE Z', Z' ,'Color' 'Color', ,'b' 'b') ) % Dar nombre al eje Z title(['Rotacion title(['Rotacion 3D en el Eje Z en la Trayectoria 1' ,' ','Angulo giro negativo = ' num2str(th)]); 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 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 sexagesimal sexagesimales) es) yc = r*sind(t); % Segunda parte ecuacion de trayectoria que se grafica. El comando sind (angulo en sexagesimal sexagesimales) es) zc = ones(1, length(xc))*5; % Tercera parte ecuacion de trayectoria que se grafica for th for th = 0:-res1:angulo1 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 for c = 1:25 for f 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; 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 xlabel('EJE X', X' ,'Color' 'Color', ,'r' 'r') ) % Dar nombre al eje X ylabel('EJE ylabel('EJE Y', Y' ,'Color' 'Color', ,'g' 'g') ) % Dar nombre al eje Y zlabel('EJE zlabel('EJE Z', Z' ,'Color' 'Color', ,'b' 'b') ) % Dar nombre al eje Z title(['Rotacion title(['Rotacion 3D en el Eje Z en la Trayectoria 2' ,' ','Angulo giro negativo = ' num2str(th)]); num2str(th)]); % Declaramos un titulo con los resultados de los angulos grid on % Activamos las rejillas
axis([-20 20 -20 20 -20 20]); pause(0.1); end
% Establecemos un sistema de ejes fijo X, Y y Z como minimos y maximos
end if tray1 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 sexagesimal sexagesimales) es) yc = r*sind(5*t); % Segunda parte ecuacion de trayectoria que se grafica. El comando sind (angulo en sexagesimal sexagesimales) es) zc = ones(1, length(xc))*5; % Tercera parte ecuacion de trayectoria que se grafica for th for th = 0:-res1:angulo1 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 for c = 1:25 for f 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; 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 xlabel('EJE X', X' ,'Color' 'Color', ,'r' 'r') ) % Dar nombre al eje X ylabel('EJE ylabel('EJE Y', Y' ,'Color' 'Color', ,'g' 'g') ) % Dar nombre al eje Y zlabel('EJE zlabel('EJE Z', Z' ,'Color' 'Color', ,'b' 'b') ) % Dar nombre al eje Z title(['Rotacion title(['Rotacion 3D en el Eje Z en la Trayectoria 3' ,' ','Angulo giro negativo = ' num2str(th)]); 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 case 4 xk = get(handles.edit6, get(handles.edit6, 'String' ); xk1 = str2num(xk); str2num(xk); yk = get(handles.edit7, get(handles.edit7, 'String' ); yk1 = str2num(yk); str2num(yk); zk = get(handles.edit8, get(handles.edit8, 'String' ); zk1 = str2num(zk); str2num(zk); m = sqrt((xk1^2)+(yk1^2)+(zk sqrt((xk1^2)+(yk1^2)+(zk1^2)); 1^2)); eje_a = [xk1/m; yk1/m; zk1/m]; if variables if variables == 1 co = [salidaxx; salidayy; salidazz]; if angulo1 if angulo1 >= 0 if tray1 if tray1 == 1 t = 0:360; r = 3; xc = r*cosd(t); yc = r*sind(t); zc = ones(1, length(xc))*5; for th for th = 0:res1:angulo1 0:res1:angulo1 y1 = r*sind(th); x1 = r*cosd(th); z1 = 5; Pc = [0;0;z1]; Po = [0;0;0]; Pu = [r;0;z1];
% Todo el case 4 es rotar con respecto a un eje arbitrario % Componente 'X' del vector arbitrario % Componente 'Y' del vector arbitrario % Componente 'Z' del vector arbitrario % Obtención de la magnitud del vector arbitrario % Vector unitario con dirección del vector arbitrario % Rotar con respecto al Eje arbitrario, en 2D % % % % % % % % % % %
Se elige angulo positivo Se elige trayectoria 1 (Teniendo en cuenta el angulo positivo) Se dibuja primero la trayectoria que seguira la funcion Este sera el radio de la Trayectoria de la circunferencia circunferencia Primera parte ecuacion de trayectoria que se grafica. El comando cosd (angulo en sexagesimal sexagesimales) es) Segunda parte ecuacion de trayectoria que se grafica. El comando sind (angulo en sexagesimal sexagesimales) es) Tercera parte ecuacion de trayectoria que se grafica La variable res1 es la velocidad de animacion y para rotar en el mismo sentido agujas del reloj debe ser positivo Primera parte de la ecuacion de la trayectoria que se seguira hasta donde llegue th Segunda parte de la ecuacion de la trayectoria que se seguira hasta donde llegue th Esta es la altura en donde se dibujara la trayectoria
% Punto inicial Pc del radio de la circunferencia de la Trayectoria % Punto inicial Po del vector de posicion (Centro de coordenadas) % Punto final Pu del vector posicion fijo de referencia
Ps = [x1;y1;z1]; th_rad = (th*pi)/180; Pz = (rotz(th_rad))*Pu;
% Punto final Ps del vector posicion que esta siguiendo la Trayectoria % Conversion del angulo th en sexagesimal a th_rad en radianes para la funcion rotz y rotx % 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(t [(eje_a(1)^2)*vo+cosd(th), h), eje_a(1)*eje_a(2)*vo-e eje_a(1)*eje_a(2)*vo-eje_a(3)*sind je_a(3)*sind(th), (th), eje_a(1)*eje_a(3)*vo+eje eje_a(1)*eje_a(3)*vo+eje_a(2)*sind(t _a(2)*sind(th); h); eje_a(1)*eje_a(2)*vo+eje eje_a(1)*eje_a(2)*vo+eje_a(3)*sind(t _a(3)*sind(th), h), (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( plot3(co_R(1,:)+x1,co_R(2,:)+y1,co_R 2,:)+y1,co_R(3,:)+z1, (3,:)+z1, 'r' 'r',xc,yc,zc) ,xc,yc,zc) hold on % vector3d(Po,Ps,'r' vector3d(Po,Ps,'r',1) ,1) % hold on % vector3d(Po,Pu,'b' vector3d(Po,Pu,'b',1) ,1) % hold on % plot3(0,0,0,'mo' plot3(0,0,0,'mo') ) % hold on % plot3(0,0,z1,'mo' plot3(0,0,z1,'mo') ) % hold on % vector3d(Pc,Pz,'g' vector3d(Pc,Pz,'g',1) ,1) % xlabel('EJE xlabel('EJE X', X' ,'Color' 'Color', ,'r' 'r') ) % ylabel('EJE ylabel('EJE Y', Y' ,'Color' 'Color', ,'g' 'g') ) % zlabel('EJE zlabel('EJE Z', Z' ,'Color' 'Color', ,'b' 'b') ) % title(['Rotacion title(['Rotacion 2D en un Eje Arbitrario en grid on % axis([-8 8 -8 8 -8 8]) % pause(0.01)
% 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 Activamos que el grafico anterior se mantenga Graficamos el vector posicion que esta siguiendo la Trayectoria (Color Rojo) Activamos que el grafico anterior se mantenga Graficamos el vector posicion fijo de referencia (Color Azul) Activamos que el grafico anterior se mantenga Graficamos el centro de coordenadas del Punto Po (Color Magenta) Activamos que el grafico anterior se mantenga Graficamos el centro de la Trayectoria del Punto Pc de la circunferencia (Color Magenta) Activamos que el grafico anterior se mantenga Graficamos el desplazamiento del vector del radio de la circunferencia (Color Verde) Dar nombre al eje X Dar nombre al eje Y Dar nombre al eje Z la Trayectoria 1' ,' ','Angulo giro positivo = ' num2str(th)]); num2str(th)]); % Declaramos un titulo con resultados de angulos Activamos las rejillas Establecemos un sistema de ejes fijo X, Y y Z como minimos y maximos
end end if tray1 if tray1 == 2 t = 0:360; r = 3; xc = r*cosd(5*t); yc = r*sind(t); zc = ones(1, length(xc))*5; for th for th = 0:res1:angulo1 0:res1:angulo1 y1 = r*sind(th); x1 = r*cosd(5*th); z1 = 5; Pc = [0;0;z1]; Po = [0;0;0]; Pu = [r;0;z1]; Ps = [x1;y1;z1]; th_rad = (th*pi)/180;
% % % % % % % % % %
Se elige trayectoria 2 (Teniendo en cuenta el angulo positivo) Se dibuja primero la trayectoria que seguira la funcion Aqui la variable r sera parte de la ecuacion de la trayectoria a seguir Primera parte ecuacion de trayectoria que se grafica. El comando cosd (angulo en sexagesimal sexagesimales) es) Segunda parte ecuacion de trayectoria que se grafica. El comando sind (angulo en sexagesimal sexagesimales) es) Tercera parte ecuacion de trayectoria que se grafica La variable res1 es la velocidad de animacion y para rotar en el mismo sentido agujas del reloj debe ser positivo Primera parte de la ecuacion de la trayectoria que se seguira hasta donde llegue th Segunda parte de la ecuacion de la trayectoria que se seguira hasta donde llegue th Esta es la altura en donde se dibujara la trayectoria
% % % % %
Punto inicial Pc del radio de la circunferencia de la Trayectoria Punto inicial Po del vector de posicion (Centro de coordenadas) Punto final Pu del vector posicion fijo de referencia Punto final Ps del vector posicion que esta siguiendo la Trayectoria 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(t [(eje_a(1)^2)*vo+cosd(th), h), eje_a(1)*eje_a(2)*vo-e eje_a(1)*eje_a(2)*vo-eje_a(3)*sind je_a(3)*sind(th), (th), eje_a(1)*eje_a(3)*vo+eje eje_a(1)*eje_a(3)*vo+eje_a(2)*sind(t _a(2)*sind(th); h); eje_a(1)*eje_a(2)*vo+eje eje_a(1)*eje_a(2)*vo+eje_a(3)*sind(t _a(3)*sind(th), h), (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( plot3(co_R(1,:)+x1,co_R(2,:)+y1,co_R 2,:)+y1,co_R(3,:)+z1, (3,:)+z1, 'r' 'r',xc,yc,zc) ,xc,yc,zc) hold on vector3d(Po,Ps,'r' vector3d(Po,Ps,'r',1) ,1) hold on vector3d(Po,Pu,'b' vector3d(Po,Pu,'b',1) ,1) hold on plot3(0,0,0,'mo' plot3(0,0,0,'mo') ) hold on plot3(0,0,z1,'mo' plot3(0,0,z1,'mo') ) hold on vector3d(Pc,Ps,'g' vector3d(Pc,Ps,'g',1) ,1)
% % % % % % % % % %
Activamos que Graficamos el Activamos que Graficamos el Activamos que Graficamos el Activamos que Graficamos el Activamos que Graficamos el
% 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 el grafico anterior se mantenga vector posicion que esta siguiendo la Trayectoria (Color Rojo) el grafico anterior se mantenga vector posicion fijo de referencia (Color Azul) el grafico anterior se mantenga centro de coordenadas del Punto Po (Color Magenta) el grafico anterior se mantenga centro de la Trayectoria del Punto Pc de la circunferencia (Color Magenta) el grafico anterior se mantenga desplazamiento del vector del radio de la circunferencia (Color Verde)
xlabel( xlabel('EJE 'EJE X', X' ,'Color' 'Color', ,'r' 'r') ) % Dar nombre al eje X ylabel('EJE ylabel('EJE Y', Y' ,'Color' 'Color', ,'g' 'g') ) % Dar nombre al eje Y zlabel('EJE zlabel('EJE Z', Z' ,'Color' 'Color', ,'b' 'b') ) % Dar nombre al eje Z title(['Rotacion title(['Rotacion 2D en un Eje Arbitrario en la Trayectoria 2' ,' ','Angulo giro positivo = ' num2str(th)]); 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 if tray1 == 3 t = 0:360; r = 3; xc = 2*r*cosd(t); yc = r*sind(5*t); zc = ones(1, length(xc))*5; for th for th = 0:res1:angulo1 0:res1:angulo1 y1 = r*sind(5*th); x1 = 2*r*cosd(th); z1 = 5; Pc = [0;0;z1]; Po = [0;0;0]; Pu = [2*r;0;z1]; Ps = [x1;y1;z1]; th_rad = (th*pi)/180;
% % % % % % % % % %
Se elige trayectoria 3 (Teniendo en cuenta el angulo positivo) Se dibuja primero la trayectoria que seguira la funcion Aqui la variable r sera parte de la ecuacion de la trayectoria a seguir Primera parte ecuacion de trayectoria que se grafica. El comando cosd (angulo en sexagesimal sexagesimales) es) Segunda parte ecuacion de trayectoria que se grafica. El comando sind (angulo en sexagesimal sexagesimales) es) Tercera parte ecuacion de trayectoria que se grafica La variable res1 es la velocidad de animacion y para rotar en el mismo sentido agujas del reloj debe ser positivo Primera parte de la ecuacion de la trayectoria que se seguira hasta donde llegue th Segunda parte de la ecuacion de la trayectoria que se seguira hasta donde llegue th Esta es la altura en donde se dibujara la trayectoria
% % % % %
Punto inicial Pc del radio de la circunferencia de la Trayectoria Punto inicial Po del vector de posicion (Centro de coordenadas) Punto final Pu del vector posicion fijo de referencia Punto final Ps del vector posicion que esta siguiendo la Trayectoria 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(t [(eje_a(1)^2)*vo+cosd(th), h), eje_a(1)*eje_a(2)*vo-e eje_a(1)*eje_a(2)*vo-eje_a(3)*sind je_a(3)*sind(th), (th), eje_a(1)*eje_a(3)*vo+eje eje_a(1)*eje_a(3)*vo+eje_a(2)*sind(t _a(2)*sind(th); h); eje_a(1)*eje_a(2)*vo+eje eje_a(1)*eje_a(2)*vo+eje_a(3)*sind(t _a(3)*sind(th), h), (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( plot3(co_R(1,:)+x1,co_R(2,:)+y1,co_R 2,:)+y1,co_R(3,:)+z1, (3,:)+z1, 'r' 'r',xc,yc,zc) ,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' vector3d(Po,Ps,'r',1) ,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' vector3d(Po,Pu,'b',1) ,1) % Graficamos el vector posicion fijo de referencia (Color Azul) hold on % Activamos que el grafico anterior se mantenga plot3(0,0,0,'mo' 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' 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' vector3d(Pc,Ps,'g',1) ,1) % Graficamos el desplazamiento del vector del radio de la circunferencia (Color Verde) xlabel('EJE xlabel('EJE X', X' ,'Color' 'Color', ,'r' 'r') ) % Dar nombre al eje X ylabel('EJE ylabel('EJE Y', Y' ,'Color' 'Color', ,'g' 'g') ) % Dar nombre al eje Y zlabel('EJE zlabel('EJE Z', Z' ,'Color' 'Color', ,'b' 'b') ) % Dar nombre al eje Z title(['Rotacion title(['Rotacion 2D en un Eje Arbitrario en la Trayectoria 3' ,' ','Angulo giro positivo = ' num2str(th)]); 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 if angulo1 < 0 if tray1 if tray1 == 1 t = 0:360; r = 3; xc = r*cosd(t); yc = r*sind(t); zc = ones(1, length(xc))*5; for th for th = 0:-res1:angulo1 0:-res1:angulo1 y1 = r*sind(th); x1 = r*cosd(th);
% % % % % % % % % %
Se elige angulo negativo Se elige trayectoria 1 (Teniendo en cuenta el angulo negativo) Se dibuja primero la trayectoria que seguira la funcion Este sera el radio de la Trayectoria de la circunferencia circunferencia Primera parte ecuacion de trayectoria que se grafica. El comando cosd (angulo en sexagesimal sexagesimales) es) Segunda parte ecuacion de trayectoria que se grafica. El comando sind (angulo en sexagesimal sexagesimales) es) Tercera parte ecuacion de trayectoria que se grafica La variable res1 es velocidad animacion y para rotar en el sentido opuesto agujas del reloj se multiplica por '-1' Primera parte de la ecuacion de la trayectoria que se seguira hasta donde llegue 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]; Po = [0;0;0]; Pu = [r;0;z1]; Ps = [x1;y1;z1]; th_rad = (th*pi)/180; Pz = (rotz(th_rad))*Pu;
% % % % % %
Punto inicial Pc del radio de la circunferencia de la Trayectoria Punto inicial Po del vector de posicion (Centro de coordenadas) Punto final Pu del vector posicion fijo de referencia Punto final Ps del vector posicion que esta siguiendo la Trayectoria Conversion del angulo th en sexagesimal a th_rad en radianes para la funcion rotz y rotx 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(t [(eje_a(1)^2)*vo+cosd(th), h), eje_a(1)*eje_a(2)*vo-e eje_a(1)*eje_a(2)*vo-eje_a(3)*sind je_a(3)*sind(th), (th), eje_a(1)*eje_a(3)*vo+eje eje_a(1)*eje_a(3)*vo+eje_a(2)*sind(t _a(2)*sind(th); h); eje_a(1)*eje_a(2)*vo+eje eje_a(1)*eje_a(2)*vo+eje_a(3)*sind(t _a(3)*sind(th), h), (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( plot3(co_R(1,:)+x1,co_R(2,:)+y1,co_R 2,:)+y1,co_R(3,:)+z1, (3,:)+z1, 'r' 'r',xc,yc,zc) ,xc,yc,zc) hold on % vector3d(Po,Ps,'r' vector3d(Po,Ps,'r',1) ,1) % hold on % vector3d(Po,Pu,'b' vector3d(Po,Pu,'b',1) ,1) % hold on % plot3(0,0,0,'mo' plot3(0,0,0,'mo') ) % hold on % plot3(0,0,z1,'mo' plot3(0,0,z1,'mo') ) % hold on % vector3d(Pc,Pz,'g' vector3d(Pc,Pz,'g',1) ,1) % xlabel('EJE xlabel('EJE X', X' ,'Color' 'Color', ,'r' 'r') ) % ylabel('EJE ylabel('EJE Y', Y' ,'Color' 'Color', ,'g' 'g') ) % zlabel('EJE zlabel('EJE Z', Z' ,'Color' 'Color', ,'b' 'b') ) % title(['Rotacion title(['Rotacion 2D en un Eje Arbitrario en grid on % axis([-8 8 -8 8 -8 8]) % pause(0.01)
% 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 Activamos que el grafico anterior se mantenga Graficamos el vector posicion que esta siguiendo la Trayectoria (Color Rojo) Activamos que el grafico anterior se mantenga Graficamos el vector posicion fijo de referencia (Color Azul) Activamos que el grafico anterior se mantenga Graficamos el centro de coordenadas del Punto Po (Color Magenta) Activamos que el grafico anterior se mantenga Graficamos el centro de la Trayectoria del Punto Pc de la circunferencia (Color Magenta) Activamos que el grafico anterior se mantenga Graficamos el desplazamiento del vector del radio de la circunferencia (Color Verde) Dar nombre al eje X Dar nombre al eje Y Dar nombre al eje Z la Trayectoria 1' ,' ','Angulo giro negativo = ' num2str(th)]); num2str(th)]); % Declaramos un titulo con resultados de angulos Activamos las rejillas Establecemos un sistema de ejes fijo X, Y y Z como minimos y maximos
end end if tray1 if tray1 == 2 t = 0:360; r = 3; xc = r*cosd(5*t); yc = r*sind(t); zc = ones(1, length(xc))*5; for th for th = 0:-res1:angulo1 0:-res1:angulo1 y1 = r*sind(th); x1 = r*cosd(5*th); z1 = 5; Pc = [0;0;z1]; Po = [0;0;0]; Pu = [r;0;z1]; Ps = [x1;y1;z1]; th_rad = (th*pi)/180;
% % % % % % % % % %
Se elige trayectoria 2 (Teniendo en cuenta el angulo negativo) Se dibuja primero la trayectoria que seguira la funcion Aqui la variable r sera parte de la ecuacion de la trayectoria a seguir Primera parte ecuacion de trayectoria que se grafica. El comando cosd (angulo en sexagesimal sexagesimales) es) Segunda parte ecuacion de trayectoria que se grafica. El comando sind (angulo en sexagesimal sexagesimales) es) Tercera parte ecuacion de trayectoria que se grafica La variable res1 es velocidad animacion y para rotar en el sentido opuesto agujas del reloj se multiplica por '-1' Primera parte de la ecuacion de la trayectoria que se seguira hasta donde llegue th Segunda parte de la ecuacion de la trayectoria que se seguira hasta donde llegue th Esta es la altura en donde se dibujara la trayectoria
% % % % %
Punto inicial Pc del radio de la circunferencia de la Trayectoria Punto inicial Po del vector de posicion (Centro de coordenadas) Punto final Pu del vector posicion fijo de referencia Punto final Ps del vector posicion que esta siguiendo la Trayectoria 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(t [(eje_a(1)^2)*vo+cosd(th), h), eje_a(1)*eje_a(2)*vo-e eje_a(1)*eje_a(2)*vo-eje_a(3)*sind je_a(3)*sind(th), (th), eje_a(1)*eje_a(3)*vo+eje eje_a(1)*eje_a(3)*vo+eje_a(2)*sind(t _a(2)*sind(th); h); eje_a(1)*eje_a(2)*vo+eje eje_a(1)*eje_a(2)*vo+eje_a(3)*sind(t _a(3)*sind(th), h), (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( plot3(co_R(1,:)+x1,co_R(2,:)+y1,co_R 2,:)+y1,co_R(3,:)+z1, (3,:)+z1, 'r' 'r',xc,yc,zc) ,xc,yc,zc) hold on vector3d(Po,Ps,'r' vector3d(Po,Ps,'r',1) ,1) hold on vector3d(Po,Pu,'b' vector3d(Po,Pu,'b',1) ,1) hold on
% % % % %
Activamos que Graficamos el Activamos que Graficamos el Activamos que
% 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 el grafico anterior se mantenga vector posicion que esta siguiendo la Trayectoria (Color Rojo) el grafico anterior se mantenga vector posicion fijo de referencia (Color Azul) el grafico anterior se mantenga
plot3(0,0,0,'mo' 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' 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' vector3d(Pc,Ps,'g',1) ,1) % Graficamos el desplazamiento del vector del radio de la circunferencia (Color Verde) xlabel('EJE xlabel('EJE X', X' ,'Color' 'Color', ,'r' 'r') ) % Dar nombre al eje X ylabel('EJE ylabel('EJE Y', Y' ,'Color' 'Color', ,'g' 'g') ) % Dar nombre al eje Y zlabel('EJE zlabel('EJE Z', Z' ,'Color' 'Color', ,'b' 'b') ) % Dar nombre al eje Z title(['Rotacion title(['Rotacion 2D en un Eje Arbitrario en la Trayectoria 2' ,' ','Angulo giro negativo = ' num2str(th)]); 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 if tray1 == 3 t = 0:360; r = 3; xc = 2*r*cosd(t); yc = r*sind(5*t); zc = ones(1, length(xc))*5; for th for th = 0:-res1:angulo1 0:-res1:angulo1 y1 = r*sind(5*th); x1 = 2*r*cosd(th); z1 = 5; Pc = [0;0;z1]; Po = [0;0;0]; Pu = [2*r;0;z1]; Ps = [x1;y1;z1]; th_rad = (th*pi)/180;
% % % % % % % % % %
Se elige trayectoria 3 (Teniendo en cuenta el angulo negativo) Se dibuja primero la trayectoria que seguira la funcion Aqui la variable r sera parte de la ecuacion de la trayectoria a seguir Primera parte ecuacion de trayectoria que se grafica. El comando cosd (angulo en sexagesimal sexagesimales) es) Segunda parte ecuacion de trayectoria que se grafica. El comando sind (angulo en sexagesimal sexagesimales) es) Tercera parte ecuacion de trayectoria que se grafica La variable res1 es velocidad animacion y para rotar en el sentido opuesto agujas del reloj se multiplica por '-1' Primera parte de la ecuacion de la trayectoria que se seguira hasta donde llegue th Segunda parte de la ecuacion de la trayectoria que se seguira hasta donde llegue th Esta es la altura en donde se dibujara la trayectoria
% % % % %
Punto inicial Pc del radio de la circunferencia de la Trayectoria Punto inicial Po del vector de posicion (Centro de coordenadas) Punto final Pu del vector posicion fijo de referencia Punto final Ps del vector posicion que esta siguiendo la Trayectoria 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(t [(eje_a(1)^2)*vo+cosd(th), h), eje_a(1)*eje_a(2)*vo-e eje_a(1)*eje_a(2)*vo-eje_a(3)*sind je_a(3)*sind(th), (th), eje_a(1)*eje_a(3)*vo+eje eje_a(1)*eje_a(3)*vo+eje_a(2)*sind(t _a(2)*sind(th); h); eje_a(1)*eje_a(2)*vo+eje eje_a(1)*eje_a(2)*vo+eje_a(3)*sind(t _a(3)*sind(th), h), (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( plot3(co_R(1,:)+x1,co_R(2,:)+y1,co_R 2,:)+y1,co_R(3,:)+z1, (3,:)+z1, 'r' 'r',xc,yc,zc) ,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' vector3d(Po,Ps,'r',1) ,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' vector3d(Po,Pu,'b',1) ,1) % Graficamos el vector posicion fijo de referencia (Color Azul) hold on % Activamos que el grafico anterior se mantenga plot3(0,0,0,'mo' 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' 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' vector3d(Pc,Ps,'g',1) ,1) % Graficamos el desplazamiento del vector del radio de la circunferencia (Color Verde) xlabel('EJE xlabel('EJE X', X' ,'Color' 'Color', ,'r' 'r') ) % Dar nombre al eje X ylabel('EJE ylabel('EJE Y', Y' ,'Color' 'Color', ,'g' 'g') ) % Dar nombre al eje Y zlabel('EJE zlabel('EJE Z', Z' ,'Color' 'Color', ,'b' 'b') ) % Dar nombre al eje Z title(['Rotacion title(['Rotacion 2D en un Eje Arbitrario en la Trayectoria 3' ,' ','Angulo giro negativo = ' num2str(th)]); 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 if variables == 2 % Rotar con respecto al Eje arbitrario, en 3D if angulo1 if angulo1 >= 0 % Se elige angulo positivo if tray1 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 circunferencia xc = r*cosd(t); % Primera parte ecuacion de trayectoria que se grafica. El comando cosd (angulo en sexagesimal sexagesimales) es) yc = r*sind(t); % Segunda parte ecuacion de trayectoria que se grafica. El comando sind (angulo en sexagesimal sexagesimales) es) zc = ones(1, length(xc))*5; % Tercera parte ecuacion de trayectoria que se grafica for th for th = 0:res1:angulo1 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 for c = 1:25 for f for f = 1:25 vo = 1-cosd(th); R_eje_a = [(eje_a(1)^2)*vo+cosd(t [(eje_a(1)^2)*vo+cosd(th), h), eje_a(1)*eje_a(2)*vo-eje_ eje_a(1)*eje_a(2)*vo-eje_a(3)*sind(th a(3)*sind(th), ), eje_a(1)*eje_a(3)*vo+eje eje_a(1)*eje_a(3)*vo+eje_a(2)*sind(t _a(2)*sind(th); h); 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; R_eje_a*vector_z; X(f,c) = Rot_eje_a1(1); Rot_eje_a1(1); Y(f,c) = Rot_eje_a1(2); Rot_eje_a1(2); Z(f,c) = Rot_eje_a1(3); Rot_eje_a1(3); end end surf(X+x1,Y+y1,Z+z1) % Se grafica la superficie 3D con el comando surf xlabel('EJE xlabel('EJE X', X' ,'Color' 'Color', ,'r' 'r') ) % Dar nombre al eje X ylabel('EJE ylabel('EJE Y', Y' ,'Color' 'Color', ,'g' 'g') ) % Dar nombre al eje Y zlabel('EJE zlabel('EJE Z', Z' ,'Color' 'Color', ,'b' 'b') ) % Dar nombre al eje Z title(['Rotacion title(['Rotacion 3D en un Eje Arbitrario en la Trayectoria 1' ,' ','Angulo giro positivo = ' num2str(th)]); 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 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 sexagesimal sexagesimales) es) yc = r*sind(t); % Segunda parte ecuacion de trayectoria que se grafica. El comando sind (angulo en sexagesimal sexagesimales) es) zc = ones(1, length(xc))*5; % Tercera parte ecuacion de trayectoria que se grafica for th for th = 0:res1:angulo1 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 for c = 1:25 for f for f = 1:25 vo = 1-cosd(th); R_eje_a = [(eje_a(1)^2)*vo+cosd(t [(eje_a(1)^2)*vo+cosd(th), h), eje_a(1)*eje_a(2)*vo-eje_ eje_a(1)*eje_a(2)*vo-eje_a(3)*sind(th a(3)*sind(th), ), eje_a(1)*eje_a(3)*vo+eje eje_a(1)*eje_a(3)*vo+eje_a(2)*sind(t _a(2)*sind(th); h); 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; R_eje_a*vector_z; X(f,c) = Rot_eje_a1(1); Rot_eje_a1(1); Y(f,c) = Rot_eje_a1(2); Rot_eje_a1(2); Z(f,c) = Rot_eje_a1(3); Rot_eje_a1(3); end end surf(X+x1,Y+y1,Z+z1) % Se grafica la superficie 3D con el comando surf xlabel('EJE xlabel('EJE X', X' ,'Color' 'Color', ,'r' 'r') ) % Dar nombre al eje X ylabel('EJE ylabel('EJE Y', Y' ,'Color' 'Color', ,'g' 'g') ) % Dar nombre al eje Y zlabel('EJE zlabel('EJE Z', Z' ,'Color' 'Color', ,'b' 'b') ) % Dar nombre al eje Z title(['Rotacion title(['Rotacion 3D en un Eje Arbitrario en la Trayectoria 2' ,' ','Angulo giro positivo = ' num2str(th)]); num2str(th)]); % Declaramos un titulo con resultados de angulos grid on % Activamos las rejillas
axis([-20 20 -20 20 -20 20]); pause(0.1); end
% Establecemos un sistema de ejes fijo X, Y y Z como minimos y maximos
end if tray1 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 sexagesimal sexagesimales) es) yc = r*sind(5*t); % Segunda parte ecuacion de trayectoria que se grafica. El comando sind (angulo en sexagesimal sexagesimales) es) zc = ones(1, length(xc))*5; % Tercera parte ecuacion de trayectoria que se grafica for th for th = 0:res1:angulo1 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 for c = 1:25 for f for f = 1:25 vo = 1-cosd(th); R_eje_a = [(eje_a(1)^2)*vo+cosd(t [(eje_a(1)^2)*vo+cosd(th), h), eje_a(1)*eje_a(2)*vo-eje_ eje_a(1)*eje_a(2)*vo-eje_a(3)*sind(th a(3)*sind(th), ), eje_a(1)*eje_a(3)*vo+eje eje_a(1)*eje_a(3)*vo+eje_a(2)*sind(t _a(2)*sind(th); h); 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; R_eje_a*vector_z; X(f,c) = Rot_eje_a1(1); Rot_eje_a1(1); Y(f,c) = Rot_eje_a1(2); Rot_eje_a1(2); Z(f,c) = Rot_eje_a1(3); Rot_eje_a1(3); end end surf(X+x1,Y+y1,Z+z1) % Se grafica la superficie 3D con el comando surf xlabel('EJE xlabel('EJE X', X' ,'Color' 'Color', ,'r' 'r') ) % Dar nombre al eje X ylabel('EJE ylabel('EJE Y', Y' ,'Color' 'Color', ,'g' 'g') ) % Dar nombre al eje Y zlabel('EJE zlabel('EJE Z', Z' ,'Color' 'Color', ,'b' 'b') ) % Dar nombre al eje Z title(['Rotacion title(['Rotacion 3D en un Eje Arbitrario en la Trayectoria 3' ,' ','Angulo giro positivo = ' num2str(th)]); 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 if angulo1 < 0 % Se elige angulo negativo if tray1 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 circunferencia xc = r*cosd(t); % Primera parte ecuacion de trayectoria que se grafica. El comando cosd (angulo en sexagesimal sexagesimales) es) yc = r*sind(t); % Segunda parte ecuacion de trayectoria que se grafica. El comando sind (angulo en sexagesimal sexagesimales) es) zc = ones(1, length(xc))*5; % Tercera parte ecuacion de trayectoria que se grafica for th for th = 0:-res1:angulo1 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 for c = 1:25 for f for f = 1:25 vo = 1-cosd(th); R_eje_a = [(eje_a(1)^2)*vo+cosd(t [(eje_a(1)^2)*vo+cosd(th), h), eje_a(1)*eje_a(2)*vo-eje_ eje_a(1)*eje_a(2)*vo-eje_a(3)*sind(th a(3)*sind(th), ), eje_a(1)*eje_a(3)*vo+eje eje_a(1)*eje_a(3)*vo+eje_a(2)*sind(t _a(2)*sind(th); h); 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; R_eje_a*vector_z; X(f,c) = Rot_eje_a1(1); Rot_eje_a1(1); Y(f,c) = Rot_eje_a1(2); Rot_eje_a1(2); Z(f,c) = Rot_eje_a1(3); Rot_eje_a1(3); end end surf(X+x1,Y+y1,Z+z1) % Se grafica la superficie 3D con el comando surf
xlabel('EJE xlabel( 'EJE X', X' ,'Color' 'Color', ,'r' 'r') ) % Dar nombre al eje X ylabel('EJE ylabel('EJE Y', Y' ,'Color' 'Color', ,'g' 'g') ) % Dar nombre al eje Y zlabel('EJE zlabel('EJE Z', Z' ,'Color' 'Color', ,'b' 'b') ) % Dar nombre al eje Z title(['Rotacion title(['Rotacion 3D en un Eje Arbitrario en la Trayectoria 1' ,' ','Angulo giro negativo = ' num2str(th)]); 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 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 sexagesimal sexagesimales) es) yc = r*sind(t); % Segunda parte ecuacion de trayectoria que se grafica. El comando sind (angulo en sexagesimal sexagesimales) es) zc = ones(1, length(xc))*5; % Tercera parte ecuacion de trayectoria que se grafica for th for th = 0:-res1:angulo1 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 for c = 1:25 for f for f = 1:25 vo = 1-cosd(th); R_eje_a = [(eje_a(1)^2)*vo+cosd(t [(eje_a(1)^2)*vo+cosd(th), h), eje_a(1)*eje_a(2)*vo-eje_ eje_a(1)*eje_a(2)*vo-eje_a(3)*sind(th a(3)*sind(th), ), eje_a(1)*eje_a(3)*vo+eje eje_a(1)*eje_a(3)*vo+eje_a(2)*sind(t _a(2)*sind(th); h); 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; R_eje_a*vector_z; X(f,c) = Rot_eje_a1(1); Rot_eje_a1(1); Y(f,c) = Rot_eje_a1(2); Rot_eje_a1(2); Z(f,c) = Rot_eje_a1(3); Rot_eje_a1(3); end end surf(X+x1,Y+y1,Z+z1) % Se grafica la superficie 3D con el comando surf xlabel('EJE xlabel('EJE X', X' ,'Color' 'Color', ,'r' 'r') ) % Dar nombre al eje X ylabel('EJE ylabel('EJE Y', Y' ,'Color' 'Color', ,'g' 'g') ) % Dar nombre al eje Y zlabel('EJE zlabel('EJE Z', Z' ,'Color' 'Color', ,'b' 'b') ) % Dar nombre al eje Z title(['Rotacion title(['Rotacion 3D en un Eje Arbitrario en la Trayectoria 2' ,' ','Angulo giro negativo = ' num2str(th)]); 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 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 sexagesimal sexagesimales) es) yc = r*sind(5*t); % Segunda parte ecuacion de trayectoria que se grafica. El comando sind (angulo en sexagesimal sexagesimales) es) zc = ones(1, length(xc))*5; % Tercera parte ecuacion de trayectoria que se grafica for th for th = 0:-res1:angulo1 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 for c = 1:25 for f for f = 1:25 vo = 1-cosd(th); R_eje_a = [(eje_a(1)^2)*vo+cosd(t [(eje_a(1)^2)*vo+cosd(th), h), eje_a(1)*eje_a(2)*vo-eje_ eje_a(1)*eje_a(2)*vo-eje_a(3)*sind(th a(3)*sind(th), ), eje_a(1)*eje_a(3)*vo+eje eje_a(1)*eje_a(3)*vo+eje_a(2)*sind(t _a(2)*sind(th); h); 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; R_eje_a*vector_z; X(f,c) = Rot_eje_a1(1); Rot_eje_a1(1); Y(f,c) = Rot_eje_a1(2); Rot_eje_a1(2); Z(f,c) = Rot_eje_a1(3); Rot_eje_a1(3);
end end surf(X+x1,Y+y1,Z+z1) % Se grafica la superficie 3D con el comando surf xlabel('EJE xlabel('EJE X', X' ,'Color' 'Color', ,'r' 'r') ) % Dar nombre al eje X ylabel('EJE ylabel('EJE Y', Y' ,'Color' 'Color', ,'g' 'g') ) % Dar nombre al eje Y zlabel('EJE zlabel('EJE Z', Z' ,'Color' 'Color', ,'b' 'b') ) % Dar nombre al eje Z title(['Rotacion title(['Rotacion 3D en un Eje Arbitrario en la Trayectoria 3' ,' ','Angulo giro negativo = ' num2str(th)]); 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) % hObject handle to edit4 (see GCBO) % eventdata reserved - to be defined defined in a future version version of MATLAB % handles handles empty - handles handles not created until after all CreateFcns called
% NOTA.- Buscar la aplicacion de edit4 (No aparece en el GUIDE)
% Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc if ispc && isequal(get(hObject, 'BackgroundColor' ), get(0,'defaultUi get(0, 'defaultUicontrolBackg controlBackgroundColor' roundColor' )) set(hObject,'BackgroundColor' set(hObject,'BackgroundColor', ,'white' 'white'); ); end
function edit5_Callback(hObject, edit5_Callback(hObject, eventdata, handles) % hObject handle to edit6 (see GCBO) % eventdata reserved - to be defined defined in a future version version of MATLAB % handles handles structure with handles and user data (see GUIDATA)
% NOTA.- Buscar la aplicacion de edit5 (No aparece en el GUIDE)
% Hints: get(hObject,'String') get(hObject,'String') returns contents of edit6 as text % str2double(get(hObject,'String')) str2double(get(hObject, 'String')) returns contents of edit6 as a double
function edit5_CreateFcn(hObject, eventdata, handles) % hObject handle to edit6 (see GCBO) % eventdata reserved - to be defined defined in a future version version of MATLAB % handles handles empty - handles handles not created until after all CreateFcns called
% NOTA.- Buscar la aplicacion de edit5 (No aparece en el GUIDE)
% Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc if ispc && isequal(get(hObject, 'BackgroundColor' ), get(0,'defaultUi get(0, 'defaultUicontrolBackg controlBackgroundColor' roundColor' )) set(hObject,'BackgroundColor' set(hObject,'BackgroundColor', ,'white' '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 slider1_Callback(hObject, , eventdata, handles) % hObject handle to slider1 (see GCBO) % eventdata reserved - to be defined defined in a future version version of MATLAB % handles handles structure with handles and user data (see GUIDATA) % Hints: get(hObjec get(hObject,'Value') t,'Value') returns position of slider % get(hObject,'Min') get(hObjec t,'Min') and get(hObject, get(hObject,'Max') 'Max') to determine range of slider global res1; 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, get(handles.slider1, 'Value' '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' 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(hObjec slider1_CreateFcn(hObject, t, eventdata, handles) % hObject handle to slider1 (see GCBO) % eventdata reserved - to be defined defined in a future version version of MATLAB % handles handles empty - handles handles not created until after all CreateFcns called % Hint: slider controls usually have a light gray background. if if isequal(get(hObject, 'BackgroundColor' ), get(0,'defaultUi get(0, 'defaultUicontrolBackg controlBackgroundColor' roundColor' )) set(hObject,'BackgroundColor' set(hObject,'BackgroundColor',[.9 ,[.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 text11_CreateFcn(hObject, , eventdata, handles) % hObject handle to text11 (see GCBO) % eventdata reserved - to be defined defined in a future version version of MATLAB % handles handles empty - handles 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(hObj popupmenu1_Callback(hObject, ect, eventdata, handles) % hObject handle to popupmenu1 (see GCBO) % eventdata reserved - to be defined defined in a future version version of MATLAB % handles handles structure with handles and user data (see GUIDATA) % Hints: contents = cellstr(get(hObject,'String')) returns popupmenu1 contents as cell array % contents{get(hObject,'V contents{g et(hObject,'Value')} alue')} returns selected item from popupmenu1 v_t = get(handles.popupmenu1, get(handles.popupmenu1, 'Value' 'Value'); ); % La variable v_t captura el valor seleccionado en el popmenu1 global tray1; global tray1; % Variable tray1 para representar el tipo de la Trayectoria (Uno, Dos o Tres) switch v_t switch v_t % Se elige la Trayectoria a seguir case 1 case 1 % Si se selecciono 1 tray1 = 1; % Entonces la variable tray1 sera la Trayectoria 1 case 2 case 2 % Si se selecciono 2 tray1 = 2; % Entonces la variable tray1 sera la Trayectoria 2 case 3 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(hOb popupmenu1_CreateFcn(hObject, ject, eventdata, handles) % hObject handle to popupmenu1 (see GCBO) % eventdata reserved - to be defined defined in a future version version of MATLAB % handles handles empty - handles handles not created until after all CreateFcns called % Hint: popupmenu controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc if ispc && isequal(get(hObject, 'BackgroundColor' ), get(0,'defaultUi get(0, 'defaultUicontrolBackg controlBackgroundColor' roundColor' )) set(hObject,'BackgroundColor' set(hObject,'BackgroundColor', ,'white' '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(hObj popupmenu2_Callback(hObject, ect, eventdata, handles) % hObject handle to popupmenu2 (see GCBO) % eventdata reserved - to be defined defined in a future version version of MATLAB % handles handles structure with handles and user data (see GUIDATA) % Hints: contents = cellstr(get(hObject,'String')) returns popupmenu2 contents as cell array % contents{get(hObject,'V contents{g et(hObject,'Value')} alue')} returns selected item from popupmenu2 v_r = get(handles.popupmenu2, get(handles.popupmenu2, 'Value' 'Value'); ); % La variable v_r captura el valor seleccionado en el popmenu2 global rotar; global rotar; global xk1; global xk1; global yk1; global yk1;
% Variable rotar para representar con respecto a que Eje se rotara (X - Y - Z) % Esta variable xk1 no tiene uso en esta parte del programa. Se reserva para posterior uso % Esta variable yk1 no tiene uso en esta parte del programa. Se reserva para posterior uso
global zk1; global zk1; global m global m global eje_a global eje_a
% Esta variable zk1 no tiene uso en esta parte del programa. Se reserva para posterior uso % Esta variable m no tiene uso en esta parte del programa. Se reserva para posterior uso % Esta variable eje_a no tiene uso en esta parte del programa. Se reserva para posterior uso
switch v_r switch v_r case 1 case 1 rotar = 1; case 2 case 2 rotar = 2; case 3 case 3 rotar = 3; case 4 case 4 rotar = 4; end
% % % % % % % % %
Se elige el Eje con respecto al Si se selecciono 1 Entonces la variable rotar sera Si se selecciono 2 Entonces la variable rotar sera Si se selecciono 3 Entonces la variable rotar sera Si se selecciono 4 Entonces la variable rotar sera
cual se rotara la rotacion respecto al Eje X la rotacion respecto al Eje Y la rotacion respecto al Eje Z la rotacion respecto a un Eje Arbitrario
% 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(hOb popupmenu2_CreateFcn(hObject, ject, eventdata, handles) % hObject handle to popupmenu2 (see GCBO) % eventdata reserved - to be defined defined in a future version version of MATLAB % handles handles empty - handles handles not created until after all CreateFcns called % Hint: popupmenu controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc if ispc && isequal(get(hObject, 'BackgroundColor' ), get(0,'defaultUi get(0, 'defaultUicontrolBackg controlBackgroundColor' roundColor' )) set(hObject,'BackgroundColor' set(hObject,'BackgroundColor', ,'white' '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, edit6_Callback(hObject, eventdata, handles) % hObject handle to edit6 (see GCBO) % eventdata reserved - to be defined defined in a future version version of MATLAB % handles handles structure with handles and user data (see GUIDATA) % Hints: get(hObject,'String') get(hObject,'String') returns contents of edit6 as text % str2double(get(hObject,'String')) 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 defined in a future version version of MATLAB % handles handles empty - handles handles not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc if ispc && isequal(get(hObject, 'BackgroundColor' ), get(0,'defaultUi get(0, 'defaultUicontrolBackg controlBackgroundColor' roundColor' )) set(hObject,'BackgroundColor' set(hObject,'BackgroundColor', ,'white' '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, edit7_Callback(hObject, eventdata, handles) % hObject handle to edit7 (see GCBO) % eventdata reserved - to be defined defined in a future version version of MATLAB % handles handles structure with handles and user data (see GUIDATA) % Hints: get(hObject,'String') get(hObject,'String') returns contents of edit7 as text % str2double(get(hObject,'String')) 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 % handles handles
reserved - to be defined defined in a future version version of MATLAB empty - handles handles not created until after all CreateFcns called
% Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc if ispc && isequal(get(hObject, 'BackgroundColor' ), get(0,'defaultUi get(0, 'defaultUicontrolBackg controlBackgroundColor' roundColor' )) set(hObject,'BackgroundColor' set(hObject,'BackgroundColor', ,'white' '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, edit8_Callback(hObject, eventdata, handles) % hObject handle to edit8 (see GCBO) % eventdata reserved - to be defined defined in a future version version of MATLAB % handles handles structure with handles and user data (see GUIDATA) % Hints: get(hObject,'String') get(hObject,'String') returns contents of edit8 as text % str2double(get(hObject,'String')) 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 defined in a future version version of MATLAB % handles handles empty - handles handles not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc if ispc && isequal(get(hObject, 'BackgroundColor' ), get(0,'defaultUi get(0, 'defaultUicontrolBackg controlBackgroundColor' roundColor' )) set(hObject,'BackgroundColor' set(hObject,'BackgroundColor', ,'white' 'white'); ); end