Academia.eduAcademia.edu

Gráficos 3D en MATLAB

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$