Anda di halaman 1dari 10

MATLAB

MANUAL DE PROGRAMACION
Funciones para graficar Vectores en 2D y 3D

Autor:
Ingeniero Electrnico: Monteza Zevallos Fidel Tomas
Octubre de 2016 (Primera Edicin)
V. J. M. J. / A. M. M. J.

ndice general

Introduccin
1. Lneas del algoritmo de la funcin: vector2d
2. Lneas del algoritmo de la funcin: vector3d

Introduccin
En fsica, un vector (tambin llamado vector Euclidiano o vector Geomtrico) es una magnitud fsica definida en un sistema de
referencia que se caracteriza por tener mdulo (o longitud) y una direccin (u orientacin).
En matemticas se define un vector como un elemento de un espacio vectorial. Esta nocin es ms abstracta y para muchos
espacios vectoriales no es posible representar sus vectores mediante el mdulo y la direccin. En particular los espacios de
dimensin infinita sin producto escalar no son representables de ese modo. Los vectores en un espacio Eucldeo se pueden
representar geomtricamente como segmentos de recta dirigidos (flechas) en el plano R2 o en el espacio R3.
Algunos ejemplos de magnitudes fsicas que son magnitudes vectoriales: la velocidad con que se desplaza un mvil, ya que no
queda definida tan solo por su mdulo que es lo que marca el velocmetro, en el caso de un automvil, sino que se requiere
indicar la direccin (hacia donde se dirige); la fuerza que acta sobre un objeto, ya que su efecto depende adems de su
magnitud o mdulo, de la direccin en la que acta; tambin, el desplazamiento de un objeto, pues es necesario definir el punto
inicial y final del movimiento

1. Lneas del algoritmo de la funcin: vector2d


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Programa que permite visualizar UNICAMENTE el grafico de vectores de posicion en 2D
% Ejemplo de un vector 2D:
v = [4 5];
% Coordenadas del punto final del vector v
%
color = 'r'
% Color rojo seleccionado
%
ancho = 10
% Grozor del vector
%
vector2d(v,color,ancho)
%
% Debe ingresar los valores de: (v color s) tal como se indica lineas arriba en el Command Window
% O puede tipear directamente en el Command Window:
vector2d([4 5],'r',10)
% vector2d(v,color,s) grafica el vector v usando el color especificado en el segundo argumento
% Si no hubiese segundo argumento el color por default sera el rojo
% El punto inicial estara en el origen. Un vector sera dibujado hacia el punto final
% Los ejes seran colocados en [-s s,-s s]. Si el tercer argumento no es especificado sera por default 5
%
% INGENIERO ELECTRONICO MONTEZA ZEVALLOS FIDEL TOMAS
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% v, color, s son parametros de entrada; handle es el parametro de salida donde se estalece un valor definido para cada vector
% v es el vector de par ordenado (x,y); color es el color a ser establecido; s es la longitud de los ejes del sistema 2D
function[handle]=vector2d(v,color,s);
if nargin==1
color = 'r';
end
if nargin < 3
s=5;
end
%
%
%
%
%

% nargin es el numero de los argumentos de entrada de la funcion drawvec1


% Si solo hubiese un argumento de entrada (El vector v) el color por defaul sera rojo
% Si nargin solo identificase dos argumentos de entrada (El vector y el color)
% La variable s de longitud para los ejes sera establecida por default en 5

Un handle es un objeto que indirectamente referencia su data.


Cuando un handle es construido, un objeto con valores de sus propiedades es creado
La construccion retorna un handle a este objeto. Cuando un objeto handle es copiado
Por ejemplo durante una asignacion o cuando es pasado a una funcion en MATLAB
el handle es copiado pero no sobreescribe los valores de la propieadad del objeto.

% v(1)= Tomamos el primer elemento del vector fila v (parametro de entrada)


% v(2)= Tomamos el segundo elemento del vector fila v (parametro de entrada)
handle = plot([0,v(1)],[0,v(2)],color) % handle recibe un valor especifico para cada vector a ser graficado
%plot([0,v(1)],[0,v(2)],color); % Se grafica el vector posicion de acuerdo al valor del par ordenado ingresado
grid on
axis([-s,s,-s,s])
% Se ajusta el sistema de ejes segun el valor del argumento ingresado
%axis('square')
% Se ajusta el sistema de ejes a un cuadrilatero exacto
hold on
[m,n]=size(v);
% Para la matriz v, size retorna el numero de filas (m) y columnas (n) en v.
if n==1
% nargin es el numero de los argumentos de entrada de la funcion drawvec1, si es igual a 1
v=v';
% Se cambia el vector v del tipo 1 fila y varias columnas al tipo 1 columna y varias filas
end
atip=tip(v,s);
% Se envia el vector ingresado como parametro v y el parametro s para los ejes a la funcion tip
fill(atip(1,:),atip(2,:),color) % Se rellena el poligono 2-D definido con el color especificado
%hold off

