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
Matlab
Indice
• Líneas en 3D
• Superficies
• Creación de gráficos interactivamente
Matlab
Líneas en 3D
plot
plot3
!
#
#
#
"
$
$
%
&
$
Matlab
&
Líneas en 3D
'
( )
)
&
$
*
+
, & plot3
* - ./
** - ./
*0 * - ./ 0 * plot3 - / .
- /
./
./
./
- /
. - /
. -0 / 0 .
.
-0 / 0 .
×
Matlab
Líneas en 3D
1
2$
(
$
$
text
text
0
zlabel
!
)
Matlab
!
Ejemplo: Dibujo de cajas de alambres
!
$
!
3
) %
(
'
' 4
Matlab
( )
$
)
2
4
4
Ejemplo: Dibujo de cajas de alambres
unction
×
×
×
!
zeros
!
"
!
"
!
"
!
"
!
"
!
"
for #
"
plot3
! #"
hold on
end
! #"
Matlab
! #"
Ejemplo: Dibujo de cajas de alambres
5
8
0 + ×9×:
+
67 8
0 + 3×9×
+ 3 9
67 8
0 + × ×
+ 3%9 9%9 ;
)
67
$
10
8
6
4
2
0
15
10
10
8
6
5
4
0
Matlab
2
0
Ejemplo: Onda senoidal sobre una
superficie de un cilindro
(
$
(
% &! '&()! *(!
+
+
+
≤ ≤ π ! &,- . !&
linspace
/pi
'
0
+ ,
+
0/cos
0/sin
,/cos '/
plot3
1#1
axis equal
0.2
0
-0.2
0.5
1
0.5
0
0
-0.5
Matlab
-0.5
Superficies
<
(
)
$
2$
$
&
0
#
$
$
(2
$
=
Matlab
0
Superficies
$
surf
(2
$
0
$
surf 6 ( )
!
mesh 6 ( )
$
>
$
0
mesh
$
>
>
$
%
(
!
&
%
Matlab
Ejemplo de superficie
!
( )
$
$
$
− ? ?
− ? ?
$
0
function
linspace 3
linspace 3
meshgrid
+4
/ +4 − /
%(- 2 '). !
×
×
3 / +/ +4
Matlab
×
+4 3 /
×
Ejemplos de superficies con surf y mesh
200
150
%(- 2 '). !
100
surf
50
0
15
10
4
2
5
0
0
−2
−5
−4
200
150
%(- 2 '). !
100
mesh
50
0
15
10
4
2
5
0
0
-2
-5
Matlab
-4
Ejemplos de superficies con surf y mesh
%(- 2 '). !
mesh
hidden off
200
150
100
50
0
15
4
10
2
5
0
0
−2
−5
Matlab
−4
Combinando superficies y líneas
(
( )
@
"
$
$
&
)
+!
$
$
( )
!
&
$
!
*A
+!
$
!
* BA
A
A9
Matlab
Ejemplo: combinando superficies y líneas
!
+
−
200
− −
−
150
− −
100
−
−
50
0
15
$
+
3
10
2
5
1
0
0
-1
-2
function 5 - !-&
, 3 3
, 3
3
,
,+4
/ ,+4 − / , − / ,+/ ,+4
,+4 − / ,
hold on
plot3 , ,
, , zeros
, 1#1
-5
Matlab
-3
Ejemplo: combinando superficies y líneas
function 6 &, 7
- linspace 7
8! ' linspace
cos 8! '1 /sin 8! '1 /hold on
repmat
& !
surf
×
×
×
×
/pi
×
81
80.5
80
79.5
79
15
10
10
5
5
0
0
-5
-5
Matlab
-10
Ejemplo: combinando superficies y líneas
%(- 2 '). !
surf
6 &,
5 - !-&
200
150
100
50
200
0
15
150
100
10
50
0
15
10
4
5
0
2
5
0
0
−2
−5
-5
−4
Matlab
-10
-5
0
5
10
Modificación de la apariencia de gráficos
C
$
(
!
$
$
$
box on
box off
grid on
grid off
axis on
axis off
$
box on
( )
Matlab
)
axis on >
Ejemplo: modificación de la apariencia de
gráficos
200
150
%(- 2 '). !
mesh
grid off
100
50
0
15
10
5
0
-5
%(- 2 '). !
mesh
axis off
grid off
Matlab
-10
-5
0
5
10
Ejemplo: modificación de la apariencia de
gráficos
%(- 2 '). !
mesh
axis on
grid off
box on
200
150
100
50
0
15
10
5
0
-5
Matlab
-10
-5
0
5
10
Modificación de la apariencia de gráficos
>
>
&
$
(
$
colormap
&
A
)
0
( % 5) +
!"
"#
$ ""
%"
&"
' $" !
&
$ &
Matlab
Ejemplo: funciones adicionales para
mejorar visualmente una superficie
200
150
%(- 2 '). !
meshz
100
50
0
15
3
10
2
5
1
0
0
-1
-2
-5
-3
200
%(- 2 '). !
waterfall
150
100
50
0
15
3
10
2
5
1
0
0
-1
-2
-5
Matlab
-3
Ejemplo: funciones adicionales para
mejorar visualmente una superficie
%(- 2 '). !
%(- 2 '). !
surfnorm
ribbon
200
200
150
150
100
100
50
50
0
15
0
15
10
5
0
-5
0
2
4
6
8
10
12
14
16
10
5
0
-5
Matlab
-4
-3
-2
-1
0
1
2
3
4
Gráficos de contornos
$
(D
2$
$
!
2$
$
$
&$
0
$
0
surfc
meshc
0
$
$
( )
%
!
Matlab
$
$
Ejemplo de gráficos de contornos
150
%(- 2 '). !
100
meshc
grid off
50
0
15
10
2
5
1
0
0
-1
-2
-5
-3
200
150
%(- 2 '). !
100
surfc
grid off
50
0
15
10
2
5
1
0
0
-1
-2
-5
Matlab
-3
Gráficos de contornos
0
!
$
!
$
contour
0
2$
!
$
"
0
$
%5
Matlab
$
Gráficos de contornos
!
!
$
-@ >. * contour
clabel @ >
0
Matlab
Ejemplos de contour
12
10
8
%(- 2 '). !
contour
6
4
2
0
-2
-3
-2
-1
0
1
2
3
-2
-1
0
1
2
3
12
10
8
%(- 2 '). !
contour
6
4
2
0
-2
-3
Matlab
60
10
%(- 2 '). !
5 8 contour
clabel 5 8
80
80
60
40
20
8
0
12
0
0
1
20
140
40
80
40
12
0
10
0
12
60
Ejemplos de contour y clabel
40
20
20
20
6
40
20
40
4
60
-2
-1
90
0
20
12
0
1
2
3
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
8
30
30
6
10
30
9
30
4
10
2
10
10
60
30
0
12
-2
Matlab
30
60
90
-3
10
-2
90
12
0
0
60
%(- 2 '). !
9
" "
5 8 contour
clabel 5 8 9
1080
0
20
0
20
2
-1
0
1
2
3
Gráficos de contornos 3D
'
(
contour3
$
0
$
"
0
$
'
%5
!
-@ >. * contour3
clabel @ >
0
Matlab
Gráficos de contornos 3D
'
$
contourf
0
$
colorbar
!
(
D
$
(
%5
Matlab
E> 0E E
$
E
E
E
Ejemplos de contour3, contourf y colorbar
%(- 2 '). !
5 8 contour3
clabel 5 8
180
160
14 0
0
12
12
0
2
12
0
10
0
-2
-3
−2
−5
80
-1
0
0
0
1
20
0
4
5
60
40
20
20
3
2
40 0
2
20
10
20
60
40
20
5
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
−4
12
%(- 2 '). !
5 8 contourf
colorbar
160
10
140
8
120
6
100
4
80
2
60
0
40
12
10
8
6
4
2
0
20
-2
-2
-3
-2
-1
0
1
2
3
Matlab
-3
-2
-1
0
1
2
3
Gráficos de contornos 3D
&
'
$
)
$
!
plot
F
!
(
contour
3
!
&
0
12
0
60
12
0
12
90
30
30
0. *
$5
/
-@ >. * contour
0
* clabel @ > /
EG
0 E 3
> E
@ E H(E
90
10
60
10
60
8
30
30
10
6
30
30
4
10
60
10
2
10
30
60
60
-2
-3
Matlab
-2
-1
0
1
2
12
0
10
30
0
12
90
90
0
3
Superficies cilíndricas, esféricas y
elipsoidales
$
-
0. * cylinder
!
$
&
$
0
$
cylinder
!
$
%
$
A
Matlab
Ejemplo de superficie cilíndrica
'
≥ ≤
!
;A°
) =
;
;
!
!
$
5
$
$
00 * linspace(A Ipi ; /
0. * cylinder % 4sin 00
surf
0
axis off
Matlab
&
;/
Ejemplo de superficie cilíndrica
Axis of rotation
Matlab
Superficies cilíndricas, esféricas y
elipsoidales
'
$
0. * sphere
axis equal
surf
0
/
"
!
$
%
* A
1
0.5
0
-0.5
-1
1
1
0.5
0.5
0
0
-0.5
-0.5
-1
Matlab
-1
Superficies cilíndricas, esféricas y
elipsoidales
'
0. * ellipsoid
axis equal
surf
0
0
0
/
1
0
-1
3
2
1
0
-1
1
-2
-3
0
-1
= )
%
"
!
%
* A
Matlab
Angulo de visión
5
(
$
2$
6J
6K
6
2
!
&
(
$
$
D
(
(
'
-
$
0
>
. * view
Matlab
2
Angulo de visión
'
()
$
()
(
$
0
>
%
2
>
L
5
view
)
Matlab
Sombreado (shading)
$
$
(
$
$
!
E$
(
(
shading
$
$
M
$
Matlab
E%
Ejemplo de view y shading
linspace
/pi
- + &
cylinder surf
view 3 + 3
shading faceted
axis off vis3d
Matlab
Ejemplo de view y shading
linspace
/pi
- + &
cylinder surf
view 3 + 3
shading flat
axis off vis3d
Matlab
Ejemplo de view y shading
linspace
/pi
- + &
cylinder surf
view 3 + 3
shading interp
axis off vis3d
Matlab
Ejemplo de view y shading
-
sin
cylinder -
surf
view 3 + 3
shading interp
colormap , ..!axis off vis3d
Matlab
Transparencia
$
$
D
N
5 $
EG
, > E
N
$
(
'
$
!
$
D
, &
=
=−
=−
Matlab
+, &
&
+, &
+&
Transparencia
!
$ >
* %
$
function 0. * 1
* % / ( * % 3/
* linspace A Ipi A /
* linspace = 9 ; 39 /
- . * meshgrid
/
* %O %Icos %I 4cos /
* = %O %Isin %I 4cos /
0 * =(I %O %I 4sin /
Matlab
* % 3
$
Ejemplo de transparencia
:-' &.'-! ,
surf
shading interp
axis vis3d off
equal
view 3
:-' &.'-! ,
8 surf
set 8 1;',!< .8'1 +
shading interp
axis vis3d off equal
view 3
Matlab
Ejemplo de transparencia
:-' &.'-! ,
8 surf
set 8 1;',!< .8'1 +
axis vis3d off equal
view 3
J
+
shading
Matlab
Ejemplo: coloreado de cajas
<
$
$ >
!
$
2
$
$
fill3
(
Matlab
Ejemplo: coloreado de cajas
function
5
=
= -! -')! =
!
zeros
!
"
!
"
!
"
!
"
!
"
!
"
, 1->0,) 1
for #
"
if =?
fill3
else
plot3
end
hold on
end
=
-!, ' > !& '-! , -!
! #"
! #"
! #"
! #"
! #"
! #"
Matlab
,#
Ejemplo: coloreado de cajas
5
5
5
$
10
9
8
7
6
5
4
3
2
1
12
10
8
6
4
2
0
1
Matlab
2
3
4
5
6
7
8
9
Ejemplo: intersección de un cilindro y una
esfera y resaltado de su intersección
!
$
A
D
+ , &ϕ
=
= & ϕ
=
A ≤ ϕ ≤ 3π
'
$
sphere
Matlab
&
%
ϕ@
Ejemplo: intersección de un cilindro y una
esfera y resaltado de su intersección
cylinder
$
+
→ 4
→
→3 −
!
* % 5
Matlab
$
Ejemplo: intersección de un cilindro y una
esfera y resaltado de su intersección
'
& & & sphere
surf /'/ & /'/ & /'/ &
hold on
cylinder
surf '/ ' '/ /'/ 3 /'
shading interp
linspace
/pi
'/ cos
'/sin
/'/sin @
plot3
1 31 1 != 81 +
axis equal off
view
Matlab
Ejemplo: mejora de gráficos 2D con
objetos 3D
'
$
)
)
)
$
=
=
)
$
2$
P
Matlab
P
Ejemplo: mejora de gráficos 2D con
objetos 3D
0
+
, 0
for #
"
plot 0 0/, # 1#31
text +
0 /, # 0 /, # @ 3 +
1,@' 1 num2str , #
hold on
end
xlabel 10@'1 ylabel 1A1
for #
"
switch #
case
axes 1. &
1 +
+
+ +
& & & ellipsoid
0
,
mesh & & &
1 ,@' 1 num2str ,
text
10@' 1 num2str 0
case
axes 1. &
1 +
+ +
+
& & & ellipsoid
0
,
mesh & & &
1 ,@' 1 num2str ,
text
+ 10@' 1 num2str 0
Matlab
Ejemplo: mejora de gráficos 2D con
objetos 3D
case
axes 1. &
1 +
+
+
+
& & & ellipsoid
0
,
mesh & & &
1 ,@' 1 num2str ,
text 3 +
10@' 1 num2str 0
case
axes 1. &
1 +
+
+
+
& & & ellipsoid
0
,
mesh & & &
1 ,@' 1 num2str ,
text 3 +
+ 10@' 1 num2str 0
end
colormap
axis equal off
end
Matlab
Ejemplo: mejora de gráficos 2D con
objetos 3D
1
b/a = 1 c/a = 1
0.9
0.8
b/a = 0.5 c/a = 1
c/a = 1
0.7
V
b/a = 1 c/a = 0.5
0.6
0.5
b/a = 0.5 c/a = 0.5
0.4
c/a = 0.5
0.3
0.2
0.5
0.6
0.7
0.8
b/a
Matlab
0.9
1
Rotación y traslación de objetos 3D:
ángulos de Euler
!"#
*
(
(
Matlab
Rotación y traslación de objetos 3D:
ángulos de Euler
φ ψ
2
χ
5
)
)
)
φ
ψ
χ
5
$
$ %
Matlab
2
Rotación y traslación de objetos 3D:
ángulos de Euler
function -Q R S . * 5 ,
> >
* -cos
Icos > =cos
Isin > sin
/
cos > Isin > 4sin > Isin
Icos >
cos > Icos > =sin > Isin
Isin >
=sin > Icos
/
sin > Isin > =cos > Isin
Icos >
sin > Icos > 4cos > Isin
Isin >
cos > Icos
./
Q *
I 4
I 4
I04 /
R *
I 4
I 4
I04 /
S *
I 4
I 4
I04 0/
Matlab
0
0
Rotación y traslación de objetos 3D:
generación de Toro
Torus
)
(
− ≤ ≤ 4
$
A≤θ≤ π
'
&
(
!
$
(
D
Matlab
&T &
real
Rotación y traslación de objetos 3D:
generación de Toro
function -Q R S. * 1
(
* linspace (= (4 A /
> * linspace A Ipi
/
* EIcos > /
* EIsin > /
0 * real sqrt O = sqrt %O 4 %O =( %O
Q * - ./
R * - ./
S * -0 =0./
Matlab
/
Rotación y traslación de objetos 3D:
generación de Toro
(
2
2$
+
6
6 L
;A°
)
φ * ;A°
6 L
;A°
)
ψ * ;A°
6 L
;A°
)
ψ * ;A°
φ * ;A°
)
!
colormap
* A%
;A°
* A%B
&
Matlab
Rotación y traslación de objetos 3D:
generación de Toro
-Q R S. * 1
A% A%B /
* -A piP piP ./ > * -A A A./ > * -piP A piP ./
* A/ * A/ 0 * A/
for N * +3
subplot
N
if N**
mesh Q R S
else
mesh Q R S
hold on
-Q R S . * 5 ,
N=
> N=
> N=
0 Q R S/
mesh Q R S
end
Matlab
Rotación y traslación de objetos 3D:
generación de Toro
switch N
case
text A%9 =A%9 E1
E
case
text A%9 =A%9 EU > * ;AU E
case
text A%9 =A%9 EU * ;AU E
case 3
text A%9 =A%9 % 9 EU * ;AU E
text A%99 =A%9 EU > * ;AU E
end
colormap -A A A.
axis equal off
grid off
end
Matlab
Rotación y traslación de objetos 3D:
generación de Toro
Torus
φ = 60°
ψ = 60°
ψ = 60°
φ = 60°
Matlab
Creación de gráficos interactivamente
5
<
(
2$
Seleccionar variable(s)
+ botón derecho
Seleccionar tipo de gráfico
Matlab
Creación de gráficos interactivamente
+
TT J*9A/
TT *
J /
TT *$
- .P
/
(
(
(
V N
%
2.5
(
2$
2
1.5
1
0.5
0
-0.5
-1
-1.5
-2
-2.5
0
5
10
15
20
25
30
Matlab
35
40
45
50
Creación de gráficos interactivamente
$
"
2$
(
Más ayuda
Matlab
Creación de gráficos interactivamente
@
2$
Matlab
Creación de gráficos interactivamente
5
$
$
Matlab
2$