XHTML SVG CSS PHP

Dr. O. Hoffmann

SVG- und PHP-Labor

Alles ist in Bewegung und nichts bleibt stehen.
Heraklit von Ephesus

Animation von beschleunigten Bewegungen

Mit keySplines wurden ja schon beschleunigte Bewegungen vorgestellt. Nun soll umgekehrt vorgegangen werden, bekannt ist die Kraft, Beschleunigung oder die ganze Bewegungsgleichung und die beschleunigte Bewegung soll dargestellt werden. Die Bewegung soll also animiert werden.
Zum Grundverständnis seien erst einmal die physikalischen Grundlagen betrachtet: Klassische Mechanik.

Bei den Newtonschen Axiomen heißt es:
1. Jeder Körper beharrt in seinem Zustand der Ruhe oder der geradlinig gleichförmigen Bewegung, wenn er nicht durch einwirkende Kräfte gezwungen wird, seinen Zustand zu ändern.
2. Die Änderung der Bewegung ist der bewegenden Kraft proportional und geschieht in Kraftrichtung.
3. Die Wirkung zweier Körper aufeinander ist vom Betrag gleich, aber von entgegengesetzter Richtung.
4. Kräfte addieren sich wie Vektoren, es gilt das Superpositionsgesetz.
Von Form, Größe und Drehbewegungen und Verformungen abgesehen, wird das Modell eines Massenpunktes gewählt. Damit ergibt sich kurz:
1. Aus Kraft F = 0 folgt m v konstant, m die Masse, v = dr/dt die Geschwindigkeit.
2. Mit dem Impuls p = mv gilt F = dp/dt.
3. F(i,j) = - F(j,i), wobei hier (i,j) steht für Kraft von Punkt i auf Punkt j.

Bei konstanter Masse ergibt sich die bekannte Gleichung nach Newton:
F = m a mit der Beschleunigung a = dv/dt als dynamische Grundgleichung.

Für konservative Kraftfelder kann ein Potential angegeben werden oder umgekehrt ein konservatives Kraftfeld ist der negative Gradient eines Potentials.
Beim Vorhandensein von Potentialen gibt es neben dem Formalismus nach Newton weitere alternative Formalismen, etwa nach Lagrange und nach Hamilton. Die Formalismen eignen sich besonders für komplexere Systeme von Massepunkten. Der Hamilton-Formalismus wird sinngemäß auch in die Quantenmechanik übertragen.

Freier Fall (und allgemein Verwendung von keySplines)

Als erstes sei der Fall einer konstanten Beschleunigung betrachtet, also a konstant. Das tritt etwa auf, wenn man in der Nähe des Erdbodens etwas fallenläßt (man kann sich denken, daß sich die Kraft deutlich ändern muß, wenn man vom Erdboden weiter weg ist als etwa der Erddurchmesser). Das nennt sich auch freier Fall.
Also F = m a0 = m a = m dv/dt somit
v = a0 t + v0 und schließlich
r = a0/2 t2 + v0 t + s0
Somit ist diese Bewegungsgleichung so einfach, daß wir sie komplett mit keySplines darstellen können, das ginge sogar noch bei einer Beschleunigung a = a0 + a1 t, weil uns kubische Bézierkurven zur Verfügung stehen, was wir hier aber nicht betrachten wollen. Betrachten wir zwei Anfangsbedingungen, zum einen, daß die Darstellung am höchsten Punkt mit v = 0 beginnt und die andere, wenn s = 0 mit einer der Kraft entgegengerichteten Anfangsgeschwindigkeit. In relativen Einheiten ergibt sich (siehe Abschnitt Kurven 10a,b) für die Kontrollpunkte der ersten Situation bei einer Identifikation t = z:
s(0) = 0, s(1) = 1, v(0) = 0, ds/dz = 2z,
s = z2 und damit
ds(1)/dz = 2 = 3 - 3Ps(2) oder Ps(2) = 1/3 und
ds(0)/dz = 0 = 3 Ps(1)
dz/dz =1 = 3 - 3Pz(2) = 3 Pz(1) oder Pz(1) = 1/3 und Pz(2) = 2/3
Also ist der zugehörige Wert von keySplines:
1/3 0 2/3 1/3.
Für die Kontrollpunkte der zweiten
Situation bei einer Identifikation t = z:
s(0) = 0, s(1) = 1, v(1) = ds(1)/dz = 0 = 3 - 3Ps(2) oder Ps(2) = 1
s = 2z - z2
ds(0)/dz = 2 = 3 Ps(1) oder Ps(1) = 2/3
Also ist der zugehörige Wert von keySplines:
1/3 2/3 2/3 1.
Eine Animation eines herunterfallenden Balles, der auf den Boden auftrifft und elastisch zurückspringt, entspricht also den keySplines 1/3 0 2/3 1/3;1/3 2/3 2/3 1
Zur Dekoration wird noch eine horizontale Bewegung und eine Drehbewegung überlagert (siehe oben, Superposition, die Bewegungen in verschiedene Richtungen sind voneinander separierbar): Animation freier Fall,
Quelltext zur Animation freier Fall.

Freier Fall und Schiefer Wurf unterscheiden sich hinsichtlich der Animation nur in den Anfangsbedingungen. Wenn ein anderer Startzeitpunkt gewählt wird und die Animation bis dahin unsichtbar bleibt, wird der freie Fall zum schiefen Wurf.

Hinsichtlich der keySplines läßt sich die Methode auch recht leicht verallgemeinern. Um diese überhaupt sinnvoll einzusetzen, ist es notwendig, daß die betrachtete Funktion zwischen den beiden Punkten, zwischen denen interpoliert werden soll, streng monoton ist, ferner sollte die Form der Funktion natürlich zwischen den beiden Punkten so sein, daß sie sich gut mit einer kubischen Funktion nähern läßt. Weil man auch den Zeitverlauf mit einer kubischen Funktion beschreibt, ergeben sich so einige Möglichkeiten.

Ist f(s) mit s von 0 bis 1 eine solche Funktion (egal ob für die Zeit oder den zu animierenden Wert), so transformiert man zu:
h(s) = (f(s)-f(0))/(f(1)-f(0))
Die in keySplines zu notierenden Punkte sind dann
P(1) = dh(0)/ds/3 und P(2) = 1 - dh(1)/ds/3
oder
P(1) = df(0)/ds/3/(f(1)-f(0)) und P(2) = 1 - df(1)/ds/3/(f(1)-f(0)).
Zulässig ist für keySplines auch noch eine Konstante für den animierten Wert, da können die gleichen Kontrollpunkte wie für die Zeit genommen werden, zum Beispiel für Zeit und animierten Wert
P(1) = 0 und P(2) = 1.

Das Teilen, um von f nach h zu kommen, impliziert, daß es sich bei f um eine skalare Funktion handelt. Bei Vektoren verwendet man am besten den euklidischen Abstand vom Anfangspunkt, bei der Bewegung entlang eines Pfades mit animateMotion verwendet man die Pfadlänge bezogen auf den Anfangspunkt. Bei Listen müßte man entsprechend ein skalares Maß für den Abstand einführen, um sinnvoll etwas rechnen zu können.

Harmonischer Oszillator

