Verlet

Übersicht BlitzMax, BlitzMax NG Allgemein

Neue Antwort erstellen

Firstdeathmaker

Betreff: Verlet

BeitragDi, Jun 29, 2010 13:10
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,

es gibt ja schon ein paar verlet-Implementationen hier im Forum, vor allem in BB3D. Jetzt wollte ich mich selber mal daran versuchen, komme aber irgendwie nicht weiter:

1. Frage:
Bei der Wikipedia-Erklärung bin ich nach "Velocity Verlet" vorgegangen. Nur leider wird nicht genau erklärt, was man nun als Beschleunigung a nimmt... ist das eine freie Variable die ich nun mit Schwerkraft etc. belegen kann, oder muss ich diese wieder aus der Position herausrechnen?

2. Frage:
Bei meiner Implementierung (siehe unten) scheinen sich die einzelnen Knoten einfach nicht korrekt zu verhalten. Als Testcase habe ich eine kleine Kette aus verbundenen Nodes angelegt, das erste Node wird immer auf Mausposition gehalten, und die anderen werden jede Runde um eine feste Pixelzahl nach unten bewegt. Wenn ich jetzt dieses "Seil" hin und herschwingen lassen möchte, funktioniert das nicht. Das Seil wird ideal gedämpft schwingen, und nicht hin- und her. Da muss ich irgendwie Masse und Trägheit reinbringen, ich weis nur nicht wie?



Meine Quellen:
engl. Wikipedia-Artikel
Dep. of Physics, University of Udine, Italy


Mein Source:
Code.rar (7,3 kB)

(Testcase1.bmx ist zum kompilieren gedacht)
www.illusion-games.de
Space War 3 | Space Race | Galaxy on Fire | Razoon
Gewinner des BCC #57 User posted image

Noobody

BeitragDi, Jun 29, 2010 14:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Das Problem bei deinem Pendel ist, dass du zwar Leapfrog verwendest, aber die Verbindungen trotzdem so handhabst, als würden sie auf Position Verlet-Basis arbeiten.

Leapfrog ignoriert die Position im letzten Frame (darum kannst du dir das Array oldstate auch sparen) und arbeitet direkt mit der Geschwindigkeit. Darum reicht es auch nicht, dass du im Constraint-Solver (Constraint schreibt man übrigens mit t am Ende Wink) die Eckpunkte einfach verschiebst. Für Velocity Verlet müsstest du nämlich zusätzlich noch die Zentripetalkraft berechnen, diese in Beschleunigung umrechnen und somit in die Bewegungsgleichung einspeisen, damit dein Pendel schwingt.

Du kannst nun also in Leapfrog mit Kräften und Beschleunigung arbeiten oder aber umsteigen auf Position Verlet und dort direkt mit den Positionen arbeiten - was dir lieber ist.

Deine erste Frage sollte somit auch geklärt sein; die Beschleunigung kommt vom System drumherum, sprich Kräften, die auf den Punkt einwirken.
Man is the best computer we can put aboard a spacecraft ... and the only one that can be mass produced with unskilled labor. -- Wernher von Braun

Firstdeathmaker

BeitragDi, Jun 29, 2010 22:50
Antworten mit Zitat
Benutzer-Profile anzeigen
Okay, hat funktioniert. Danke! (Rechtschreibfehler hab ich auch verbessert Wink )
www.illusion-games.de
Space War 3 | Space Race | Galaxy on Fire | Razoon
Gewinner des BCC #57 User posted image

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group