________________________________________________________________________________
Inhalt....: Abwickeln eines Fadens von einem Zylinder (Animation 3D)
Kategorie.: Grafik
Mathematik: Grafik
MuPAD.....: 3.1.1
Datum.....: 2005-04-04
Autoren...: Andreas Sorgatz <sorgatz@sciface.com>
Funktionen: plot::Translate3d, plot::Rotate3d, plot::Cylindrical, plot::Tube
Funktionen: plot::Surface, CameraDirection, Spacing, Margin, AnimationStyle
Funktionen: BackAndForth, Mesh, Submesh, FillColorType, Rainbow, Frames, Axes
Funktionen: Frame, FillColorDirection, piecewise, YAxesVisible, BorderWidth
________________________________________________________________________________
Abwickeln eines Fadens von einem Zylinder
Dieses Arbeitsblatt demonstriert den Einsatz von MuPAD Grafikfunktionen und Grafikoptionen
anhand eines Beispiels.
Die folgenden Grafiken zeigen Schritt für Schritt den Ablauf des Abrollens eines Fadens von
einem Zylinder.
Vorab ein paar Konstanten, die die Szene und Animation steuern.
ZylRadius := 1.8: // Radius des Zylinders
SpiRadius := 0.2: // Radius des Fadenquerschnitts
SpiWindungen := 5: // Anzahl der Windungen auf dem Zylinder
Pi := float(PI): // PI sollte numerisch verwendet werden
MaxZeit := 2*Pi*SpiWindungen: // mathematische Zeit zum Abwickeln
Der Zylinder steht zunächst (senkrecht) im Nullpunkt und wird linear in x-Richtung
verschoben und entsprechend der Windungszahl des Fadens rotiert. So entsteht
der Effekt des Rollens auf einer Ebene. Richtig sichtbar wird der Effekt jedoch
erst mit einer entsprechenden Färbung der Zylinderoberfläche.
Zylinder:=
plot::Translate3d( [t,0,0], t = 0..MaxZeit,
plot::Rotate3d( w, w=0..SpiWindungen*2*Pi,
plot::Cylindrical(
[ZylRadius-0.01,phi,z],
phi=0..2*PI,
z=-SpiRadius..2*Pi+SpiRadius,
FillColorType = Rainbow,
FillColorDirection = [0,1,1],
Mesh = [4,4],
Submesh = [6,0]
)
)
)
![]()
Zum Zeitpunkt 't' ist der Faden linker Hand (z<=t) abgewickelt - also linear - und rechter
Hand (z>t) noch aufgewickelt. Letzteres wird durch eine einfache Spirale (sin und cos)
modelliert:
SpiFunX:= (z,t) -> piecewise( [z<=t, z ],
[z>t, (ZylRadius+SpiRadius)*sin(z-t)+t] );
SpiFunY:= (z,t) -> piecewise( [z<=t, (ZylRadius+SpiRadius)],
[z>t, (ZylRadius+SpiRadius)*cos(z-t) ] )
![]()
![]()
Hier wird plot::Tube zur Darstellung des Fadens verwendet, da dies oft glatter und
schöner aussieht als bei der Verwendung einer Kurve in der Form plot::Curve3d.
Allerdings ist der Rechenaufwand auch höher. MuPAD Grafikobjekte erlauben auch
die Verwendung stückweise definierter Funktionen.
Spirale:= plot::Tube(
[SpiFunX(z,t), SpiFunY(z,t), 1/SpiWindungen*z], SpiRadius,
z = 0..MaxZeit,
t = 0..MaxZeit,
FillColorType = Dichromatic,
FillColor = RGB::Red,
FillColor2 = RGB::Yellow,
VLinesVisible = FALSE,
Mesh = [99, 3]
)

Wir deuten noch eine Ebene an, auf der sich der Zylinder abrollt. Die Lebenszeit
(TimeRange) beginnt 0.3 Sekunden vor dem Start des Abrollens und ist ent-
sprechend länger, um am Anfang und Ende der Animation je eine kleine Pause
zu erzeugen:
Ebene:= plot::Surface(
[x, ZylRadius+SpiRadius+SpiRadius/2, y],
x = 0-2*ZylRadius..MaxZeit+2*ZylRadius,
y = 0-ZylRadius..2*Pi+SpiRadius+SpiRadius/2+ZylRadius,
FillColorType = Dichromatic,
FillColor = RGB::Yellow.[0.7],
FillColor2 = RGB::Blue.[0.7],
TimeRange = -0.3..5+0.3,
Mesh=[11,5]
)
![]()
Nun zeichnen wir alles: ~5 Sekunden Animation mit 20 Bildern pro Sekunde. Die
Achsenmarkierungen (XTicksDistance) werden noch nach persönlicher Vorliebe
gesetzt und wir schauen von vorn auf die Szene. Die Berechung dauert auf meinem
Laptop ca. 30 Sekunden.
Um das Erzeugen der Animation zu beschleunigen, kann man die Anzahl der
Bilder pro Sekunde (Frames) herunsetzen.
plot(
Ebene, Zylinder, Spirale,
Height = 80,
Width = 180,
TimeRange = 0..4,
Frames = 4*20,
XTicksDistance = 1,
YAxisVisible = FALSE,
Axes = Frame,
CameraDirection = [0, -250, 2*Pi+SpiRadius],
BackgroundStyle = Pyramid,
Spacing = 0, Margin = 0, BorderWidth = 0.5,
AnimationStyle = BackAndForth
):

________________________________________________________________________________
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.
________________________________________________________________________________