________________________________________________________________________________
Inhalt....: Animierter Kameraflug in 3D (Animation 3D)
Kategorie.: Grafik
Mathematik: Grafik
MuPAD.....: 3.1.1
Datum.....: 2005-04-04
Autoren...: Kai Gehrs <acrowley@mupad.de>
Funktionen: plot, plot::Function3d, plot::Camera, BackgroundStyle, TopBottom
Funktionen: TopBottom, Width, Height, Axes, Origin, AxesTips, Header, Frames
Funktionen: plot::Scene3d
________________________________________________________________________________
Animierter Kameraflug in 3D
Dieses Arbeitsblatt demonstriert den Einsatz von MuPAD Grafikfunktionen und Grafikoptionen
anhand eines Beispiels.
Wir benutzen eine eigene Kamera, um den 3D-Graphen einer Funktion zu betrachten. Wir
übergeben der Funktion plot::Camera zuerst den Punkt, an dem sich die Kamera befinden
soll. Als nächstes bestimmen wir den Blickpunkt der Kamera, auf den sie gerichtet sein soll.
Zuletzt wird noch der Öffnungswinkel der Kamera angegeben.
Im folgenden zeichnen wir zwei Szenen. Die erste Szene zeigt die Sicht auf unsere Funktion
f, die MuPAD standardmässig wählt. Die zweite Szene zeigt die Sicht auf die Funktion aus
der Sicht der angegeben Kamera:
f:= plot::Function3d(sin(x) + y^3 + 2*exp(-3*x^2 - 20*y^2),
x = -PI..PI,
y = -1 .. 1,
Submesh = [2, 2]):
Kamera:= plot::Camera([-3, -4, 8], [0, 0, 0], PI/7):
Szene1:= plot::Scene3d(f, Header = "MuPAD Standardansicht"):
Szene2:= plot::Scene3d(f, Kamera,
Header = "Ansicht durch eigene Kamera"):
plot(Szene1, Szene2,
Width = 170, Height = 100,
BackgroundStyle = TopBottom, Axes = Origin, AxesTips):

Wir setzen unsere Kamera an eine andere Position, indem wir direkt auf das Attribut
Position der Kamera zugreifen:
Kamera::Position := [7, -5, 6]:
plot(f, Kamera,
Width = 170, Height = 120,
BackgroundStyle = TopBottom, Axes = Origin, AxesTips):

Wir richten die Kamera auf die Spitze im Zentrum und vergrößern dieses Detail, indem wir den
Öffnungswinkel des Zoomobjektes verkleinern (von PI/7 auf PI/20):
Kamera::FocalPoint := [0, 0, 1]:
Kamera::ViewingAngle := PI/20:
plot(f, Kamera,
Width = 170, Height = 120,
BackgroundStyle = TopBottom, Axes = Origin, AxesTips):

Wir erzeugen einen Kameraflug durch die gesamte grafische Szene, indem wir die Position der
Kamera animieren. Hierzu definieren wir die Kamera allerdings vollständig neu:
Kamera := plot::Camera([-15 + 3*a, 4 - a, 3 + (a - 4)^2],
[0, 0, 1.5], PI/6, a = 0..8):
plot(f, Kamera,
Width = 170, Height = 120,
BackgroundStyle = TopBottom, Axes = Origin, AxesTips):

Erscheint die Animation nicht fließend genug (d.h. das Bild "ruckelt" ein wenig), so kann die
Anzahl der Einzelbilder über das Attribut Frames heraufgesetzt werden. Mit 240 Bildern
(=Frames) für eine Animation von 10 Sekunden (Voreinstellung, kann mittels TimeRange
geändert werden) erhalten wir eine Bildrate von 24 Bilder pro Sekunde:
Kamera := plot::Camera([-15 + 3*a, 4 - a, 3 + (a - 4)^2],
[0, 0, 1.5], PI/6, a = 0..8,
Frames = 240):
plot(f, Kamera,
Width = 170, Height = 120,
BackgroundStyle = TopBottom, Axes = Origin, AxesTips):

________________________________________________________________________________
Anmerkungen:
1. Weitere Anregungen zum Einsatz von MuPAD in der Lehre finden Sie auf unserem WebPortal
MuPAD in Schule und Studium unter: http://schule.mupad.de bzw. http://studium.mupad.de.
________________________________________________________________________________