MATLAB Dreidimensionale Grafiken - EAH-Jena
Transcrição
MATLAB Dreidimensionale Grafiken - EAH-Jena
MATLAB Dreidimensionale Grafiken 1. Dreidimensionale Kurven plot3(x,y,z) funktioniert analog zu plot(x,y), d.h. x, y, z müssen Vektoren gleicher Länge sein. Dann erzeugt MATLAB eine Kurve durch Verbinden der Punkte (xi, yi, zi) und stellt dann eine zweidimensionale Projektion dieser Kurve dar. grid erzeugt Gitterlinien, grid off unterdrückt sie. Eine eingefärbte Fläche erhält man durch fill3(x,y,z,’color’) Bsp. x=[1 3 15], y=[4 0 8], z=[3 0 10] plot3(x,y,z) 1. Stellen Sie ein Quadrat mit den Eckpunkten (1,4,2), (1,6,2), (3,4,2) (3,6,2) dar. Anleitung: Erzeugen Sie die drei Vektoren der jeweiligen x-, y- und z-Komponenten. 2. Füllen Sie das Quadrat rot aus. Kippen Sie das Quadrat, indem Sie die Höhe in den Punkten (3,4) und (3,6) auf 4 setzen. 3. Zeichnen Sie einen Würfel, der das Quadrat aus 1. als Grundfläche hat. 4. Darstellung des Möbius’schen Bandes (Papierstreifen, der an den Enden um 180° gedreht und dann zusammengeklebt wird) Geometrisch: Durch A=(5,0,-1) und B=(5,0,1) ist eine vertikale Strecke der Länge 2 gegeben. Diese Strecke wird nun so um die z-Achse rotiert, daß sich ihr Mittelpunkt M gleichmäßig auf dem Kreis (Leitkreis) mit Radius 5 und Zentrum (0,0,0) in der Grundrißebene Bewegt. Gleichzeitig wird die Strecke um M in einer Ebene, die die z-Achse enthält, gedreht, und zwar soll sich die Strecke bei Rückkehr zum Ausgangspunkt um 180° gedreht haben. Die Punkte des Bandes sind vektoriell G P = ((5 + λ cos(ϕ / 2 ))(cos ϕ ),(5 + λ cos( ϕ / 2 ))sin( ϕ ), λ sin(ϕ / 2 )) moebius.m phi=linspace(0,2*pi); xm=5*cos(phi); ym=5*sin(phi); zm=zeros(size(xm)); ro=5+cos(phi/2); xo=ro.*cos(phi); yo=ro.*sin(phi); zo=sin(phi/2); ru=5-cos(phi/2); xu=ru.*cos(phi); yu=ru.*sin(phi); zu=-zo; plot3([xu;xo],[yu;yo],[zu;zo]);hold on; plot3(xu,yu,zu,xm,ym,zm,xo,yo,zo); axis([-5 5 -5 5 -5 5]); pause 2. Darstellung von Funktionengebirgen mit mesh (Maschen) mesh(x,y,z) stellt ein Funktionengebirge in Maschen-Ansicht dar. Mit den beiden Vektoren x und y wird durch [xx,yy]=meshgrid(x,y) ein Gitter von Stützstellen in der x-y-Ebene erzeugt. Die Matrix z= f(xx,yy) enthält die Funktionswerte einer Funktion z=f(x,y) in den mit meshgrid erzeugten Gitterpunkten. Damit die Dimensionen übereinstimmen, muß size(z)=[m,n] mit length(x) = n und length(y) = m gelten, Haben x und y äquidistante Stützstellen, reicht mesh(z) 5. Was erhält man mit x=[1 3]; y=[4 5 6], z=2*ones(3,2), z(2,1)=3, z(2,2)=3 ; mesh(x,y,z) 6. Zeichnen Sie über dem Bereich [-1, 1] x [-1, 1] die Funktion x^2+y^2. 7. Sombrero: Stellen Sie über dem Bereich [-8, 8] x [-8, 8] die folgende Funktion dar R = sqrt ( x.^ 2 + y.^ 2 ) + eps; R Abstand von ( 0, 0) Addition von eps zur Vermeidung der Nulldivision z = sin( R)./ R; mesh( z ) ( bzw. mesh(x,y,z) ) 1 3. Weitere Darstellungsmöglichkeiten MATLAB enthält eine Beispielfunktion peaks.m, definiert über dem Bereich [-3, 3] x [-3,3] mit Gitterabstand 1/8, wobei z nach der Vorschrift z = 3*(1-x).^2.*exp(-(x.^2) - (y+1).^2) - 10*(x/5 - x.^3 - y.^5).*exp(-x.^2-y.^2) - 1/3*exp(-(x+1).^2 - y.^2) berechnet wird. z ist also eine 49 x 49 - Matrix (da x und y je 49 Elemente enthalten). Eine Profil-Darstellung ( d.h. jede Spalte der Matrix als eine Kurve mit äquidistanter x-Achse) erhält man durch plot(z). Den dreidimensionalen Effekt der Darstellung erhält man durch mesh(z) oder auch surf(z). Die schwarzen Gitterlinien beseitigt man durch shading flat. Einen Lichteffekt erhält man durch surfl(z); colormap(hot). Die verwendeten Farben beeinflußt man durch die vordefinierten bzw. eigene colormaps, z.B cool, bone, gray, copper. 4. Höhenlinien Höhenlinien sind Kurven auf dem Funktionsgebirge mit gleichem Funktionswert. MATLAB liefert die Projektion dieser Linien in die x-y-Ebene, wobei gleiche Höhen mit gleichen Farben wiedergegeben werden. contour(z) ⎛ x2 y2 ⎞ 8. Zeichnen Sie über dem Gebiet [-2, 2] x [-2, 2] das hyperbolische Paraboloid z = ⎜ − 2 + 2 ⎟ / p für b ⎠ ⎝ a verschiedene Parameterwerte a, b, p. Erzeugen Sie eine Darstellung von Höhenlinien. 5. 3D-Darstellungen über einem vorgegebenen Gitternetz 9. Stellen Sie folgende über einer Ebene gemessene Temperaturverteilung grafisch dar. Erzeugen Sie sich dazu zunächst die Matrix der Gitterpunkte in der Ebene entsprechend der Stützstellen. x 1 1 1 2 2 2 3 3 3 y 0 2 4 3 3 6 3.5 4 7 T 15 17 19 16 18 20 15 19 24 Hinweis: Erzeugen Sie das Gitter durch : 1 X=1 1 2 2 2 3 3 3 0 3.0000 3.5000 und Y = 2.0000 3.0000 4.0000 4.0000 6.0000 7.0000 mesh(x,y,t) bzw. surf(x,y,z) 6. Dreidimensionale Kurven in Parameterdarstellung Bsp.: t=0:1/50:5, plot3(sin(t.^2),cos(t.^2),t) 10. Stellen Sie eine Schraubenlinie dar, ihre Parameterdarstellung ist gegeben durch x=cos(phi), y=sin(phi), z=(1/(2*pi))*phi. Mit phi=linspace(0,10*pi,200) erhält man 5 Umdrehungen. 2