% Esta funcion interna llamada tip es para dibujar la cabeza de flecha del vector
% v, width son parametros de entrada; arrow es el parametro de salida que sera una matriz de 2 filas x 3 columnas
function arrow=tip(v,width);
[t,r]=cart2pol(-v(1),-v(2));
% Transformacion de coordenadas cartesianas a coordenadas polares con cart2pol
if r<width/4
r=r/3;
else
r=width/12;
end
slant=0.3;
% Declaramos a slant con el valor de 0.3 para el tamao de la cabeza del vector
one=v+r*[cos(t+slant), sin(t+slant)];
two=v+r*[cos(t-slant), sin(t-slant)];
arrow=[one',two',v'];
% arrow es una matriz de 2 filas x 3 columnas

Se tipea la funcion vector2d en el Command Window con sus respectivos datos

Grafico de un vector posicion 2D con los datos ingresados en la funcion vector2d

2. Lneas del algoritmo de la funcin: vector3d


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Programa que permite visualizar el grafico de vectores. Importante en esta funcion las lineas se encuentran comentadas
% Esta funcion puede graficar vectores 2D y vectores 3D con flechas dependiendo de las dimensiones de entrada
%
% Ejemplo de un vector 3D:
p0 = [1 2 3];
% Coordenadas del punto inicial p0
%
p1 = [4 5 6];
% Coordenadas del punto final p1
%
color = 'r'
% Color rojo seleccionado
%
ancho = 10
% Grozor del vector
%
vector3d(p0,p1,color,ancho)
%
% Ejemplo de un vector 2D:
p0 = [1 2];
% Coordenadas del punto inicial p0
%
p1 = [4 5];
% Coordenadas del punto final p1
%
color = 'r'
% Color rojo seleccionado
%
ancho = 10
% Grozor del vector
%
vector3d(p0,p1,color,ancho)
%
% Debe ingresar los valores de p0 p1 color tal como se indica lineas arriba en el Command Window
% Tipeando vector3d(p0,p1,color,ancho) en el Command Window se graficara la linea de un vector con una flecha
% desde el punto p0 al punto p1 en color rojo y con un grozor de 10
% Otra alternativa es que puede tipear directamente en el Command Window:
%
vector3d([1 2 3],[4 5 6],'r',10) % Visulizara un vector en 3D
%
vector3d([1 2],[4 5],'r',10)
% Visulizara un vector en 2D
% Puede seleccionar cualquier color tan solo cambiando el tercer elemento de la funcion
% Puede seleccionar cualquier grozor tan solo cambiando el cuarto elemento de la funcion
% Si no desea trabajar directamente con la funcion, puede ejecutar el archivo VECTOR2D1.
%
% INGENIERO ELECTRONICO MONTEZA ZEVALLOS FIDEL TOMAS
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% p0, p1, color, ancho son parametros de entrada. Se dibuja una flecha que representa un vector desde p0 a p1
function vector3d(p0,p1,color,ancho)
%Con estas lineas se podra lograr la grafica de vectores en un sistema 3D (x,y,z)
if max(size(p0))==3
% El maximo tamao de valores de p0 (x0,y0,z0) debe ser 3 (Representa el punto inicial del vector 3D)
if max(size(p1))==3
% El maximo tamao de valores de p1(x1,y1,z1) debe ser 3 (Representa el punto final del vector 3D)
x0 = p0(1);
% El valor que se ingrese en la primera posicion de p0 sera asignado a la variable x0
y0 = p0(2);
% El valor que se ingrese en la segunda posicion de p0 sera asignado a la variable y0
z0 = p0(3);
% El valor que se ingrese en la tercera posicion de p0 sera asignado a la variable z0
x1 = p1(1);
% El valor que se ingrese en la primera posicion de p1 sera asignado a la variable x1
y1 = p1(2);
% El valor que se ingrese en la segunda posicion de p1 sera asignado a la variable y1
z1 = p1(3);
% El valor que se ingrese en la tercera posicion de p1 sera asignado a la variable z1
plot3([x0;x1],[y0;y1],[z0;z1],color,'LineWidth',ancho); % Se grafica una linea entre el punto p0 y el punto p1
p = p1-p0;
alpha = 0.07;
beta = 0.2;

% Restamos los valores del punto final (p1) menos los valores del punto inicial (p0)
% Tamao de la cabeza de flecha relativo a la longitud del vector
% Ancho de la base de la cabeza de flecha relativo a su longitud

hu = [x1-alpha*(p(1)+beta*(p(2)+eps)); x1; x1-alpha*(p(1)-beta*(p(2)+eps))];


hv = [y1-alpha*(p(2)-beta*(p(1)+eps)); y1; y1-alpha*(p(2)+beta*(p(1)+eps))];
hw = [z1-alpha*p(3);z1;z1-alpha*p(3)];
hold on
% Mantenemos el grafico de de la linea que represnta al vector 3D
plot3(hu(:),hv(:),hw(:),color,'LineWidth',ancho)
% Se grafica la cabeza de flecha del vector

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%Estas lineas se activaran SOLO si se ejecuta la funcion desde el Command Window tal como se sugiere en los comentarios de cabecera%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
grid on
%
xlabel('EJE X','Color','r')
% Dar nombre al eje X
%
ylabel('EJE Y','Color','g')
% Dar nombre al eje Y
%
zlabel('EJE Z','Color','b')
% Dar nombre al eje Z
%
hold off
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
hold off
else
error('p0 y p1 deben tener las mismas dimensiones')
% ALERTA para solo aceptar que p0 y p1 sean de igual extension
end
%Con estas lineas se podra lograr la grafica de vectores en un sistema 2D (x,y)
elseif max(size(p0))==2
% El maximo tamao de valores de p0 (x0,y0) debe ser 2 (Representa el punto inicial del vector 2D)
if max(size(p1))==2
% El maximo tamao de valores de p1 (x0,y0) debe ser 2 (Representa el punto inicial del vector 2D)
x0 = p0(1);
% El valor que se ingrese en la primera posicion de p0 sera asignado a la variable x0
y0 = p0(2);
% El valor que se ingrese en la segunda posicion de p0 sera asignado a la variable y0
x1 = p1(1);
% El valor que se ingrese en la primera posicion de p1 sera asignado a la variable x1
y1 = p1(2);
% El valor que se ingrese en la segunda posicion de p1 sera asignado a la variable y1
plot([x0;x1],[y0;y1],color,'LineWidth',ancho);
% Se grafica una linea entre el punto p0 y el punto p1
p = p1-p0;
alpha = 0.1;
beta = 0.1;

% Restamos los valores del punto final (p1) menos los valores del punto inicial (p0)
% Tamao de la cabeza de flecha relativo a la longitud del vector
% Ancho de la base de la cabeza de flecha relativo a su longitud

hu = [x1-alpha*(p(1)+beta*(p(2)+eps)); x1; x1-alpha*(p(1)-beta*(p(2)+eps))];


hv = [y1-alpha*(p(2)-beta*(p(1)+eps)); y1; y1-alpha*(p(2)+beta*(p(1)+eps))];
hold on
plot(hu(:),hv(:),color,'LineWidth',ancho)

% Se grafica la cabeza de flecha

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%Estas lineas se activaran SOLO si se ejecuta la funcion desde el Command Window tal como se sugiere en los comentarios de cabecera%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
grid on
%
xlabel('EJE X','Color','r')
% Dar nombre al eje X
%
ylabel('EJE Y','Color','g')
% Dar nombre al eje Y
%
hold off
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
else
error('p0 y p1 deben tener las mismas dimensiones')
% ALERTA para solo aceptar que p0 y p1 seab de igual extension
end
else
error('ATENCION: Esta funcion solo acepta vectores 2D o 3D') % ALERTA que indica los dos tipos de sistemas vectoriales a graficar
end

Se tipea la funcion vector3d en el Command Window con sus respectivos datos para obtener un vector 2D

Grafico de un vector 2D con los datos ingresados en la funcion vector3d

Se tipea la funcion vector3d en el Command Window con sus respectivos datos para obtener un vector 3D

Grafico de un vector 3D con los datos ingresados en la funcion vector3d

Anda mungkin juga menyukai