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