Meist können Bewegungsgleichungen nur näherungsweise dargestellt werden, da die Bewegung nicht exakt den Möglichkeiten eines splines entspricht. Als grobe Näherung kann man dann erstmal r(t) mit zahlreichen Stützstellen für gleichbleibende Zeitabstände berechnen und diese einfach als values angeben. Dies kann meist bereits als brauchbare Animation genutzt werden, weil sich das menschliche Auge bei Bewegungen leicht bei Feinheiten täuschen läßt. Gleichwohl kann dies auch als Ausgangspunkt genommen werden, um insbesondere keySplines auszurechnen, eventuell sogar um die bislang äquidistanten keyTimes zu modifizieren, um an kritischen Stellen genauer zu werden. Wegen der bereits genannten Einschränkungen des Wertebereiches von keySplines stellen sich keySplines allerdings meist als numerisch unpraktikabel dar, meist wird man doch nur die Anzahl der Stützstellen erhöhen, um genauer zu werden.
Dazu sei eine harmonische Schwingung betrachtet.
Diese tritt bei vielen Bewegungsabläufen näherungsweise auf, wenn die Auslenkungen aus der Ruhelage klein sind, etwa bei dem Pendel einer mechanischen Uhr oder bei einem Gewicht an einer Feder, aber auch in entsprechender Form bei Schwingungen von Molekülen und Festkörpern, beim Schwingquarz im Oszillator einer Uhr. Sei die Schwingung in der x-Richtung. Die Kraft ist dann Fx = m ax = -k x entsprechend einem Potential von V(x) = k x2/2.
Mittels der Differentialrechnung kann eine solche Differentialgleichung gelöst werden, worauf ich hier nicht weiter eingehe. Wie leicht überprüft werden kann, erfüllen sinus und cosinus die Bedingung, oder genauer
x(t) = A cos(wt+p), dabei hängen die Amplitude A und die Phase p von den Anfangsbedingungen ab und es gilt w2 = k/m
Die Zeitdauer für einen kompletten Umlauf ist 2π/w, so daß über die Angabe des Attributes dur die Zeitdauer bequem festgelegt werden kann - wird diese festgesetzt, folgt daraus die sogenannte Kreisfrequenz w. Das Vorzeichen von w bestimmt dann übrigens, wie herum die Schwingung abläuft.
Da erstmal ohne keySplines vorgegangen werden soll, werden besser um die 20 bis 50 Werte verwendet, um die Bewegung anzunähern:
Animation harmonischer Oszillator,
Quelltext zur Animation harmonischer Oszillator.
Dem aufmerksamen Beobachter sollte an dieser Stelle eigentlich aufgefallen sein, daß sich ein harmonischer Oszillator ebenfalls durch eine animierte Rotationstransformation realisieren läßt, bei der man dafür sorgt, daß die y-Richtung auf 0 skaliert ist. Allerdings sind dann die bewegten Objekte nicht mehr zu sehen, was dann auch wieder langweilig ist (das ändert sich allerdings in SVG (tiny) 1.2, weil es dort einfache Eigenschaften gibt, mit denen trotz einer solchen Skalierung etwas sichtbar bleibt).
Der Oszillator kann natürlich auch in einer anderen Richtung mit einer anderen Phase oszillieren. Soll die fortschreitende Trajektorie dargestellt werden, so kann dafür stroke-dasharray animiert werden (blaue Trajektorie), was aber beim adobe-plugin nicht funktioniert, bei Opera 9 hingegen schon. Bei der goldgelben Trajektorie ist stroke-dashoffset animiert, das geht auch beim adobe-plugin, erfordert aber etwas mehr Überlegung vom Autor:
Harmonischer Oszillator mit gemalter Trajektorie,
Quelltext zum Harmonischen Oszillator mit Trajektorie.
Diese Näherung ist natürlich noch nicht wirklich prickelnd, aber als schnelle Problemlösung schon mal ein guter Ansatz.

Aus dem Abschnitt Animation wird nun keySplines verwendet, das Beispiel einer affinen Funktion für t(u), also äquidistante keyTimes und so ergibt sich der Unterschied zwischen der Animation mit und ohne keySplines:
Vergleich Animation harmonischer Oszillator mit und ohne keySplines 1,
Quelltext zum Vergleich mit und ohne keySplines 1.
Rot ist die Animation ohne keySplines, blau die mit. Das gelbe Quadrat stellt eine exakte harmonische Schwingung dar, gewonnen aus einer Drehung, leider allerdings so nicht allgemein brauchbar, lediglich für diesen Präzisionsvergleich nützlich. In der URI können für die Zeitdauer eines Umlaufes in Sekunden der Parameter dur angegeben werden und für die Anzahl der values der Parameter anz, genauer gibt es 2 anz + 1 values von 0 bis 2 anz. Während um anz = 2 die Unterschiede noch sehr groß sind, ist bereits ab etwa anz = 20 kaum noch ein Unterschied zu sehen. Bei derartigen Animationen kann man also leicht die Ungenauigkeiten durch eine etwas größere Anzahl von values kompensieren.
Um einen Anhaltspunkt zu bekommen, wieviele values ohne keySplines gebraucht werden, um etwa die gleiche Genauigkeit wie mit zu erreichen, kann die Anzahl der values unabhängig voneinander eingestellt werden. Dazu ist ein weiterer Parameter num mit gleicher Bedeutung wie anz verfügbar, aber diesmal nur für die Animation ohne keySplines, während anz für die Animation mit keySplines vorbehalten bleibt. Mit num=100 stellt man fest, daß mit etwa anz = 8 praktisch keine bemerkenswerten Abweichungen mehr zu sehen sind, die keySplines geben die Bewegung also praktisch korrekt wieder. Nun reduzieren wir nun, um zu sehen, ab wann ohne keySplines nennenswerte Abweichungen eintreten. Praktisch ab num = 36 sind da auch keine Unterschiede mehr zu sehen. Zumindest bei diesem Bewegungstyp läßt sich da an der Datenmenge mit keySplines nicht viel verbessern.
Bei komplizierteren Bewegungen muß man natürlich gucken, wo große Beschleunigungen auftreten. Um eine brauchbare Genauigkeit zu erreichen, sollten in dem Bereich immer die keyTimes sehr klein gewählt werden.
Vergleich Animation harmonischer Oszillator mit und ohne keySplines 2,
Quelltext zum Vergleich mit und ohne keySplines 2.

Mittels einer simplen Drehung läßt sich aus einem harmonischen Oszillator auch schnell etwas ähnliches wie ein Foucaultsches Pendel erzeugen. Genaue Anpassung von Parametern sei hier dem Leser mit Hilfe eines physikalischen Lehrbuches zur Übung überlassen: Foucaultsches Pendel,
Quelltext zur Animation Foucaultsches Pendel.

Wirkt nun auch noch eine Kraft in y-Richtung mit gleicher Formel, aber anderem k, so erhält man eine Lissajous-Figur. Da der Raum drei Dimensionen hat, kann auch in der dritten Richtung noch eine Kraft wirken. Doch wie kann das in einer zweidimensionalen Graphik dargestellt werden? Klar, die Größe des bewegten Objektes kann auch noch animiert werden: Animierte Lissajous-Figur in drei Dimensionen,
Quelltext zur Animation Lissajous-Figur.
Feinheiten wie den Einsatz von keyTimes, keySplines, das Zeichnen der Kurve und dekorative Gesichtspunkte seien auch hier dem Leser zur Übung überlassen. Für eine vierte Dimension könnte man statt die Größe des Objektes komplett zu ändern, bei einer Ellipse oder besser noch einem Rechteck Höhe und Breite getrennt schwingen lassen, für weitere Freiheitsgrade kann man zum Beispiel die Farbe und die Opazität des animierten Objektes ändern. Weitere Möglichkeiten gibt es, wenn die Symmetrie des bewegten Objektes reduziert wird, so kann etwa noch eine Drehschwingung integriert werden. So sollte man spielend zu einer Visualisierung von Schwingungen in mindestens sieben Dimensionen kommen.
Die höhere theoretische Physik jongliert ja mit noch mehr Dimensionen, diese aber zu visualisieren, dürfte dann schon etwas kniffliger werden, ist aber nicht unmöglich.

