PDF de programación - Gráficos 3D en MATLAB

Imágen de pdf Gráficos 3D en MATLAB

Gráficos 3D en MATLABgráfica de visualizaciones

Publicado el 12 de Noviembre del 2019
1.328 visualizaciones desde el 12 de Noviembre del 2019
1,4 MB
75 paginas
Creado hace 13a (30/03/2011)
Gráficos 3D en MATLAB

Pedro Corcuera

Dpto. Matemática Aplicada y
Ciencias de la Computación
Universidad de Cantabria

[email protected]

Objetivos

• Presentar la implementación de una amplia

selección de capacidades gráficas en tres
dimensiones

• Desarrollar la capacidad de generar gráficos

interactivamente
interactivamente

Matlab

2

Indice

• Líneas en 3D

• Superficies

• Creación de gráficos interactivamente

Matlab

3

Líneas en 3D

• La versión 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
un punto
Son escalares, vectores de la misma longitud, matrices del mismo
orden, o expresiones que, cuando se evalúan, resultan en una de
esas cantidades

cj es una cadena de caracteres
Un caracter especifica el color.
Un caracter especifica las características del punto
Uno o dos caracteres especifica el tipo de línea

Matlab

4

Líneas en 3D

• Para dibujar un conjunto de n líneas sin conectar

cuyos puntos finales son
(x1j,y1j,z1j) y (x2j,y2j,z2j), j = 1, 2, …, n
se crean seis vectores:

1

j

x = x x … x

j

2

• Así, plot3 es
• Así, plot3 es

y = y y … y
y = y y … y

j

1

j

2

j







z = z


j

jn

jn





j = ,
j = ,




1 2
1 2

j

j1

1
z … z

x1 = […]; x2 = […];
y1 = […]; y2 = […];
z1 = […]; z2 = […];
plot3([x1; x2], [y1; y2], [z1; z2])
donde [x1; x2], [y1; y2], y [z1; z2] son matrices de
(2×n)

jn

2

j

Matlab

5

Líneas en 3D

• Todos los procedimientos de anotación descritas para

los gráficos 2D son aplicables a las funciones de
generación 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

se usa para etiquetar el eje z

Matlab

6

Ejemplo: Dibujo de cajas de alambres

• Se requiere una función BoxPlot3 que dibuje las

aristas (4) de cada una de las seis superficies de una
caja. La ubicación y orientación de la caja está
determinada por las coordenadas de la diagonal de
caras opuestas P(x ,y ,z ) and P(x +L , y +L , z +L )
caras opuestas P(xo,yo,zo) and P(xo+Lx, yo+Ly, zo+Lz)

z

(xo+Lx,yo,zo+Lz)

6

5

(xo,yo,zo+Lz)

(xo,yo,zo)

Lx

7

8

Ly

2

Lz

1

3

4

(xo,yo+Ly,zo+Lz)

(xo,yo+Ly,zo)

(xo+Lx,yo+Ly,zo+Lz)

y

x

(xo+Lx,yo,zo)

(xo+Lx,yo+Ly,zo)

Matlab

7

Ejemplo: Dibujo de cajas de alambres

function BoxPlot3(x0, y0, z0, Lx, Ly, Lz)
x = [x0, x0, x0, x0, x0+Lx, x0+Lx, x0+Lx, x0+Lx]; %(1×8)
y = [y0, y0, y0+Ly, y0+Ly, y0, y0, y0+Ly, y0+Ly]; %(1×8)
z = [z0, z0+Lz, z0+Lz, z0, z0, z0+Lz, z0+Lz, z0]; %(1×8)
index = zeros(6,5);
index(1,:) = [1 2 3 4 1];
index(2,:) = [5 6 7 8 5];
index(2,:) = [5 6 7 8 5];
index(3,:) = [1 2 6 5 1];
index(4,:) = [4 3 7 8 4];
index(5,:) = [2 6 7 3 2];
index(6,:) = [1 5 8 4 1];
for k = 1:6

(xo+Lx,yo+Ly,zo+Lz)

(xo+Lx,yo+Ly,zo)

(xo+Lx,yo,zo+Lz)

2

Lz

1

(xo+Lx,yo,zo)

(xo,yo,zo+Lz)

3

4

(xo,yo,zo)

Lx

y
y

6

5

7

8

Ly



z
z

(xo,yo+Ly,zo+Lz)

(xo,yo+Ly,zo)

x

plot3(x(index(k,:)), y(index(k,:)), z(index(k,:)))
hold on

