Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Matlab Graficos3d
Matlab Graficos3d
Pedro Corcuera
Dpto. Matemtica Aplicada y
Ciencias de la Computacin
Universidad de Cantabria
corcuerp@unican.es
Objetivos
Presentar la implementacin de una amplia
seleccin de capacidades grficas en tres
dimensiones
Desarrollar la capacidad de generar grficos
interactivamente
Matlab
Indice
Lneas en 3D
Superficies
Creacin de grficos interactivamente
Matlab
Lneas en 3D
La versin 3D de plot es
plot3(u1, v1, w1, c1, u2, v2, w2, c2,)
donde
uj, vj, y wj son las coordenadas x, y, y z, respectivamente, de
un punto
Son escalares, vectores de la misma longitud, matrices del mismo
orden, o expresiones que, cuando se evalan, resultan en una de
esas cantidades
Lneas en 3D
Para dibujar un conjunto de n lneas sin conectar
cuyos puntos finales son
(x1j,y1j,z1j) y (x2j,y2j,z2j), j = 1, 2, , n
x j = x j 1 x j 2 x jn
y j = y j 1 y j 2 y jn
j = 1, 2
x1 = []; x2 = [];
z j = z j1 1 z j 2 z jn
y1 = []; y2 = [];
z1 = []; z2 = [];
plot3([x1; x2], [y1; y2], [z1; z2])
Lneas en 3D
Todos los procedimientos de anotacin descritas para
los grficos 2D son aplicables a las funciones de
generacin de curvas y superficies 3D, excepto que
los argumentos de text se usa
text(x, y, z, s)
donde s es un string y
zlabel
(xo,yo+Ly,zo+Lz)
Lz
(xo,yo,zo)
(xo,yo+Ly,zo)
Lx
(xo+Lx,yo,zo+Lz)
5
x
(xo+Lx,yo,zo)
Ly
(xo+Lx,yo+Ly,zo+Lz)
(xo+Lx,yo+Ly,zo)
Matlab
o o
y o
o o
y o
o o
y o
Matlab
o o
y o
BoxPlot3(1, 1, 1, 3, 5, 7)
BoxPlot3(4, 6, 8, 4, 5, 1)
BoxPlot3(8, 11, 9, 1, 1, 1)
10
8
6
4
2
0
15
10
10
8
6
4
0
Matlab
2
0
0.5
Matlab
1
0.5
0
0
-0.5
-0.5
10
Superficies
Matlab contiene un conjunto de funciones grficas 3D
para crear superficies, contornos, y variaciones, as
como especializaciones de esas formas bsicas
Una superficie se define por la expresin
z = f ( x, y )
donde x e y son las coordenadas en el plano-xy y z
es la altura resultante
Matlab
11
Superficies
Las funciones bsicas de graficacin de superficies
son
surf(x, y, z)
mesh(x, y, z)
12
Ejemplo de superficie
Se requiere dibujar una superficie definida por
z ( x, y ) = x 4 + 3 x 2 + y 2 - 2 x - 2 y - 2 x 2 y + 6
13
150
[x,y,z] = SurfExample;
surf(x, y, z)
100
50
0
15
10
4
2
5
0
0
2
5
200
150
[x,y,z] = SurfExample;
mesh(x, y, z)
100
50
0
15
10
4
2
-2
-5
Matlab
-4
14
200
150
100
50
0
15
4
10
2
5
0
0
2
5
Matlab
15
16
200
150
(3, 3, z(3,3))
100
50
0
15
10
2
5
1
0
0
-1
-2
function Corners
xc = [-3, -3, 3, 3];
yc = [-3, 13, 13, -3];
zc = xc.^4+3*xc.^22*xc+62*yc.*xc.^2+yc.^22*yc;
hold on
plot3([xc; xc], [yc; yc], [zeros(1,4); zc], 'k')
-5
Matlab
-3
17
10
5
5
0
0
-5
-5
Matlab
-10
18
0
15
150
100
10
50
0
15
10
5
0
5
0
0
2
5
-5
Matlab
-10
-5
10
19
Matlab
20
[x,y,z] = SurfExample
mesh(x, y, z)
grid off
100
50
0
15
10
5
0
-5
-10
-5
10
[x,y,z] = SurfExample
mesh(x, y, z)
axis off
grid off
Matlab
21
200
150
100
50
0
15
10
5
0
-5
Matlab
-10
-5
10
22
Color
black
white
red
green
blue
yellow
magenta
cyan
gray
Matlab
23
150
[x,y,z] = SurfExample;
meshz(x, y, z)
100
50
0
15
3
10
2
5
1
0
0
-1
-2
-5
-3
200
[x,y,z] = SurfExample;
waterfall(x, y, z)
150
100
50
0
15
3
10
2
5
1
0
0
-1
-2
-5
Matlab
-3
24
[x,y,z] = SurfExample;
surfnorm(x, y, z)
200
200
150
150
100
100
50
50
0
15
0
15
10
5
0
-5
10
12
14
16
10
5
0
-5
Matlab
-4
-3
-2
-1
25
Grficos de contornos
Las superficies tambin se pueden transformar en
grficos de contornos, que son grficos de curvas
formadas por la interseccin de la superficie y un
plano paralelo al plano xy en valores especficos de z
Las funciones
surfc(x, y, z)
meshc(x, y, z)
26
[x,y,z] = SurfExample;
meshc(x, y, z)
grid off
100
50
0
15
10
2
5
1
0
0
-1
-2
-5
-3
200
150
[x,y,z] = SurfExample;
surfc(x, y, z)
grid off
100
50
0
15
10
2
5
1
0
0
-1
-2
-5
Matlab
-3
27
Grficos de contornos
Se pueden crear contornos sin visualizar la superficie,
con etiquetas o sin etiquetas
La funcin
contour(x, y, z, v)
28
Grficos de contornos
Si se quiere etiquetar el contorno se usan las
funciones
[C, h] = contour(x, y, z, v)
clabel(C, h, v)
clabel
Matlab
29
Ejemplos de contour
12
10
[x,y,z] = SurfExample;
contour(x, y, z)
-2
-3
-2
-1
-2
-1
12
10
[x,y,z] = SurfExample;
contour(x, y, z, 4)
-2
-3
Matlab
30
60
10
[x,y,z] = SurfExample;
[C, h] = contour(x, y, z);
clabel(C, h)
80
80
60
40
20
0
12
0
0
1
20
140
40
80
40
12
0
10
0
12
60
40
20
20
20
40
20
40
60
-2
-1
90
20
12
0
0
12
30
60
30
60
12
60
60
80
-3
1
1420
0
40
40
0
10 20 140
0
1
16
-2
90
10
60
10
30
30
10
30
30
10
10
10
60
[x,y,z] = SurfExample;
v= [10, 30:30:120];
[C, h] = contour(x, y, z, v);
clabel(C, h, v)
1080
0
20
20
30
Matlab
30
60
90
-3
10
60
0
12
-2
-2
90
12
0
-1
31
Grficos de contornos 3D
Para obtener los contornos de superficies en 3D, se
usa
contour3(x, y, z, v)
donde
x, y, z son las coordenadas de los puntos de la superficie
v, si es un escalar, es el nmero de niveles de contornos a
visualizar y, si es un vector de valores, los contornos de la
superficie en los valores de z. El uso de v es opcional
32
Grficos de contornos 3D
Para rellenar la region entre contornos 2D con
diferentes colores se usa
contourf(x, y, z, v)
33
180
160
14 0
0
12
12
0
12
0
10
0
-2
-3
2
5
80
-1
0
0
20
0
4
5
60
40
20
20
3
2
40 0
2
20
10
20
60
40
20
0
15
20
40
60
20
10
50
40
0 0
10 8
40
20
100
60
0
12
40
0
16
0
14
150
60
60
40
60
80
80
80
200
80
10 0
100
14
0
0
10
120
40
140
180
12
[x,y,z] = SurfExample;
[C, h] = contourf(x, y, z);
colorbar
160
10
140
8
120
6
100
80
60
40
12
10
8
6
4
2
0
20
-2
-2
-3
-2
-1
Matlab
-3
-2
-1
34
Grficos de contornos 3D
Las propiedades de las lneas y etiquetas se pueden
modificar de forma similar que para plot
Por ejemplo, para cambiar el tamao de las etiquetas
creadas con contour a 14 puntos y las lneas del
contorno azules, se siguen los pasos
12
0
60
12
0
12
30
90
30
90
10
60
10
60
8
30
30
10
30
30
10
10
60
2
10
30
0
12
10
30
60
60
-2
-3
Matlab
-2
-1
12
0
90
90
[x, y, z] = SurfExample;
[C, h] = contour(x, y, z, v)
g = clabel(C, h, v);
set(g, 'Fontsize', 14)
set(h, 'LineColor', b')
35
Matlab
36
0 z 2
37
Axis of rotation
Matlab
38
0.5
-0.5
-1
1
1
0.5
0.5
0
0
-0.5
-0.5
-1
Matlab
-1
39
-1
3
2
1
0
-1
1
-2
-3
0
-1
40
Angulo de visin
En ocasiones se desea cambiar el ngulo de vista por
defecto de los grficos 3D porque
No se muestra las caractersticas de inters
Varias vistas diferentes deben mostrarse usando subplot
La exploracin de la superficie desde varias vistas es
deseable antes de decidir la orientacin final
41
Angulo de visin
Para orientar el objeto se usa el icono Rotate 3D en
la ventana de la figura y se orienta el objeto hasta
obtener una orientacin satisfactoria. Se mostrar los
valores de azimuth y elevacin mientras se rota
Rotate 3D
42
Sombreado (shading)
Las superficies creadas con surf usan la propiedad de
sombreado por defecto llamada 'faceted'.
La funcin que cambia el sombreado es
shading s
donde s es un string igual a
faceted % Default
flat
interp
Matlab
43
Matlab
44
Matlab
45
Matlab
46
r = 1+sin(zz);
[x, y, z] = cylinder(r, 16);
surf(x, y, z)
view(-88.5, -48)
shading interp
colormap(copper)
axis off vis3d
Matlab
47
Transparencia
Las superficies creadas con surf puede tener su
opacidad alterada asignando un valor numrico al
keyword 'FaceAlpha'
El efecto de este keyword en la superficie resultante
es dependiente del tipo del sombreado seleccionado
Para ilustrar la opcin de transparencia, se crea una
funcin que genera los valores numricos para la
superficie dada por x = a v cos v(1 + cos u )
y = a v sin v(1 + cos u )
z = ba v (1 + sin u )
Matlab
48
Transparencia
Si se asume que a = 1.13 y b = 1.14, la funcin
fichero m para esta superficie es
function [x, y, z] = Transparency
a = 1.13; b = 1.14;
uu = linspace(0, 2*pi, 30);
vv = linspace(-15, 6, 45);
[u, v] = meshgrid(uu, vv);
x = a.^v.*cos(v).*(1+cos(u));
y = -a.^v.*sin(v).*(1+cos(u));
z = -b*a.^v.*(1+sin(u));
Matlab
49
Ejemplo de transparencia
[x, y, z] = Transparency;
surf(x, y, z)
shading interp
axis vis3d off
equal
view([-35 38])
[x, y, z] = Transparency;
h = surf(x, y, z)
set(h, 'FaceAlpha', 0.4)
shading interp
axis vis3d off equal
view([-35 38])
Matlab
50
Ejemplo de transparencia
[x, y, z] = Transparency;
h = surf(x, y, z)
set(h, 'FaceAlpha', 0.4)
axis vis3d off equal
view([-35 38])
Nota: se omite shading
Matlab
51
Matlab
52
xo+Lx
yo+Ly
zo+Lz
xo+Lx];
yo+Ly];
zo
];
53
Matlab
54
donde 0 4
z = 2a sin( / 2)
55
Matlab
56
57
Vellipse
Vsphere
b c
=
a a
58
59
Matlab
60
0.9
0.8
0.7
V
0.4
c/a = 0.5
0.3
0.2
0.5
0.6
0.7
0.8
0.9
b/a
Matlab
61
62
63
Z = Lz +a21x+a22 y+a23z
Matlab
64
Torus
y = rsin
z = a2 -
x2 + y2 - b
donde b a r b + a, 0 2, y b > a
Se crea la funcin Torus para obtener las
coordenadas del toro que usa las funcin real para
eliminar la parte imaginaria debida a redondeos
numricos
Matlab
65
Matlab
66
67
68
69
= 60
= 60
= 60
= 60
Matlab
70
Matlab
71
10
15
20
25
30
Matlab
35
40
45
50
72
Ms ayuda
Matlab
73
Matlab
74
Matlab
75