Wenn die normalen Lissajous-Figuren betrifft, wie bereits im Bereich Kurven dargestellt, so kann auch animiert werden, wie diese gezeichnet werden, dazu kann ausgenutzt werden, was im Bereich Animation im Abschnitt 'Kurven Zeichnen animieren' erläutert wurde (hier wird stroke-dashoffset animiert, damit man auch mit dem adobe-plugin was sehen kann):
Eine Lissajous-Figur zeichnen,
Quelltext zur Zeichnung einer Lissajous-Figur.
Mit dem gleichen Skript zur Darstellung einer Lissajous-Figur, mittels der GET-Parameter dur, anz, kx und ky kann angegeben werden, welche Figur dargestellt wird. dur ist die Animationsdauer bis zur Wiederholung in Sekunden (zwischen 20 und 1000 zu wählen, sonst ist sie 60). Da die Bogenlänge nur großzügig geschätzt ist, scheint die Zeichnung immer etwas vor dem Ende dieser Zeit vollendet zu sein, nach Ablauf der Zeit beginnt das Zeichnen von vorne. anz ist die Anzahl der Kontrollpunkte (zwischen 20 und 250 zu wählen, sonst ist sie 60). Bei niedrigen Werten für kx und ky reichen auch wenige Kontrollpunkte, bei hohen Werten muß auch anz hoch sein, sonst kommt es zu sichtbaren Fehlern bei der Darstellung. Mit 2π multipliziert ergeben kx und ky die Kreisfrequenzen (jeweils zwischen 1 und 30 zu wählen, sonst zufällig zwischen 1 und 5). Bei nicht ganzzahligen, ungünstigen Verhältnissen gibt es natürlich keine geschlossene Kurve - auch dann muß vor der Wiederholung der Animation etwas gewartet werden. Bei nicht teilerfremden kx und ky sollte wirklich durch den ganzzahligen Teiler dividiert werden, sonst werden natürlich die Wartezeiten länger und das Verhältnis von Dateigröße zu Genauigkeit wird schlechter als notwendig. Die Phasen werden immer zufällig bestimmt, damit keine Langeweile aufkommt.
Weil die Ableitung der Kurve ohnehin berechnet wird, habe ich mich darauf beschränkt, mit einer entsprechenden Summe den Bogen abzuschätzen: Eine Lissajous-Figur zeichnen mit besser geschätzter Bogenlänge,
Quelltext zur Zeichnung einer Lissajous-Figur (mit besser geschätzter Bogenlänge).
Mit dem Attribut pathLength kann die geschätze Pfadlänge explizit angegeben werden, wonach alles exakt stimmen sollte. Das klappt bei Opera 9, das adobe-plugin und Opera 8 ignorieren dieses für die tägliche Praxis enorm wichtige Attribut allerdings.

Bei dieser einfachen Animation hat das Zeichnen immer die gleiche Geschwindigkeit. Verbessern kann man das Verhalten natürlich, wenn man die Bogenlänge numerisch bestimmt, und so zum einen eine bessere Abschätzung für diesen wichtigen Parameter hat, zum anderen aber auch einen Zugang hat zum Zeichnen mit veränderlicher Geschwindigkeit.
Folgendes Beispiel bietet dafür einen Ansatz, wobei bewegtes Objekt und gezeichnete Trajektorie miteinander verglichen werden. Orange ist eine Trajektorie mit konstantem Betrag der Geschwindigkeit, blau die mit geschätztem Betrag der Geschwindigkeit, ein Kreis als Objekt zeigt näherungsweise die Bewegung, allerdings ohne keyTimes oder keySplines, wie bei den Trajektorien auch: Eine Lissajous-Figur zeichnen mit besser geschätzter Bogenlänge und Geschwindigkeit,
Quelltext zur Zeichnung einer Lissajous-Figur (mit besser geschätzter Bogenlänge und Geschwindigkeit).

Ein weiterer netter SVG-Trick kann herausgearbeitet werden, wenn Oszillatoren miteinander gekoppelt werden. Typische Vertreter dieser Art sind gekoppelte Pendel oder gekoppelte Oszillatoren. Die Kopplung vermittele sich wieder über eine harmonische Kraft, also etwa eine Feder. Die Bewegung jeweils eines Oszillators setzt sich zusammen aus zwei Oszillationsbewegungen unterschiedlicher Frequenz, so daß es zu einer Schwebung kommt. Die Amplitude der Bewegung erreicht ein zeitliches Minimum oder wird gar null, um dann wieder anzusteigen. Umgedreht hat der zweite Oszillator dann bei der Amplitude das zeitliche Maximum. In SVG wird das am besten realisiert, indem die jeweiligen Oszillationsbewegungen separiert animiert werden, auch wenn sie die gleiche Koordinate animieren. Hier kann gut mit verschiedenen g-Elementen gearbeitet werden oder auch mit den Attributen additive und accumulate. Als Beispiel ist hier zum einen ein Oszillator gezeigt, bei dem die Bewegung in x- und y-Richtung miteinander gekoppelt sind und zum anderen die klassischen gekoppelten Pendel:
Oszillator mit gekoppelter Bewegung in x- und y-Richtung (Quelltext zum Oszillator mit gekoppelter Bewegung in x- und y-Richtung) ,
gekoppelte Pendel (Quelltext zum gekoppelten Pendel).
Der Leser denkt es sich schon - Anpassung von Parametern, Variation mit verschiedenen Phasen und Amplituden sowie die Realisation im wirklichen Leben bleibt ihm zur Übung überlassen.
In voller Allgemeinheit und Schönheit sieht die Lösung der Bewegungsgleichung übrigens so aus:
x1(t) = a cos(ω1 t + φ1) + b cos(ω2 t + φ2)
x2(t) = - c cos(ω1 t + φ1) + d cos(ω2 t + φ2)
dabei sind a, b, c, d anzupassende Konstanten, die φ sind anzupassende Phasen und die ω sind die Frequenzen.

Manchmal sieht man ja solch ein Schreibtischspielzeug mit Pendeln leicht verschiedener Frequenz, solch Dekoratives können wir natürlich auch leicht zusammenbasteln:
Dekorative Pendel (Quelltext zu dekorativen Pendeln).

Schwingung von ausgedehnten Objekten

Bei harmonischen Schwingungen ausgedehnter Objekte entspricht die eigentliche Schwingung wieder der eines harmonischen Oszillators. Diese Schwingung hat räumlich gesehen allerdings jeweils eine andere Phase, welche wiederum durch seinen Sinus oder Cosinus über die Raumdimensionen gegeben ist:
L(r,t) = A sin(wt+p) sin(kr+q),
r ist dabei die Raumdimension, also gegebenenfalls auch ein Vektor bei mehrdimensionalen Objekten. k ist wie Wellenzahl, diese korrespondiert mit der Frequenz in der Zeitachse. Dabei hängen die Amplitude A und die Phasen p, q von den Anfangsbedingungen ab.

Transversale Schwingungen von Objekten sind einfacher darzustellen als longitudinale, daher geht es erst einmal um erstere. Transversale Schwingungen erfolgen senkrecht zur Ausdehnung des Objektes, longitudinale in Richtung der Ausdehnung.

Altbekannt ist das Problem der Schwingung einer Saite oder allgemein einer länglichen, elastischen Struktur wie eine Kette, ein Gummiband, ein dünner Stab. Die Lösung für eine harmonische Schwingung besteht aus den Funktionen Sinus oder Cosinus für die räumliche und zeitliche Struktur des länglichen, eindimensional genäherten Objektes. Insofern kann die Lösung für eine Gerade einfach als Formel angegeben werden. Für leicht gebogene Kurven kann dies wiederum als Näherung verwendet werden, wobei die transversale Schwingung jeweils senkrecht zur lokalen Richtung der Kurve erfolgt. Diese Richtung ist einfach als Senkrechte zur Ableitung der Kurve zu ermitteln. Diese Näherung wird sicherlich unbrauchbar, wenn die Auslenkung aufgrund der Schwingung in den Bereich der Krümmung der Kurve kommt.