end

Matlab

8

Ejemplo: Dibujo de cajas de alambres

• El script para generar tres cajas con las siguientes

dimensiones y coordenadas (xo, yo, zo)
– Box #1

Size: 3×5×7
Location: (1, 1, 1)
Location: (1, 1, 1)

– Box #2

Size: 4×5×1
Location: (3, 4, 5)

– Box #3

Size: 1×1×1
Location: (4.5, 5.5, 6)

BoxPlot3(1, 1, 1, 3, 5, 7)
BoxPlot3(4, 6, 8, 4, 5, 1)
BoxPlot3(8, 11, 9, 1, 1, 1)
BoxPlot3(8, 11, 9, 1, 1, 1)

10

8

6

4

2

0
15

10

5

4

2

0

0

10

8

6

Matlab

9

Ejemplo: Onda senoidal sobre una

superficie de un cilindro

• Las coordenadas de una onda senoidal sobre la

superficie de un cilindro se obtiene con
x = b

cos( )
t

y = b

sin( )
t

z = c
z = c

cos(
cos(

at
at

)
)

Si se asume que a = 10.0, b = 1.0,
c = 0.3, y 0 ≤ t ≤ 2π, el script es
c = 0.3, y 0 ≤ t ≤ 2π, el script es

t = linspace(0, 2*pi, 200);
a = 10; b = 1.0; c = 0.3;
x = b*cos(t);
y = b*sin(t);
z = c*cos(a*t);
plot3(x, y, z, 'k')
axis equal

-0.2

0.2

0

0.5

0

-0.5

Matlab

0

-0.5

1

0.5

10

Superficies

• Matlab contiene un conjunto de funciones gráficas 3D

para crear superficies, contornos, y variaciones, así
como especializaciones de esas formas básicas

• Una superficie se define por la expresión
• Una superficie se define por la expresión

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 básicas de graficación de superficies

son

surf(x, y, z) y mesh(x, y, z)

donde x, y, z son las coordenadas de los puntos en la
superficie
superficie
surf – dibuja una superficie compuesta de parches
de colores que dependen de la magnitud z
mesh – dibuja parches de superficies blancas que se
definen por su contorno. Los colores de las líneas de
los parches se determinan por la magnitud de z.

Matlab

12

Ejemplo de superficie

• Se requiere dibujar una superficie definida por
+ 6
definida en el rango −3 < x < 3 y −3 < y < 13

- 2 - 2 - 2

x y

(
z x, y

) =

+ 3

x

+

y

4

x

2

2

x

y

2

Se genera la función SurfExample para calcular las
Se genera la función SurfExample para calcular las
coordenadas x, y ,z
function [x, y, z] = SurfExample
x1 = linspace(-3, 3, 15); % (1×15)
y1 = linspace(-3, 13, 17); % (1×17)
[x, y] = meshgrid(x1, y1); % (17×15)
z = x.^4+3*x.^2−2*x+6-2*y.*x.^2+y.^2-2*y; % (17×15)

Matlab

13

Ejemplos de superficies con surf y mesh

[x,y,z] = SurfExample;
surf(x, y, z)

[x,y,z] = SurfExample;
mesh(x, y, z)

200

150

100

50

0
15

200

150

100

50

0
15

10

5
5

0

0

−2

−5

−4

4

2
2

10

5

0

0

-2

-5

-4

4

2

Matlab

14

Ejemplos de superficies con surf y mesh

[x,y,z] = SurfExample;
mesh(x, y, z)
hidden off

200

150

100

50

0
15

10

5

0

0

−2

−5

−4

4

2

Matlab

15

Combinando superficies y líneas

• Se puede combinar funciones de graficación 3D para

dibujar múltiples líneas y superficies

• Como ejemplo se crean dos funciones

Corners: que dibuja cuatro líneas conectando las
esquinas de la superficie generada por SurfExample
esquinas de la superficie generada por SurfExample
al plano xy que pasa por z = 0
Disc: que crea un disco circular que interseca la
superficie creada por SurfExample en zo = 80,con
radio de 10 unidades, y centro en (0,5)

Matlab

16

Ejemplo: combinando superficies y líneas

• Las coordenadas de las esquinas son:

200

(3, −3, z(3,−3))

(3, 13, z(3,13))

(−3, −3, z(−3,−3))

150

(−3, 13, z(−3,13))
(−3, 13, z(−3,13))

100

50

0
15

3

0

