Professional Documents
Culture Documents
I. CURVAS EN 3D
MatLab posee excelentes cualidades para la graficacin en 3D y tal vez sea esta una de las cosas ms
interesantes para su utilizacin como herramienta en las carreras de ingeniera. La primera instruccin de
grficos en tres dimensiones es la funcin plot3 que resulta similar al comando plot en grficos
bidimensionales.
En el caso de 2D, a cada punto Xi le corresponde un valor de Yi y as se forman los pares ordenados (x,y)
que eran colocados en una grfica cartesiana mediante el comando plot.
Para el caso de 3D, se incorpora la coordenada Zi con la que se forman las tripletas (x, y, z) de modo que
ahora Plot3 es la funcin que ubica esas tripletas y tiene la siguiente sintaxis:
plot3 (X, Y, Z, Especificaciones de lnea,...).
Ejemplo:
a) Generar las 3 sinusoides (sin(x), sin(2x) y sin (3x) de la figura de la izquierda y b) Generar las mismas
3 sinusoides pero segn la figura de la derecha. En ambos casos, x vara entre 0 y 3*pi.
SOLUCIN:
clc; clear all,close all;
x = linspace(0,3*pi);
y1 = zeros(size(x));
y2 = ones(size(x));
y3 = 2* ones(size(x));
z1 = sin(x);
z2 = sin(2*x);
z3 = sin(3*x);
% PARTE (a):
plot3(x,y1,z1,'b',x,y2,z2,'k',x,y3,z3,'r')
grid on
xlabel('eje X'), ylabel('eje Y'), zlabel('eje Z')
title('sin(x), sin(2x), sin(3x)')
legend('z=sin(x) con y=0', 'z=sin(2x) con y=1', 'z=sin(3x) con y1=2')
% PARTE (b):
figure
plot3(x,z1,y1,'b',x,z2,y2,'k',x,z3,y3,'r')
grid on
xlabel('eje X'), ylabel('eje Y'), zlabel('eje Z')
title('sin(x), sin(2x), sin(3x)')
legend('z=sin(x) con y=0', 'z=sin(2x) con y=1', 'z=sin(3x) con y1=2')
DEBER 1: Realizar la animacin de una esfera movindose a lo largo de una curva en 3D: z=f(x,y)
for t=0:0.1:2*pi
x1 = 0:0.1:2*pi;
y1 = cos(x1);
z1 = sin(x1);
plot3(x1,y1,z1,'b')
grid on
xlabel('eje X'), ylabel('eje Y'), zlabel('eje Z')
hold on
[x,y,z] = sphere;
surf(x+t,y+cos(t),z+sin(t));
daspect([1 1 1]);
pause (0.1);
cla('reset');
end
I.2 Construccin de grficos 3D en base a una malla de nodos:
Con estos vectores, la grilla que se desea generar quedara de la siguiente manera:
Por lo anterior, se deberan generar dos matrices, una que represente al EJE X y otra que represente al
EJE Y, de modo que al superponerlas generen los pares ordenados anteriores. Esto es realizado por la
funcin meshgrid:
[X,Y]=meshgrid(x,y);
Los dos pasos anteriores podran realizarse simultneamente de la siguiente manera:
[X,Y]= meshgrid(x1: paso: xn, y1: paso: yn);
Ejemplo:
% Construccin de la malla de nodos:
[X,Y]=meshgrid(1:1:5, 1:1:10);
Si x e y son iguales para formar una malla cuadrada, basta con poner una sola vez.
[x,y]= meshgrid (inicio: paso : final);
Una vez que ya se tienen las ternas (x,y,z), solo resta colocarlas en una grfica 3D. De manera similar a
2D en donde plot coloca los pares ordenados (x,y) y los une con lneas de algn tipo, esta unin para
3D se realiza mediante 3 opciones bsicas:
a) malla (mesh): une las ternas (x,y,z) mediante un mallado tridimensional: mesh(x,y,z)
b) superficie (surf): une las ternas (x,y,z) mediante una superficie: surf (x,y,z)
c) contorno (contour): une las ternas (x,y,z) mediante un mapa de niveles (crculos en las partes donde
existen elevaciones y depresiones): .. contour3(x,xy,z)
d) una combinacin de las anteriores:
d1) malla y contorno (meshc): pone ambos, una malla y debajo del mismo el contorno.
d2) superficie y contorno (surfc): pone ambos, una superficie y debajo del mismo el contorno.
a) PLANOS:
Dos planos son paralelos si el rango de la matriz A es uno pero no son coincidentes es decir, el rango de
la matriz Ab es dos. Sean los planos: x-2y+z=1 y -2x+4y-2z=6
[x,y] = meshgrid(0:0.1:3);
z = 1-x+2*y;
hold on
mesh(x,y,z)
z = 3-x+2*y;
mesh(x,y,z)
xlabel('x')
ylabel('y')
zlabel('z')
title('Planos paralelos')
grid on
hold off
view(120,30)
b) Paraboloide hiperblico
x = -1:0.1:1; y = -1:.1:1;
z = y'*x; % ColumnaFila=Matriz cuadrada
surf(x,y,z) % Superficie de placas
c) Paraboloide elptico
Representemos el paraboloide elptico z = x2 + y2 en [1,1][1,1]
x = -1:0.1:1; y = -1:0.1:1;
[X,Y] = meshgrid(x,y);
z = X.^2 + Y.^2;
surf(x,y,z)
DEBER 2:
1) CONO EN 3D
CODIGO:
clc
x = -5:0.1:5; y = -5:0.1:5;
[X,Y] = meshgrid(x,y);
z = sqrt( 16*((Y.^2)/4 + (X.^2)/3)) ;
surf(x,y,z)
GRAFICO:
CODIGO:
x = -5:0.1:5; y = -5:0.1:5;
[X,Y] = meshgrid(x,y);
z = X.^2-Y.^2;
surf(x,y,z)
GRAFICO:
3) ECUACION CUBICA EN 3D
CODIGO:
x = -5:0.1:5; y = -5:0.1:5;
[X,Y] = meshgrid(x,y);
z = (X+Y).^3;
surf(x,y,z)
GRAFICO:
4) FUNCION EXPONENCIAL EN 3D
CODIGO:
x = -2:0.2:2; y = -2:0.2:2;
[X,Y] = meshgrid(x,y);
z = exp(-(X.^2+Y.^2));
surf(x,y,z)
GRAFICO:
5) FUNCION LOGARITMICA EN 3D
CODIGO:
x = 0.00001:0.1:20; y = 0.00001:0.1:20;
[X,Y] = meshgrid(x,y);
z = Y -log(X);
surf(x,y,z)
GRAFICO:
DEBER 3:
12.7 Planos tangentes y rectas normales a su superficie (pag. 985): pasar a limpio y simulado en Matlab
todos los ejemplos. Esta parte deben hacer todos los grupos y adems:
EJEMPLOS DE LA PAG.985
1) EJEMPLO 1
CODIGO:
%OBTENGA LA ECUACION DE LA RECTA TANGENTE A LA PARABOLOIDE ELIPTICA
%4*x^2+y^2-16*z=0 en el punto [2 4 2]
x = -8:0.4:8; y = -8:0.4:8;
[X,Y] = meshgrid(x,y);
z = (4*X.^2 + Y.^2)/16;
figure
hold
grid
surf(x,y,z)
x1 = -8:0.4:8; y1 = -8:0.4:8;
[X1,Y1] = meshgrid(x1,y1);
z1=(2*X1+Y-4)/2;
surf(x1,y1,z1);
view (40,45)
lightangle(35, 35)
GRAFICO:
2) EJEMPLO 2
CODIGO:
%OBTENGA LAS ECUACIONES SIMETRICAS DE LA RECTA NORMAL A LA SUPERFICIE
DEL
%EJEMPLO 1 EN EL PUNTO [2 4 2]
x = -8:0.4:8; y = -8:0.4:8;
[X,Y] = meshgrid(x,y);
z = (4*X.^2 + Y.^2)/16;
figure
hold
grid
surf(x,y,z)
view (40,45)
lightangle(35, 35)
quiver3(2,4,2,-6,-3,6,'r');
GRAFICO:
3) EJEMPLO 3
CODIGO:
x1=linspace(-20,20,100);
y1=linspace(-20,20,100);
z1=linspace(-20,20,100);
[X1,Y1,Z1]=meshgrid(x1,y1,z1);
L=patch(isosurface(X1,Y1,Z1,K,0));
isonormals(X1,Y1,Z1,K, L);
daspect([1 1 1])
view(3)
camlight
lighting phong
axis equal
xlabel('x'); ylabel('y'); zlabel('z')
GRAFICO:
4) EJEMPLO 4
CODIGO:
%DEMUESTRE QUE LAS ESFERAS SON TANGENTES EN EL PUNTO (2,0,0)
clc;
hold on;
grid;
x=linspace(-20,20,100);
y=linspace(-20,20,100);
z=linspace(-20,20,100);
[X,Y,Z]=meshgrid(x,y,z);
%Se define Q(x,y,z)=x^2+y^2+z^2-9
Q= X.^2 +(Y.^2) +(Z.^2) -4;
K= (X-1).^2 +(Y.^2) +(Z.^2) -1;
%Se representa la superficie de nivel Q(x,y,z)=0
H=patch(isosurface(X,Y,Z,Q,0));
isonormals(X,Y,Z,Q, H);
L=patch(isosurface(X,Y,Z,K,0));
isonormals(X,Y,Z,K, L);
5) EJEMPLO 5
CODIGO:
%UTILIZE EL GRADIENTE PARA ENCONTRAR UNA ECUACION DE LA RECTA TANGENTE
A LA
%CURVA X^3+Y^3=9 EN EL PUNTO [1 2]
x=-5:0.2:5
y=nthroot (9-x.^3,3)
hold;
plot(x,y)
grid
x1=-2:0.2:3.5;
y1=(-x1+9)/4;
plot(x1,y1);
legend('funcin','tangente')
GRAFICO:
Grupo DERECHA: los ejercicios 12.7 (pares) (pags. 989 y 990)
HACER LOS EJERCICIOS PARES DE LAS PAGINAS 989 Y 990 DEL LIBRO DE LEITHOLD
1) EJERCICIO #2 + + = ; (, , )
CODIGO:
clc;
x=linspace(-20,20,100);
y=linspace(-20,20,100);
z=linspace(-20,20,100);
[X,Y,Z]=meshgrid(x,y,z);
%Se define Q(x,y,z)=x^2+y^2+z^2-9
Q= 4*X.^2 +(Y.^2) +3*(Z.^2) -26;
%Se representa la superficie de nivel Q(x,y,z)=0
H=patch(isosurface(X,Y,Z,Q,0));
isonormals(X,Y,Z,Q, H);
%Para dibujar la superficie en color rojo
%e iluminada
set(H, 'FaceColor', 'red', 'EdgeColor', 'none');
daspect([1 1 1])
view(3)
camlight
lighting phong
axis equal
xlabel('x'); ylabel('y'); zlabel('z')
GRAFICO:
2) EJERCICIO #4
CODIGO:
clc;
x=linspace(-20,20,100);
y=linspace(-20,20,100);
z=linspace(-20,20,100);
[X,Y,Z]=meshgrid(x,y,z);
%Se define Q(x,y,z)=x^2+y^2+z^2-9
Q= X.^2 +(Y.^2) -(Z.^2) -6;
%Se representa la superficie de nivel Q(x,y,z)=0
H=patch(isosurface(X,Y,Z,Q,0));
isonormals(X,Y,Z,Q, H);
%Para dibujar la superficie en color rojo
%e iluminada
set(H, 'FaceColor', 'red', 'EdgeColor', 'none');
daspect([1 1 1])
view(3)
camlight
lighting phong
axis equal
xlabel('x'); ylabel('y'); zlabel('z')
GRAFICO:
3) EJERCICIO #6
CODIGO:
clc;
x=linspace(-20,20,100);
y=linspace(-20,20,100);
z=linspace(-20,20,100);
[X,Y,Z]=meshgrid(x,y,z);
%Se define la funcion Q(x,y,z)
Q= Z - exp(3*X).*sin(3*Y);
%Se representa la superficie de nivel Q(x,y,z)=0
H=patch(isosurface(X,Y,Z,Q,0));
isonormals(X,Y,Z,Q, H);
%Para dibujar la superficie en color rojo
%e iluminada
set(H, 'FaceColor', 'red', 'EdgeColor', 'none');
daspect([1 1 1])
view(3)
camlight
lighting phong
axis equal
xlabel('x'); ylabel('y'); zlabel('z')
GRAFICO:
4) EJERCICIO #8
CODIGO:
clc
x = 0:0.1:5; y = 0:0.1:5;
[X,Y] = meshgrid(x,y);
z =Y.^(1/2) + X.^(2/3);
surf(x,y,z)
GRAFICO:
5) EJERCICIO #10
CODIGO:
clc;
x=linspace(-20,20,100);
y=linspace(-20,20,100);
z=linspace(-20,20,100);
[X,Y,Z]=meshgrid(x,y,z);
%Se define Q(x,y,z)=x^2+y^2+z^2-9
Q= Z.*X.^2 -X.*(Y.^2) -Y.*(Z.^2) -18;
%Se representa la superficie de nivel Q(x,y,z)=0
H=patch(isosurface(X,Y,Z,Q,0));
isonormals(X,Y,Z,Q, H);
%Para dibujar la superficie en color rojo
%e iluminada
set(H, 'FaceColor', 'red', 'EdgeColor', 'none');
daspect([1 1 1])
view(3)
camlight
lighting phong
axis equal
xlabel('x'); ylabel('y'); zlabel('z')
GRAFICO:
6) EJERCICIO #12
CODIGO:
clc;
x=linspace(-20,20,100);
y=linspace(-20,20,100);
z=linspace(-20,20,100);
[X,Y,Z]=meshgrid(x,y,z);
%Se define Q(x,y,z)=x^2+y^2+z^2-9
Q= X.^(1/2) + Z.^(1/2) -8;
%Se representa la superficie de nivel Q(x,y,z)=0
H=patch(isosurface(X,Y,Z,Q,0));
isonormals(X,Y,Z,Q, H);
%Para dibujar la superficie en color rojo
%e iluminada
set(H, 'FaceColor', 'red', 'EdgeColor', 'none');
daspect([1 1 1])
view(3)
camlight
lighting phong
axis equal
xlabel('x'); ylabel('y'); zlabel('z')
GRAFICO:
7) EJERCICIO #14
CODIGO:
clc;
hold on;
grid;
x=linspace(-20,20,100);
y=linspace(-20,20,100);
z=linspace(-20,20,100);
[X,Y,Z]=meshgrid(x,y,z);
x1=linspace(-20,20,100);
y1=linspace(-20,20,100);
z1=linspace(-20,20,100);
[X1,Y1,Z1]=meshgrid(x1,y1,z1);
L=patch(isosurface(X1,Y1,Z1,K,0));
isonormals(X1,Y1,Z1,K, L);
daspect([1 1 1])
view(3)
camlight
lighting phong
axis equal
xlabel('x'); ylabel('y'); zlabel('z')
GRAFICO:
8) EJERCICIO #16
CODIGO:
%Se define Q(x,y,z)=x^2+y^2+z^2-9
Q= X-2-cos(pi*Y.*Z);
K=Y1-1-sin(pi*X1.*Z1) ;
%Se representa la superficie de nivel Q(x,y,z)=0
H=patch(isosurface(X,Y,Z,Q,0));
isonormals(X,Y,Z,Q, H);
L=patch(isosurface(X1,Y1,Z1,K,0));
isonormals(X1,Y1,Z1,K, L);
daspect([1 1 1])
view(3)
camlight
lighting phong
axis equal
xlabel('x'); ylabel('y'); zlabel('z')
GRAFICO:
9) EJERCICIO #18
CODIGO:
clc;
hold on;
grid;
x=linspace(-20,20,100);
y=linspace(-20,20,100);
z=linspace(-20,20,100);
[X,Y,Z]=meshgrid(x,y,z);
x1=linspace(-20,20,100);
y1=linspace(-20,20,100);
z1=linspace(-20,20,100);
[X1,Y1,Z1]=meshgrid(x1,y1,z1);
L=patch(isosurface(X1,Y1,Z1,K,0));
isonormals(X1,Y1,Z1,K, L);
GRAFICO:
CODIGO:
clc;
hold on;
grid;
x=linspace(-20,20,100);
y=linspace(-20,20,100);
z=linspace(-20,20,100);
[X,Y,Z]=meshgrid(x,y,z);
x1=linspace(-20,20,100);
y1=linspace(-20,20,100);
z1=linspace(-20,20,100);
[X1,Y1,Z1]=meshgrid(x1,y1,z1);
clc;
%Se define Q(x,y,z)=x^2+y^2+z^2-9
Q= X.^2 +2*(Y.^2) +(Z.^2) -8;
K= Y1.*Z1-4;
%Se representa la superficie de nivel Q(x,y,z)=0
H=patch(isosurface(X,Y,Z,Q,0));
isonormals(X,Y,Z,Q, H);
L=patch(isosurface(X1,Y1,Z1,K,0));
isonormals(X1,Y1,Z1,K, L);
GRAFICO:
CODIGO:
clc;
grid;
x=linspace(-20,20,100);
y=linspace(-20,20,100);
z=linspace(-20,20,100);
[X,Y,Z]=meshgrid(x,y,z);
%Se define Q(x,y,z)=x^2+y^2+z^2-9
Q= X.^4 +(Y.^4) -32;
%Se representa la superficie de nivel Q(x,y,z)=0
H=patch(isosurface(X,Y,Z,Q,0));
isonormals(X,Y,Z,Q, H);
%Para dibujar la superficie en color rojo
%e iluminada
set(H, 'FaceColor', 'red', 'EdgeColor', 'none');
daspect([1 1 1])
view(3)
camlight
lighting phong
axis equal
xlabel('x'); ylabel('y'); zlabel('z')
GRAFICO:
12) EJERCICIO #24
CODIGO:
clc;
grid;
x=linspace(-20,20,100);
y=linspace(-20,20,100);
z=linspace(-20,20,100);
[X,Y,Z]=meshgrid(x,y,z);
%Se define Q(x,y,z)=x^2+y^2+z^2-9
Q= X.^4 -(Y.^2) +2*X.*Y -4;
%Se representa la superficie de nivel Q(x,y,z)=0
H=patch(isosurface(X,Y,Z,Q,0));
isonormals(X,Y,Z,Q, H);
%Para dibujar la superficie en color rojo
%e iluminada
set(H, 'FaceColor', 'red', 'EdgeColor', 'none');
daspect([1 1 1])
view(3)
camlight
lighting phong
axis equal
xlabel('x'); ylabel('y'); zlabel('z')
GRAFICO:
13) EJERCICIO #26
CODIGO:
clc;
hold on;
grid;
x=linspace(-20,20,100);
y=linspace(-20,20,100);
z=linspace(-20,20,100);
[X,Y,Z]=meshgrid(x,y,z);
x1=linspace(-20,20,100);
y1=linspace(-20,20,100);
z1=linspace(-20,20,100);
[X1,Y1,Z1]=meshgrid(x1,y1,z1);
L=patch(isosurface(X1,Y1,Z1,K,0));
isonormals(X1,Y1,Z1,K, L);
daspect([1 1 1])
view(3)
camlight
lighting phong
axis equal
xlabel('x'); ylabel('y'); zlabel('z')
GRAFICO:
II.5 APLICACIN A IMGENES:
Escala_grises = rgb2gray(T);
figure
imshow(Escala_grises) % <480x640 uint8>
[a, b] = size(Escala_grises);
[X,Y]=meshgrid(1:1:b, 1:1:a);
Z=double(Escala_grises);
figure
meshc(X,Y,Z)
figure
surfc(X,Y,Z)
APLICADO A IMAGEN DE JESS:
Negativo 3d
http://www.imprimalia3d.com/noticias/2015/04/13/004608/s-bana-santa-3d-invidentes
clc, close all, clear all
Escala_grises = rgb2gray(T);
figure
imshow(Escala_grises) % <480x640 uint8>
%% A NEGATIVO:
Negativo=imadjust(Escala_grises,[0 1],[1 0]);
figure
imshow(Negativo);
title('Imagen Negativo');