Hinsichtlich der Präsentation mit Vektorgraphik ist ferner die Kurve durch kubische Kurvensegmente anzunähern. Aufgrund des Nyquist-Shannon-Abtasttheorems ist dabei die Anzahl der Kurvensegmente deutlich größer als die Wellenzahl pro Bogenlänge zu wählen, wenn also die Wellenlänge N mal auf die Bogenlänge paßt, müssen deutlich mehr als N Kurvensegmente für die Näherung verwendet werden. Wieviel mehr, hängt auch etwas von der Krümmung der Kurve im Gleichgewicht sowie der Amplitude der Schwingung ab.

Beispiele:
Schwingung einer Kurve (1) (Quelltext zu Schwingung einer Kurve (1))
Schwingung mit Parametern

Parameter:
Typ t: Saite, Bogen, Angel, Welle, Schlaufe
Saite - Gleichgewichtskurve ist eine Gerade
Bogen - Näherungsweise eine Kettenlinie, etwas wie ein Gummiband; die roten Kreise geben den eigentlich korrekten Verlauf einer Kettenlinie oder Seilkurve an, welche durch den Bogen angenähert wird.
Angel - Ähnlich einer Angelrute
Welle - s-förmige Kurve
Schlaufe - stark gekrümmte Kurve
Dämpfung d: 1 ohne Dämpfung, typisch um 0.995.
Runden: r: größer als 0, maximal 100 (große Datei!), Anzahl der Schwingungen bei Dämpfung.
Anzahl Stützpunkte s: mindestens 5, maximal 100 (große Datei!), Vorgabe 10.
Wellenzahl/Bogenlänge w: Muß zwischen -s/2 und s/2 liegen, Vorgabe abhängig vom Typ.
Ist der Betrag der Wellenzahl s/2 oder größer, so ergäbe die Animation Unfug, siehe auch Nyquist-Shannon-Abtasttheorem, genauer ist ein Wert signifikant kleiner als die Grenze.
Praktisch brauchbar sind Werte kleiner gleich s/4.

Bei geschlossenen Gleichgewichtskurven ist etwas anders vorzugehen, damit der Anschluß paßt:
Schwingung einer Kurve (2) (Quelltext zu Schwingung einer Kurve (2))
Schwingung mit Parametern

Parameter: Dämpfung d: 1 ohne Dämpfung, typisch um 0.995.
Runden: r: größer als 0, maximal 100 (große Datei!), Anzahl der Schwingungen bei Dämpfung.
Anzahl Stützpunkte s: mindestens 5, maximal 100 (große Datei!), Vorgabe 10.
Wellenzahl/Bogenlänge w: Muß zwischen -s/2 und s/2 liegen, Vorgabe 2, für geschlossene Kurve ganzzahlig.

Longitudinale Schwingungen treten zum Beispiel bei Medien auf, bei welchen sich Dichte oder Druck um ein Gleichgewicht ändern können, zum Beispiel bei Schallwellen. Die Darstellung ist also etwas schwieriger als bei der Oszillation starrer Körper oder der Schwingung von Kurven.

Beispiel:
Schwingung mittels Farbverlauf (Quelltext zu Schwingung mittels Farbverlauf)
Schwingung mit Parametern

Parameter:
Dämpfung d: 1 ohne Dämpfung, typisch um 0.995.
Runden: r: größer als 0, maximal 100 (große Datei!), Anzahl der Schwingungen bei Dämpfung.
Anzahl Stützpunkte s: mindestens 5, maximal 100 (große Datei!), Vorgabe 20.
Wellenzahl/Bogenlänge v, w: Müssen zwischen -s/2 und s/2 liegen, in x- und y-Richtung, Vorgabe zufällig.

Welle

Bei der Schwingung handelt es sich um eine stehende Welle auf einem Objekt, welche bei geeigneten Randbedingungen eintreten kann, also insbesondere bei mindestens einem festen Ende zum Beispiel eines Seiles. Bei Wellen liegen die Enden nicht fest, die Welle bewegt sich durch das Objekt.

Als Formel:
L(r,t) = A sin(kr - wt + p),
r ist dabei die Raumdimension, also gegebenenfalls auch ein Vektor bei mehrdimensionalen Objekten. k ist wie Wellenzahl, diese korrespondiert mit der Frequenz in der Zeitachse. Dabei hängen die Amplitude A und die Phase p von den Anfangsbedingungen ab.

Beispiele analog zur Schwingung:
Welle auf einer Kurve (1) (Quelltext zu Welle auf einer Kurve (1))
Welle mit Parametern

Parameter:
Typ t: Saite, Bogen, Angel, Welle, Schlaufe
Saite - Gleichgewichtskurve ist eine Gerade
Bogen - Näherungsweise eine Kettenlinie, etwas wie ein Gummiband; die roten Kreise geben den eigentlich korrekten Verlauf einer Kettenlinie oder Seilkurve an, welche durch den Bogen angenähert wird.
Angel - Ähnlich einer Angelrute
Welle - s-förmige Kurve
Schlaufe - stark gekrümmte Kurve
Dämpfung d: 1 ohne Dämpfung, typisch um 0.995.
Runden: r: größer als 0, maximal 100 (große Datei!), Anzahl der Schwingungen bei Dämpfung.
Anzahl Stützpunkte s: mindestens 5, maximal 100 (große Datei!), Vorgabe 10.
Wellenzahl/Bogenlänge w: Muß zwischen -s/2 und s/2 liegen, Vorgabe abhängig vom Typ.
Ist der Betrag der Wellenzahl s/2 oder größer, so ergäbe die Animation Unfug, siehe auch Nyquist-Shannon-Abtasttheorem, genauer ist ein Wert signifikant kleiner als die Grenze.
Praktisch brauchbar sind Werte kleiner gleich s/4.

Bei geschlossenen Gleichgewichtskurven ist etwas anders vorzugehen, damit der Anschluß paßt:
Welle auf einer Kurve (2) (Quelltext zu Welle auf einer Kurve (2))
Welle mit Parametern

Parameter: Dämpfung d: 1 ohne Dämpfung, typisch um 0.995.
Runden: r: größer als 0, maximal 100 (große Datei!), Anzahl der Schwingungen bei Dämpfung.
Anzahl Stützpunkte s: mindestens 5, maximal 100 (große Datei!), Vorgabe 10.
Wellenzahl/Bogenlänge w: Muß zwischen -s/2 und s/2 liegen, Vorgabe 2, für geschlossene Kurve ganzzahlig.

Wellen und auch Schwingungen unterschiedlicher Frequenz oder Wellenzahl können sich überlagern. Bei eng benachbarten Frequenzen oder Wellenzahlen insbesondere kommt es zu Schwebungen.

Zeitliche Schwebung (Quelltext zu zeitliche Schwebung)
Die Parameter sind Analog zu Typ 1, es ist allerdings nur die Saite verfügbar.

Räumliche Schwebung (Quelltext zu räumliche Schwebung)
Die Parameter sind Analog zu Typ 1, es ist allerdings nur die Saite verfügbar.

Räumliche und zeitliche Schwebung (Quelltext zu räumliche und zeitliche Schwebung)
Die Parameter sind Analog zu Typ 1, es ist allerdings nur die Saite verfügbar.

Natürlich können auch mehr als zwei Frequenzen überlagert werden. Werden die Amplituden geeignet gewählt, kann sich daraus ein Wellenpaket ergeben, welches also jeweils nur in einem bestimmten Raumbereich verteilt ist.

Wellenpaket in Gaußform (Quelltext zu Wellenpaket in Gaußform)

