Wie lange dauert es, bis eine gedämpfte Feder einen bestimmten Punkt erreicht?

Ich habe eine Frühlingssimulation für eine UI in JavaScript geschrieben, und alles läuft großartig, Benutzer können UI-Elemente überallhin werfen und sie mit ein wenig Wackeln genau dorthin schieben, wo sie hin müssen.

Ich versuche jedoch, Federsimulationen miteinander zu verketten, und ich würde gerne wissen, wann eine Feder ihren Gleichgewichtspunkt überschreitet, damit ich die nächste Animation in der Kette zum richtigen Zeitpunkt und mit der richtigen Geschwindigkeit starten kann.

Wie kann ich diese Formel lösen für T damit ich wissen kann, wann die Feder einen bestimmten Punkt überquert? Ich würde es gerne für alle Arten von Federn wissen, aber praktisch arbeite ich nur mit leicht unterdämpften. Meine aktuelle Formel, um die Verschiebung einer unterdämpften Feder aus ihrem Gleichgewicht zu finden, lautet:

F ( T ) = e C T / 2 M ( D 0 C Ö S ( 4 M k C 2 T 2 M ) + 2 M v 0 + C D 0 4 M k C 2 S ich N ( 4 M k C 2 T 2 M ) )
Wo:

M : die Masse des federnden Objekts,

k : die Steifigkeit der Feder, die Federkonstante,

C : die Dämpfungskraft,

D 0 : der anfängliche Abstand des springenden Objekts von seinem Gleichgewicht bei T ich M e = 0 ,

v 0 : die Geschwindigkeit des springenden Objekts, sobald der Benutzer es loslässt bei T ich M e = 0 ,

Und T für die Zeit.

Kann ich dieses Chaos lösen? T statt F ( T ) ?

Sie müssen es numerisch lösen, ich glaube nicht, dass es eine analytische Lösung gibt
Ihnen fehlt eine Klammer um die Sinus- und Kosinusterme, um mit dem Exponential zu multiplizieren. Die allgemeine Lösung sollte die Form haben
X = exp ( β T ) ( A Sünde ( ω T ) + B cos ( ω T ) )
@JohnAlexiou Es war auch genau dort im Code ... danke, das habe ich verpasst, bearbeitet, um es zu reflektieren

Antworten (1)

Es gibt eine analytische Lösung, wenn man die Gleichung auf die Form bringt

X = R exp ( ζ θ ) cos ( θ 1 ζ 2 + ψ )

Die Lösung für X = 0 Ist

θ = π 2 ( 2 ich 1 ) ψ 1 ζ 2

Wo ich = 1 , 2 , 3 . Die Zeit und der Winkel sind verwandt als θ = ω N T , mit ω N 2 = k M und Dämpfungsverhältnis ζ = C 2 M ω N .

Die Amplitude ist R = A 2 + B 2 und Phase ψ = arctan ( A / B ) Wo A ist der Koeffizient von Sünde ( ) Und B der Koeffizient von cos ( ) .

Vielen Dank für eine tolle Antwort. Wenn es jemandem hilft, hier ist ein Diagramm mit sowohl gezeichneten als auch variablen Werten . Nochmals vielen Dank, Sie haben mir eine Menge Zeit gespart und ich hoffe, eines Tages tatsächlich zu verstehen, was Sie getan haben.
@NorrisDuncan - Ich bin froh, dass es geklappt hat. Es scheint, dass Sie ähnliche Dinge tun, die ich in den 80er Jahren mit BASIC auf dem BBC Micro gemacht habe. Ich habe es geschafft, daraus eine Karriere zu machen, also ein Hoch auf dich.