MuPAD Education Group: Kostenlose Materialen für MuPAD Pro:
www.sciface.com/education, schule.mupad.de, studium.mupad.de, mupad.zum.de.

________________________________________________________________________________

 

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]

   )

)

)

math

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)  ] )

math

math

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]

)

math

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]

)

math

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

):

MuPAD graphics

________________________________________________________________________________

 

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.

________________________________________________________________________________

 

 

MuPAD Education Group: Kostenlose Materialen für MuPAD Pro:
www.sciface.com/education, schule.mupad.de, studium.mupad.de, mupad.zum.de.