Parameter:
Zeit z: in Sekunden, größer als 0, maximal 100 (große Datei!)
Anfangsbreite des Paketes (zerfließt mit der Zeit): d mindestens 0, maximal 5
Das Zerfließen ist gut für d kleiner 0.3 erkennbar; bei kleinem d gibt es aber auch eine große Datei, weil dies eine gute Ortsauflösung erfordert.
Anzahl Stützpunkte s: mindestens 5, maximal 100 (große Datei!), Vorgabe 20
Bei d kleiner als 1 erfolgt eine automatische Korrektur.
Bei wenigen Stützstellen gibt es Artefakte, das Wellenpaket besteht auf zuwenig Frequenzen.
Ein roter Balken zeigt die Animationsdauer.

Beispiele für Wellen in der Ebene, welche durch Farbverläufe repräsentiert werden, wurden bereits im Kapitel Malen vorgestellt:

Ebene Welle (Quelltext zu ebener Welle).
Interessanter ist natürlich eine klassische Überlagerung ebener Wellen (Quelltext zu klassischen Überlagerung ebener Wellen).

Radiale Wellen lassen sich ebenso erzeugen und überlagern:
radiale Welle (Quelltext zur radialen Wellen)
klassische Überlagerung radialer Wellen (Quelltext zu klassischen Überlagerung radialer Wellen)
klassische Überlagerung radialer Wellen (2) (Quelltext zu klassischen Überlagerung radialer Wellen (2)).

Zentralpotential, Zweikörperproblem, Planetenbewegung, Stoß

Ein Problem mit zwei miteinander wechselwirkenden Körpern, kurz Zweikörperproblem, kann auf ein Problem eines Teilchens in einem Zentralpotential zurückgeführt werden. Seien die beiden Massen m1 und m2 mit den Geschwindigkeiten v1 und v2 und die Ortsvektoren r1 und r2. Der Koordinatenursprung wird so gelegt, daß gilt:
(1) m1 r1= -m2 r2.
Der Abstandsvektor ist
(2) r = r1 - r2
Daraus ergibt sich
(3.1) r1 = m2/(m1 + m2) r
und
(3.2) r2 = -m1/(m1 + m2) r.
Die reduzierte Masse ist
(4) m = m1m2/(m1 + m2)
und für das reduzierte System ergibt sich die kinetische Energie
(4.1) m/2 (dr/dt)2.

Bei einer Zweikörperwechselwirkung ist das Potential von der Form U(r), sofern es eines gibt, was insbesondere bei makroskopischen Problemen nicht der Fall sein muß, wenn nicht konservative Kräfte wie Reibung berücksichtigt werden. Zahlreiche räumlich und zeitlich begrenzte inelastische Prozesse lassen sich jedoch oft insofern berücksichtigen, als die Energie vorher und nachher wieder erhalten ist. Liegt in diesem Sinne jedoch kein nichttrivialer Energieverlust des betrachteten Systems vor, gibt es auch ein Potential der Form U(r).

Offenbar ist im Zentralpotential der Drehimpuls L erhalten, woraus sich allgemein ergibt, daß die Bewegung in einer Ebene stattfindet. Die Behandlung des Problems in Polarkoordinaten mit Abstand r und Winkel φ erweist sich als vorteilhaft. Drehimpulserhaltung als Formel:
(5) L = m r2 dφ/dt
Im Bedarfsfalle kann damit das effektive Potential eingeführt werden:
(6) Ueff = U(r) + L2/(2m r2)
Die Gesamtenergie, welche erhalten ist, ist folglich:
(7) E = m/2 (dr/dt)2 + Ueff
Es ist
(8) dr/dt = (2/m (E - U(r)) - L2/(m r)2)1/2
Benutzen wir als Symbol für das Integral, so ist
(9) φ = konstant + dr L/r2/(2 m (E - U(r)) - L2/r2)1/2

Beim Gravitationspotential oder dem Keplerproblem ist
(10) U(r) = - k/r
Für die Gesamtenergie E < 0 ergeben sich geschlossene Bahnen, genauer Ellipsen mit dem Zentrum in einem Brennpunkt, Bei E = 0 eine Parabel, für E > 0 sind es Hyperbeln. Bei letzteren beiden Fällen handelt es sich um einen Stoßprozeß, es ist sogar ein elastischer Stoß. E < 0 werden auch gebundene Zustände genannt, was einer Planetenbewegung um eine Sonne entspricht und die beiden anderen Möglichkeiten sind also Streuprobleme.
Man beachte, daß die Ellipsen sich zeitlich nicht drehen - die Richtungen der Hauptachsen sind zeitlich konstant. Das gilt nur für das Potentiale der Form k/r oder k r2, was bei diesen eine spezielle Erhaltungsgröße darstellt (Laplace-Runge-Lenz-Vektor).
Mit p = L2/(m k) und e = (1 + 2 E L2/m k2)1/2 ergibt sich die Ellipsengleichung:
(11) p/r = 1 + e cos(φ)
dabei ist p der Parameter und e die Exzentrizität der Bahn. Große und kleine Halbachse ergeben sich zu
(12.1) a = p / (1 - e2)
und
(12.2) b = p / (1 - e2)1/2

Für eine Animation wird natürlich noch eine Zeitabhängigkeit benötigt, möglichst in geschlossener Form, um die Bewegungsgleichungen nicht numerisch lösen zu müssen. Das ist nicht ganz einfach, vorgerechnet wird das hier nicht. Zum Glück kann die Lösung nachgelesen werden (L. D. Landau, E. M. Lifschitz: Lehrbuch der Theoretischen Physik I Mechanik, Akademie-Verlag, Berlin).
Für die Ellipsenbahnen gilt mit dem Parameter ξ aus dem Intervall [0, 2π] nach Transformation in kartesische Koordinaten:
(13.1) t= (m a3/k)1/2 (ξ - e sin(ξ))
(13.2) x = a (cos(ξ)- e)
(13.2) y = a (1 - e2)1/2 sin(ξ)
Für die Hyperbelbahnen läuft ξ von minus unendlich bis unendlich:
(14.1) t = (m a3/k)1/2 (e sinh(ξ) - ξ)
(14.2) x = a (e - cosh(ξ))
(14.3) y = a (e2 - 1)1/2 sinh(ξ)
Für die Parabelbahnen läuft ξ von minus unendlich bis unendlich:
(15.1) t= (m p3/k)1/2 ξ/2(1 + ξ2/3 )
(15.2) x = p/2 (1 - ξ2)
(15.3) y = p ξ
Bei den Ellipsenbahnen ist die Zeit für einen Umlauf
(16) T = 2 π a2/3 (m/k )1/2 = π k (- m/(2 E3))1/2

Bei Animationen kann T ja einfach mit dem Attribut dur vorgegeben werden, daraus ergibt sich dann mit einer frei wählbaren Längeneinheit a die Kombination m/k, etwa so, daß für eine Animation gilt (m a3/k)1/2 = 1/(2 π) dann können die t-Werte als keyTimes genutzt werden. Mittels (2) bis (4) kann komponentenweise die Bewegung von den zwei Körpern ermittelt werden.