-2

5

0

2

1

10

Las funciones son:
function Corners
xc = [-3, -3, 3, 3];
yc = [-3, 13, 13, -3];
zc = xc.^4+3*xc.^2−2*xc+6−2*yc.*xc.^2+yc.^2−2*yc;
hold on
plot3([xc; xc], [yc; yc], [zeros(1,4); zc], 'k')

-1

-5

-3

Matlab

17

Ejemplo: combinando superficies y líneas

function Disc(R, zo)
r = linspace(0, R, 12); % (1×12)
theta = linspace(0, 2*pi, 50); % (1×50)
x = cos(theta')*r; % (50×12)
y = 5 + sin(theta')*r; % (50×12)
hold on
hold on
z = repmat(zo, size(x)); % (50×12)
surf(x, y, z)

81

80.5

80

79.5

79

15

10

5

0

0

-5

-5

-10

10

5

18

Matlab

Ejemplo: combinando superficies y líneas

[x, y, z] = SurfExample;
surf(x, y, z);
Disc(10, 80)
Corners

200

150

100

50

0
15

200

150

100

50

0
15

10

5

0

0

−2

−5

−4

4

2

10

5

0

Matlab

5

0

-5

-5

-10

10

19

Modificación de la apariencia de gráficos

• Hay varias funciones que se pueden usar de forma

combinada para modificar la apariencia de la
superficie resultante

box on o box off

grid on o grid off

axis on o axis off

La función box on sólo dibuja una caja si axis on ha

sido seleccionada

Matlab

20

Ejemplo: modificación de la apariencia de

[x,y,z] = SurfExample
mesh(x, y, z)
grid off

[x,y,z] = SurfExample
mesh(x, y, z)
axis off
grid off

gráficos

200

150

100

50

0
15

10
10

5

0

0

-5

-5

-10

10
10

5

Matlab

21

Ejemplo: modificación de la apariencia de

gráficos

[x,y,z] = SurfExample
mesh(x, y, z)
axis on
grid off

box on
box on

200

150

100

50

0
15

10

5

0

0

-5

-5

-10

10

5

Matlab

22

Modificación de la apariencia de gráficos

• Los colores de los parches creados por surf o las
líneas creadas por mesh se pueden cambiar a un
color uniforme usando
colormap(c)

donde c es un vector de tres elementos, cada uno de los
donde c es un vector de tres elementos, cada uno de los

cuales varía entre 0 y 1, correspondiendo a la intensidad
del color rojo, verde y azul respectivamente (r, g, b). Ejm:

c

[0 0 0]
[1 1 1]
[1 0 0]
[0 1 0]
[0 0 1]
[1 1 0]
[1 0 1]
[0 1 1]
[0.5 0.5 0.5]



Color

black
white
red
green
blue
yellow
magenta
cyan
gray

Matlab

23

Ejemplo: funciones adicionales para
mejorar visualmente una superficie

[x,y,z] = SurfExample;
meshz(x, y, z)

[x,y,z] = SurfExample;
waterfall(x, y, z)

200

150

100

50

0
15

200

150

100

50

0
15

10

5

0

0

-1

-5

-3

-2

3

2

1
1

10

5

0

0

-1

-5

-3

-2

3

2

1

Matlab

24

Ejemplo: funciones adicionales para
mejorar visualmente una superficie

[x,y,z] = SurfExample;
ribbon(y, z)

[x,y,z] = SurfExample;
surfnorm(x, y, z)

200

150

100

50

0
15

200

150

100

50

0
15

10

5

0

10

8

6

4

-5

0

2

16

14

12

10

5

0

1

0

-1

-2

-5

-4

-3

Matlab

4

3

2

25

Gráficos de contornos

• Las superficies también se pueden transformar en
gráficos de contornos, que son gráficos de curvas
formadas por la intersección de la superficie y un
plano paralelo al plano xy en valores específicos de z

• Las funciones
• Las funciones

surfc(x, y, z) y meshc(x, y, z)

crean superficies con contornos proyectados debajo
de la superficie. x, y, z son los valores de las
coordenadas de puntos que definen la superficie

Matlab

26

Ejemplo de gráficos de contornos

[x,y,z] = SurfExample;
meshc(x, y, z)
grid off

[x,y,z] = SurfExample;
surfc(x, y, z)
grid off

150

100

50

0
  • Links de descarga
http://lwp-l.com/pdf16892

Comentarios de: Gráficos 3D en MATLAB (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad