Schwingende Saite

Aus StudyWiki

Wechseln zu: Navigation, Suche

Inhaltsverzeichnis

Schwingende Saite Dokumentation

Eine Projektarbeit von Daniel Alder und Michel Racic im Fach Numerik an der :HSZ-T:

Screenshot der Applikation
Screenshot der Applikation

Download

Die JAR-Datei enthält alle notwendigen Daten, also auch die Quellcodes.

Download: SchwingendeSaite-r147.jar

Bedienung

Starten der Applikation

einfach folgendes eingeben:

java -jar SchwingendeSaite-r147.jar

Die Main-Klasse ist hsz.alderac.saite.DemoFrame.java

Benötigt wird Java 1.5 oder höher

Verlangsamung

Je weiter der Regler nach links geschoben wird, desto schneller läuft die Animation (die Pausen zwischen den Berechnungen werden kürzer)

Anzahl Punkte

Je weiter der Regler nach rechts geschoben wird, desto mehr Punkte werden verwendet für die Simulation

Oberes Diagramm (Zeitverlauf)

Diese Darstellung zeigt den Verlauf der Höhe des mittleren Punktes über die Zeit an

Unteres Diagramm (Momentaufnahme)

Zeigt den jeweils aktuellen Berechnungsstand der Simulation (Momentaufnahme)

  • Ein Klick in den oberen Bereich dieses Diagramms initialisiert die Saite neu.
  • Ein Klick in den unteren Bereich setzt entweder
    • linke Maustaste: die Idealhöhe für den aktuellen Punkt, oder
    • rechte Maustaste: setzt gleich direkt die Höhe

Mathematische Grundlagen

Wertebereiche

Gerechnet wird in folgenden Bereichen:

Diese werden jeweils auf die Pixeldimensionen der dafür vorgesehenen Fenster hochskaliert.

x-Achse

Bereich: 0..(n − 1)

0 ist links, n ist rechts

Jeder dieser ganzzahligen Werte ist ein Punkt, der verfolgt wird. n ist dabei die Anzahl Punkte. Da der erste und der letzte Punkt vorgegeben sind (Befestigung), ergibt sich effektiv n − 2 Punkte, die sich bewegen können.

y-Achse

Sichtbarer Bereich: − 1..1

-1 ist unten, 1 ist oben

0 ist dabei das Zentrum, auf welches auch die beiden seitlichen Fixpunkte festgelegt sind.

Ein Wert kann auch ausserhalb dieses Bereichs liegen. In diesem Fall weist die Verbindungslinie dann einfach in die entsprechende Richtung aus dem Rahmen.

Zeit

Die Zeit ist unbestimmt. In regelmässigen Abständen wird ein Rechenschritt vollzogen, dieser berechnet dann die jeweils nächste Momentaufnahme. Um einen Verlauf rückzuverfolgen, ist die Speicherung aller Zwischenschritte in einem Hilfsarray notwendig.

Initialisierung

Wenn die Saite angespannt wird (am Anfang des Programms), wird erst ein Spannpunkt x festgelegt. Dieser ist im Bereich 1..(n − 2) und wird auf 1 gesetzt. Die Werte dazwischen (1..(x − 1) und (x + 1)..(n − 2)) werden dann entsprechend linear gemittelt.

Berechnung

Die Berechnung basiert auf 2 Konstanten und 3 Werten, die pro Punkt separat gespeichert sind:

Konstanten:

  • elasticity: Die Elastizität. Je grösser der Wert, desto weiter schwingt die Saite aus
  • reibung: Die Reibung. Ein Wert von 1 widerspiegelt absolute Reibungsfreiheit - die Saite schwingt endlos. Je kleiner der Wert ist, desto schneller kommt sie zum Stillstand.
  • n: Anzahl Punkte in der Simulation

Werte pro Punkt i:

  • y''[i]: Die Beschleunigung auf den einzelnen Punkt
  • y'[i]: Die Geschwindigkeit
  • y[i]: Das ist die eigentliche Position des Punkts

Die Punkte werden folgendermassen berechnet:

yIdeal ist der Wert, wo der Punkt hinsteuert. Er liegt genau auf der Verbindungsachse der beiden benachbarten Punkte:

yideal[i] = (y[i − 1] + y[i + 1]) / 2

Jetzt wird die Kraft berechnet. Je grösser der aktuelle Punkt vom Ideal abweicht, desto grösser ist sie:

F = (y[i] − yideal[i]) * 2

Die Kraft wirkt sich direkt auf die Beschleunigung aus. Die Konstante elasticity bestimmt, ob sich die Seite eher wie ein Gummiseil oder eine Stahlsaite anfühlt. Die Berücksichtigung von n ermöglicht in gewissem Masse die Unabhängigkeit der Simulation von der Anzahl simulierter Punkte:

y''[i] =  − F * (elasticity * n)

Nun kommt allgemeine Differenztheorie:

y'[i] = y'[i] + y''[i]

Und dann nochmals für y, jedoch unter Berücksichtigung der Reibung:

y[i] = (y[i] + y'[i]) * reibung
Persönliche Werkzeuge
Seminare
Fächer Grundstudium