Es ist nun unmittelbar zu sehen, daß sich bei einem Planetensystem nicht nur der Planet bewegt, sondern auch die Sonne. Bei einem System mit Massen ähnlicher Größe wie einem Doppelsternensystem ist der Effekt bereits sehr deutlich zu sehen und seit langem auch praktisch beobachtbar. Beim Erde-Mond-System ist die Wackelei für Ebbe und Flut auf der Erde verantwortlich. Die Effekte für eine Sonne durch umkreisende Planeten ist winzig, dennoch sind in den letzten Jahren mit hochauflösenden Anlagen und ausgefeilten Programmen zahlreiche Beobachtungen von Planeten in entfernten Sonnensystemen gelungen, meist allerdings mit recht masssereichen Planeten.
Mehrteilchensysteme sind ansonsten nicht allgemein geschlossen lösbar. Sie sind in der Regel chaotisch. Die scheinbare Ordnung in unserem Sonnensystem ist auf Milliarden Jahre lange 'Sortiererei' zurückzuführen. Dabei sortiert natürlich nicht jemand Bestimmtes, dies erfolgt aufgrund der Tatsache, daß beim inelastischen Aufschlag eines kleinen Objektes auf ein großes das kleine einfach zum Teil des großen wird und es somit insgesamt ein Objekt weniger gibt. Vieles, was zu chaotisch war, ist so inzwischen entweder auf Planeten oder der Sonne eingeschlagen oder aus dem System geschleudert worden. Die Planeten untereinander samt ihrer Monde haben große Abstände zueinander, so daß vieles näherungsweise auf Zweikörperprobleme (Sonne-Planet oder Planet-Mond) reduziert werden kann.
Die anderen Objekte sind dann kleine Störungen, die vor allem dazu führen, daß die Hauptachsen der Ellipsen nicht mehr fest im Raum stehen, sondern langsam um den Schwerpunkt rotieren. Weitere Ursachen für Abweichungen sind mit der Relativitätstheorie zu erklären. Bereits Einstein hat solche Abweichungen vorhergesagt. Experimentelle Beobachtungen können dies belegen. Bei schnell rotierenden Doppelsternensystemen sind sogar Gravitationswellen indirekt nachgewiesen worden, über welche ein solches System Energie abstrahlt, was eine Verkleinerung des Abstandes und eine Verkleinerung der Umlaufzeiten zur Folge hat. Zwar ist der Strahlungstyp anders als bei Ladungen, die ein gleichartiges Coulomb-Potential haben, der Effekt ist aber ähnlich, bei beschleunigten Bewegungen von geladenen Objekten aber viel stärker, weswegen diese in der Regel nicht rein mechanisch mit obigen Gleichungen beschrieben werden.
Wer mit seinem eigenen Rechner meinen ehemaligen Kollegen (meine ehemaligen Institutskollegen sind jene von GEO600) helfen möchte, Gravitationswellen direkt nachzuweisen, kann ja auf seinem Rechner »Einstein@home installieren und laufenlassen.

So dies abzusehen ist, sind die Planeten unseres Sonnensystems für viele Millionen Jahre innerhalb von Inseln der Ordnung im Meer des Chaos. Bei Planetenbewegungen sind Energieverluste durch Gravitationswellen irrelevant, andere Störungen sind weit größer. Kleinere Objekte können sich allerdings jederzeit auf Kollisionskurs mit einem der großen Objekte begeben, solch ein Zusammenstoß ändert nichts an den Inseln der Ordnung, kann aber großen Schaden auf dem Planeten anrichten, weil die kinetische Energie beim Aufschlag sehr hoch ist. Chaotische Systeme sind immer nur numerisch mit endlicher Genauigkeit zu lösen, mit wachsender Intergrationszeit wird die Berechnung exponentiell ungenauer.

Einige Beispiele zu den Ellipsenbahnen im Zentralpotential (die Größen der Objekte relativ zur Bahn sind für Sonnen oder Planeten nicht realistisch. Einige Parameter werden zufällig bestimmt, es lohnt sich also ein wiederholtes Aufrufen):
Bewegung im Zentralpotential (Quelltext zur Bewegung im Zentralpotential)
Bewegung im Zentralpotential mit kleiner Störung (Quelltext zur Bewegung im Zentralpotential mit kleiner Störung)
Unser Sonnensystem in der Näherung eines Zentralpotentials (Quelltext zur Animation unseres Sonnensystems)
Stark vereinfachte Darstellung unseres Sonnensystems mit Sonne und acht Planeten und dem Kleinplanten Pluto in der Näherung des Zentralpotentials ohne Wechselwirkung zwischen den Planeten. Als GET-Parameter können angegeben werden:
jahr - die Animationszeit/Sekunde für ein Jahr
halb - die große Halbachse der Erdumlaufbahn
Weitere Näherungen: Die Bahnen sind in einer Ebene und die Durchmesser von Sonne und Planeten sind viel zu groß dargestellt. Die Sonne ist gut einen Faktor 40 zu groß dargestellt, der größte Planet Jupiter gut einen Faktor 200 zu groß, damit man sie überhaupt sehen kann (nur bei der Voreinstellung jahr=10 und halb=10, ab etwa halb=430 stimmt der Sonnendurchmesser etwa relativ zur Umlaufbahn des Merkur). Die Anfangspositionen der Planeten sind im Minimum ihrer Bahn, die Richtungen der Hauptachsen sind zufällig gewählt und ebenso die Blickposition des Betrachters entweder so, daß die Planeten links herum drehen oder rechts herum.
Die Pluto-Bahn ist um etwa 17 Grad gegenüber der Zeichenebene geneigt, schneidet die Neptum-Bahn also nicht wirklich. Einige Monde der Planeten sind größer als Pluto oder Ganymed (Jupitermond) sogar größer als der Merkur, sind aber hier nicht eingezeichnet. Im Sonnensystem gibt es ansonsten noch Haufenweise Kleinplaneten, der größte davon ist Ceres mit einem Durchmesser von gut 1000 km, irgendwo zwischen Mars und Jupiter, wo sich als andere 'Prominenz' auch noch Pallas, Juno, Vesta und Eros herumtreiben.

Dem Leser sei es zur Übung überlassen, die Bahnneigungen richtig einzutragen, mittels Drehungen und Projektionen andere Ansichten zu erzeugen, die Ausrichtung der Ellipsen, die jeweiligen Startpositionen der Objekte zu einem bestimmten Beispiel und eventuell noch einige Kleinplaneten und Monde nachzutragen. Das könnte dann wie folgt aussehen: Sonnensystem;
Beim Drüberfahren mit der Maus oder einer Aktivierung eines Objektes werden zusätzliche Informationen angezeigt. Die Anzeige kann wieder mit einem weiteren Klick oder einer Aktivierung der Anzeige entfernt werden.

Geozentrisches oder planetozentrisches Weltbild (Quelltext zum geozentrischen beziehungsweise planetozentrischen Weltbild):
Zusätzlich zu der einfachen Animation des Sonnensystem kann hier ein Planet in der Mitte der Animation fixiert werden. Gut zu erkennen ist, daß in solchen Weltbildern Gesetzmäßigkeiten in den Bewegungen der Planeten viel schwieriger zu erkennen sind. Der GET-Parameter fix entscheidet, welcher Planet fixiert wird (0: Sonne bis 9, 3 ist die Erde).

Weitere Animationen zum Gravitationspotential:
Streulösung des Kepler-Problems (Quelltext zur Streulösung des Kepler-Problems)
Streulösung im attraktiven Coulomb-Potential oder im Gravitationspotential im Schwerpunktsystem (Quelltext zur Streulösung im Schwerpunktsystem)
Doppelsternsystem (Quelltext zum Doppelsternsystem)
Doppelsternsystem mit kleiner Störung (Quelltext zum Doppelsternsystems mit kleiner Störung)
System mit Sonne, Planet und Mond (Quelltext zum System Sonne, Planet und Mond)
Diese Animation ist eine grobe Näherung aus zwei Zweikörperproblemen und kleinen simulierten Störungen. Die Parameterkombination ist rein aus der Luft gegriffen. Was man bei entsprechender Vergrößerung aber gut sehen kann, sind die Bewegungen der Sonne, durch welche der normalerweise von weit weg komplett unsichtbare Planet entdeckt werden kann. Die in der Animation zufällig ausgewählten Systeme haben eher diese superschweren Planeten, die leichter zu entdecken sind. Hier liegen alle Bewegungen exakt in einer Ebene. Das muß bei einem realen System natürlich nicht so sein, auch wird man da in der Regel nicht senkrecht auf die Ebene der Bewegung gucken. Wenn seitlich auf die Ebene geguckt wird, kann es passieren, daß der Planet vor der Sonne vorbeizieht und somit eine scheinbare kleine Helligkeitsänderung bewirkt, welche ebenfalls zum Nachweis von Planeten genutzt werden kann. In der Animation könnte dies simuliert werden, wenn das System auf die Seite gedreht wird. Allerdings gibt es dann bei SVG ein Problem damit, daß später gezeichnete Objekte immer vorne dargestellt werden, was bei solchen Animationen zu unangenehmen Komplikationen führt. Ansätze zur Lösung solcher Probleme werden im Abschnitt 'Tricks zu Problemen der Zeichenreihenfolge' behandelt.
System mit Sonne, Planet und Mond (fixiert) (Quelltext zum System Sonne, Planet und Mond(fixiert))
Eine lunarzentrische Sicht der gleichen Systeme - auch aus dieser Perspektive ist es schwer, einfache Gesetzmäßigkeiten aus den Bewegungen abzuleiten.

Nochmal zurück zum System Erde-Mond als Zweikörperproblem. Hier lohnt es sich schon, die Drehung von Erde und Mond um die eigene Achse ebenfalls darzustellen. Um diese sichtbar zu machen, sind auf den beiden willkürliche Muster angebracht:
Erde-Mond-System (Quelltext zum Erde-Mond-System).
Als GET-Parameter kann die Dauer eines Erdentages in der Animation in Sekunden angegeben werden. Details auf Erde oder Mond sind nur bei starker Vergrößerung zu erkennen. Daher können die Durchmesser von beiden beim zweiten Beispiel über den GET-Parameter fak relativ zum Durchmesser der Mondbahn verändert werden, etwa um besser beobachten zu können, daß sich der Mond gerade mit der gleichen Zeit um die eigene Achse dreht wie auf seiner Bahn um die Erde, so daß der Mond der Erde immer die gleiche Seite zuwendet.
Die Sonneneinstrahlung wird grob durch Schattenwurf vorgetäuscht. Bahnneigungen sind allerdings komplett vernachlässigt. Gut zu erkennen sind so aber die Mondphasen von der Erde aus gesehen.
Erde-Mond-System 2 (Quelltext zum Erde-Mond-System 2).

Bei den Streulösungen kann auch das Coulomb-Potential wichtig werden, nicht nur die Gravitation, wenn man für solche nichtperiodischen Lösungen die Strahlung erst einmal vernachlässigt. Die Streulösungen sind einfache Beispiele für einen elastischen Stoß.

Obige Lösungen entsprechen dann beim Coulomb-Potential entgegengesetzten Ladungen. Bei zwei gleichen Ladungen ergibt sich offenbar ein Potential der Form:
(17) U = k/r
Die Ellipsengleichung wird dann zu
p/r = e cos(φ) -1
oder mit dem minimalen rmin (Perihelabstand)
rmin = p/(e -1) = a(e + 1)
Für die Hyperbelbahnen läuft ξ von minus unendlich bis unendlich:
(18.1) t = (m a3/k)1/2 (e sinh(ξ) + ξ)
(18.2) x = a (cosh(ξ) + e)
(18.3) y = a (e2 - 1)1/2 sinh(ξ)
Streulösung im repulsiven Coulomb-Potential im Zentralfeld (Quelltext zur Streulösung im repulsiven Coulomb-Potential)
Streulösung im repulsiven Coulomb-Potential im Schwerpunktsystem (Quelltext zur Streulösung im repulsiven Coulomb-Potential im Schwerpunktsystem)

Eigentlich geht es hier erst richtig los, typische Potentiale von Teilchen-Teilchen-Stößen sind nicht so einfach und die Bewegungsgleichungen sind numerisch zu lösen, gebundene Zustände ergeben zum Beispiel Moleküle. Viele Teilchen-Teilchen-Stöße sind Beispiele für einen elastischen Stoß. Ein Einstieg in die Numerik gibt es im Kapitel 'Differentialgleichungen numerisch lösen'.

Streuungen der verschiedensten Teilchen aneinander geben seit den ersten Streuexperimenten von Rutherford 1911 immer tiefere Einblicke im Bereich der Atomphysik und der Teilchenphysik in die Grundlagen und die fundamentalen Prozesse, auf denen im Falle der Teilchenphysik das ganze Universum basiert oder im Falle der Atom- und Molekülphysik zumindest die gesamte Chemie, die unser Dasein und auch die Biologie auf diesem Planeten bestimmt. Chemie findet überall in den etwas kühleren Gegenden des Universums statt, in Sternatmosphären und stellaren Gaswolken.
Bei der Streuung von Teilchen gibt es dann auch interessante Effekte wie Regenbögen, Glorienstreuung, Orbiting oder semiklassisch oder quantenmechanisch gerechnet interessante Interferenzeffekte zwischen verschiedenen Möglichkeiten für den gleichen Ablenkwinkel.
Das alles geht dann aber doch weit hinaus über die einfachen Beispiele für SVG - obwohl sich solche SVG-Animationen auch ausgezeichnet zur Visualisierung wissenschaftlicher Daten und Forschungsergebnisse eignen.

Als Beispiel sei hier ein Ergebnis aus eigener Forschung angegeben, ein sogenannter Optischer Stoß. Bei dem durchgeführten Experiment werden Wirkungsquerschnitte differentiell gemessen. Statt wie üblich bei den meisten Streuexperimeten wird hier aber zusätzlich zur Präparation vor dem Stoß und der Analyse danach der Stoßprozeß direkt beobachtet, manipuliert und kontrolliert, wofür ein geeigneter Pulslaser verwendet wird.
Durch die zusätzliche Wechselwirkung mit dem Licht ergibt sich entweder ein Dreiteilchenstoß, eine Wechselwirkung des Stoßpaares mit Licht oder aber auch ein inelastischer Stoß zweier Teilchen, wobei das Licht eine zeitlich stark lokalisierte Wechselwirkung darstellt, welche die Potentialkurven austauscht und die Gesamtenergie verändert, allerdings in so einfacher Weise, daß die Situation davor und danach weiter als ein elastischer Stoß betrachtet werden kann.

Dies Experiment ist bislang weltweit einmalig. Folgendes Beispiel zeigt eine Animation zur klassischen Interpretation eines Ergebnisses, welches (halb)klassisch anschaulich und einfach zu verstehen ist. Das experimentelle Meßergebnis (Sternchen) zeigt die Ausrichtung des Orbitals eines Natrium-Atoms bei einer Anregung durch den Laser während des Stoßes mit einem Neon-Atom, quasi ein Photo dieses schnellen Stoßprozesses, die Animation zeigt den Stoßprozeß kurz davor und danach, die Entwicklung des Orbitals innerhalb von knapp einer Pikosekunde, der typischen Dauer eines typischen atomaren Stoßprozesses:
Optischer Stoß - direkte Beobachtung eines atomaren Stoßprozesses.
Die Elemente desc und title enthalten genauere Beschreibungen (Bei Opera 9.x wird die Animation korrekt angzeigt, etwa das adobe plugin und Squiggle 1.7 sind fehlerhaft). Aktivieren oder anklickern des Logos unten zeigt den Moment der Anregung 20s als unbewegtes Bild.
Mehr Informationen zum Experiment von mir: »Direkte Beobachtung atomarer und molekularer Stoßprozesse.

Stochastische, zufällige Bewegungen

Albert Einstein hat 1905 einen wichtigen Artikel zur Brownschen Molekularbewegung geschrieben, das war nur einer von mehreren wichtigen Artikeln von ihm in diesem Jahr. Daher wurde 2005 das Einsteinjahr gefeiert - innerhalb von 100 Jahren hat sich durch ihn und viele andere Physiker unser Bild von der Welt komplett geändert.
Bei der Brownschen Molekularbewegung wird ein großes Teilchen in einem Ensemble von Molekülen beobachtet, typisch in Gasen oder Flüssigkeiten. Die makroskopisch als Kraftstöße interpretierbaren scheinbar spontanen Änderungen der Geschwindigkeit in Richtung und Betrag sind mikroskopisch letztlich auf elastische Stöße mit Molekülen zurückzuführen, die zu klein und zu schnell sind, als daß atomare Stoßprozesse direkt beobachtet werden könnten. Heutzutage geht das schon, genaugenommen aber nur in einem Experiment, an welchem ich seit einigen Jahren arbeite (siehe Beispiel im vorherigen Abschnitt). In traditionellen Stoßexperimenten hat man hingegen nur eine Präparation vor dem Stoß und eine Analyse danach. Das entspricht grob der Brownschen Molekularbewegung, wo man auch nur die Bewegung des großen Teilchens vor und nach dem Stoß sieht. Der eigentliche Stoßprozeß dauert typisch unter einer Pikosekunde und findet auf einer rämlichen Skala von einigen atomaren Einheiten statt (einige Nanometer). In solchen Dimensionen werden Bewegungsabläufe gewöhnlich nicht aufgelöst. Mit Femtosekundenlasern kann inzwischen das zeitliche Verhalten einfacher Dissoziationsprozesse aufgelöst werden. Das ist noch kein ganzer Stoß - ein Molekül wird dabei mit einem Laser in zwei Teile zerteilt. Aber durch trickreiche weitere Technik wie bei meinem Experiment ist die räumliche Information dann verfügbar bis hin zu einer Photographie eines Stoßprozesses, in Kombination mit den Femtosekunden-Experimenten wäre dann wirklich ein echter Film des Stoßprozesses realisierbar.

Zurück zu den inzwischen profanen Interpretationen der Brownschen Molekularbewegung:
Ist m die Masse des großen Teilchens und T die Temperatur des Ensembles, k die Boltzmann-Konstante, so ergibt sich die mittlere Geschwindigkeit des großen Teilchens aus der bekannten Beziehung:
m v2 /2 = kT/2 pro Raumrichtung, normalerweise gibt es drei Raumrichtungen, bei unserer Animation nur zwei. Bei ausgedehnten Objekten können auch noch Rotationen und Schwingungen Energie aufnehmen.
Die Animation gibt eine solch stochastische Zufallsbewegung des großen Teilchens qualitativ wieder. Je länger der Weg bis zum nächsten Stoß, desto weniger kleine Teilchen sind vorhanden, je kleiner die Geschwindigkeitsänderung bei einem Stoß, desto größer ist das Verhältnis von kleiner zu großer Masse. Je schneller sich das Teilchen im Mittel bewegt, desto heißer das Ensemble.
Animation einer Brownschen Molekularbewegung (Quelltext zur Brownschen Molekularbewegung)
Etwas gepfuscht habe ich allerdings bei der Zufallsbewegung. In SVG kann ich nur einen endlichen Pfad zufällig generieren, daher läuft das Teilchen nach Ablauf der Animation rückwärts zum Ausgangspunkt zurück und beginnt von vorn - sobald es auffällt, sollte das Bild mit neuen Zufallsparametern gestartet werden. Als Zufallsverteilung sollte es eigentlich eine Poissonverteilung sein, auch da habe ich stark vereinfacht, was aber nichts Wesentliches am Ergebnis ändern sollte.

Man kann auch anders mogeln, dazu lasse ich allerdings die Randbegrenzung weg und symmetrisiere den Zufallspfad - der ist dann allerdings nur noch halb so zufällig wie er sein sollte und das Teilchen kann teilweise über den Rand hinausgelangen. Weitere Animation einer Brownschen Molekularbewegung (Quelltext der zweiten Animation zur Brownschen Molekularbewegung) mit eingezeichnetem symmetrisierten Zufallspfad.

Mit einem anderen Typ von Symmetrisierung ist beim Zufallspfad dann auch die Symmetrisierung nicht mehr direkt erkennbar: Weitere Animation einer Brownschen Molekularbewegung (Quelltext der dritten Animation zur Brownschen Molekularbewegung) mit eingezeichnetem, asymmetrischen Zufallspfad.

Und noch eine etwas andere Methode, um einen asymmetrischen, geschlossenen Zufallspfad zu erhalten: Weitere Animation einer Brownschen Molekularbewegung (Quelltext der vierten Animation zur Brownschen Molekularbewegung) mit eingezeichnetem, asymmetrischen Zufallspfad.

Nun könnte man sich auch noch vorstellen, daß kleine Richtungsänderungen bei einem Stoß bevorzugt sind, im einfachsten Fall kann man dazu erst einmal den maximalen Ablenkwinkel pro Stoß einschränken: Animation einer Brownschen Molekularbewegung mit eingeschränkter Richtungsänderung (Quelltext der fünften Animation zur Brownschen Molekularbewegung).

Stattdessen kann man natürlich auch die kleinen Ablenkwinkel stärker gewichten als große: Animation einer Brownschen Molekularbewegung mit gewichteter Richtungsänderung (Quelltext der sechsten Animation zur Brownschen Molekularbewegung).

Andere interessante Zufallsbewegungen ergeben sich, wenn man x- und y-Komponenten getrennt animiert und mit verschiedenen Animationsdauern ausstattet, so kann bereits mit wenigen Datenpunkten ein komplexer Zufallspfad entstehen, der sich nur sehr selten wiederholt, insbesondere bei teilerfremden Animationsdauern.

Mehr Bewegung?

Weitere interessante Beispiele sind die numerischen Lösungen von Bewegungsgleichungen, speziell auch Modelle aus der Chaostheorie, etwa das bekannte Lorenz-System. Gibt es keine geschlossene Darstellung der Kurvenform und ist diese nicht in allen Dimensionen periodisch, kann mit PHP natürlich nur ein kleiner Zeitbereich einer solchen Kurve dargestellt werden. Allerdings können die jeweiligen Endwerte als GET-Parameter an einen Verweis angehängt werden, den der Nutzer nur zu betätigen braucht, damit er das nächste Zeitintervall der Bewegung berechnet und visualisiert bekommt. Mit SVG 2 sollten da auch noch mehr Tricks drin sein, man wird sehen. Mit der numerischen Lösung von Diffentialgleichungen beschäftigt sich der Abschnitt 'Numerik', dort werden Verfahren nach Runge-Kutta verwendet.
Wenn jedenfalls bekannt ist, daß es sich um eine periodische Lösung handelt, lohnt es sich, die Differentialgleichung zeitlich einmal vorwärts und einmal rückwärts zu lösen und die numerischen Fehler durch geeignete gewichtete Mittelwertbildung zu verkleinern.
Mit Skript-Animationen lassen sich auch nichtperiodische Bewegungen bequem integrieren - ohne weitere Interaktion durch den Nutzer. Allerdings funktionieren solche Animationen nicht mit SVG-tiny oder bei deaktivierten Skript-Sprachen (java-script, ecma-script), weswegen diese Animationen für solche Nutzer auch leere Versprechungen sein können, dem mit einer alternativen deklarativen Animation, wie hier vorgestellt, vorgebeugt werden sollte. Auch stellen wohl Skript-Animationen wieder einen Rückgriff auf das Einzelbildverfahren dar, vergleichbar mit Film- und Fernsehen, wenn ich das in entsprechenden Beispielen richtig gesehen habe. Das ist formal nicht schön, da somit den Darstellungsprogrammen wieder vorgeschrieben wird, wie sie etwas darstellen sollen und nicht was sie darstellen sollen. Gut, vielen Autoren und auch Nutzern wird der Unterschied nicht klar sein. Eigenes Überdenken hinsichtlich der Vermeidung von Zugänglichkeitsbarrieren beim Einsatz von anwenderseitigen Skriptsprachen verbleibt hier aber erstmal als kleine Hausaufgabe - nicht nur in Hinsicht auf Skript-Animationen, auch hinsichtlich SVG und XHTML ganz allgemein eine gute Hausaufgabe...