Wie kann ich diesen Masse-Feder-Effekt reproduzieren? [geschlossen]

Ich versuche, das Multiball-Objekt dieser App zu reproduzieren (Sie können es herunterladen, um es selbst zu sehen). Drücken Sie 'e', ​​wenn Sie das Objekt auf Ihrem Computer emulieren möchten (dies ist ein Tablet-Programm). Hier ist ein Video als Beispiel, auch wenn ich Ihnen dringend rate, den Editor herunterzuladen, um eine bessere Ansicht zu haben.

Grundsätzlich habe ich 3 Parameter (Anziehung, Reibung und Geschwindigkeit). Die Massenfeder wirkt auf einen 2D-Plan. Beim Berühren des Bildschirms "dreht" sich die Kugel um den Kontaktpunkt. Soweit ich das verstanden habe, ist das Gleichgewicht der Kontaktpunkt von den Finger auf dem Bildschirm.

Wenn mir jemand erklären könnte, wie ich diesen Effekt reproduzieren könnte, wäre ich wirklich dankbar.

Nur als freundlicher Vorschlag, es ist wahrscheinlicher, dass Leute Ihre Frage lesen, wenn Sie in der Frage selbst mehr Erklärungen liefern, anstatt von den Leuten zu verlangen, einem Link zu folgen. Ich denke, dass die Anzahl der Personen, die die App installieren und ausführen werden, wahrscheinlich sehr gering sein wird.
@Andrew danke für deinen Vorschlag, leider bin ich nicht wirklich gut im Diagramm, deshalb habe ich einen Videolink hinterlassen. Der beste Weg, um zu verstehen, wie es funktioniert, ist, die App herunterzuladen. Ich könnte den Effekt, den ich erhalte, nicht in richtigem Englisch beschreiben, aber ich werde mein Bestes geben und meinen Beitrag verbessern. Nur eine Frage, werden Sie die App herunterladen, um einen Blick darauf zu werfen? vielen Dank im Voraus
Ich beschreibe die mathematische und Python-Implementierung eines Feder-Masse-Dämpfer-Systems, das hier "boing" wird ; vielleicht nützt es ja was.
vielen Dank @Chemomechanics

Antworten (1)

Basierend auf dem reinen Betrachten eines ein paar Sekunden langen Videoclips, ohne in die Interna der Software einzudringen, scheint es plausibel, dass sich der Ball auf dem Bildschirm gemäß den Bewegungsgleichungen für einen ungezwungenen 2D-gedämpften harmonischen Oszillator bewegt. Vermietung X Und j seien Koordinaten des Balls, und ( X e Q , j e Q ) sei die Position des Gleichgewichts der Feder (von der Sie sagten, dass sie die Position ist, an der Ihr Finger den Bildschirm berührt), sind die Bewegungsgleichungen

M X ¨ + γ X ˙ + k ( X X e Q ) = 0 M j ¨ + γ j ˙ + k ( j j e Q ) = 0
Wo M ist die Masse der Kugel, γ ein Koeffizient ist, der die Reibungsstärke beschreibt, und k ist die Federkonstante. Alle drei dieser Parameter sollten im Code einstellbar sein. Das Beispiel im Video sieht aus, als wäre es überdämpft, was bedeutet, dass γ 2 > 4 M k . ( Hyperphysik hat eine gute Beschreibung verschiedener Verhaltensregime für den gedämpften harmonischen Oszillator)

Man muss auch Anfangsbedingungen angeben. Ich gehe davon aus, dass der Simulator die obigen Gleichungen mit der Gleichgewichtsposition löst, wenn Sie auf den Bildschirm tippen ( X e Q , j e Q ) Dabei handelt es sich um die Position Ihres Fingers und die Anfangsposition und -geschwindigkeit um die Position und Geschwindigkeit des Balls zum Zeitpunkt des Antippens des Bildschirms.

Die letzte Zutat, die man braucht, sind Randbedingungen, um zu sagen, was der Ball tut, wenn er den Rand des Bildschirms erreicht. Ich vermute, der Code verwendet reflektierende Randbedingungen, also zum Beispiel in dem Moment, in dem die X Koordinate trifft entweder den minimal oder maximal zulässigen Wert von X , die Geschwindigkeit in der X Richtung ändert Vorzeichen.

Um dies tatsächlich zu codieren, können Sie im Allgemeinen Standardalgorithmen verwenden, um die Differentialgleichungen zu integrieren, z. B. ein Runge-Kutta-Verfahren . Oder Implementierungen dieser Methoden in der von Ihnen verwendeten Programmiersprache. Für dieses spezifische Problem, das linear ist, können Sie eine analytische Lösung verwenden (explizite Formel, die die Bewegung angibt), siehe beispielsweise Gleichung 72 der Anmerkungen zu Wellen und Schwingungen von Richard Fitzpatrick

X ( T ) = A e γ T / 2 cos ( ω T ϕ ) j ( T ) = B e γ T / 2 cos ( ω T ψ )
Wo ω = k / M und wo A , B , ϕ , ψ sind Konstanten, die gewählt werden, um die Anfangsbedingungen zu erfüllen (nämlich, dass die Anfangsposition ( X ( 0 ) , j ( 0 ) ) und die Anfangsgeschwindigkeit ( X ˙ ( 0 ) , j ˙ ( 0 ) ) der Position und Geschwindigkeit des Balls zum Zeitpunkt der Berührung des Bildschirms entsprechen).

vielen Dank für deine Antwort, ich werde auf jeden Fall versuchen, was du aufgeschrieben hast
@JSmith Sie möchten wahrscheinlich wählen M , γ , k Das System ist also überdämpft , was passieren wird, wenn γ 2 > 4 M k .
Entschuldigung, aber das ist chinesisch für mich. Ich bin wirklich schade in Mathematik
@JSmith Irgendwann müssen Sie Werte auswählen für γ , M , k . Ich empfehle, sie so zu wählen γ 2 > 4 M k wenn Sie möchten, dass das Verhalten dem im Video ähnelt.
ah ok danke für den rat.
Um ehrlich zu sein, kämpfe ich mit dem Teil der Differentialgleichung. Irgendeine Idee, wie ich auf den Punkt kommen könnte? Jeder bereits implementierte Code, den ich mir ansehen könnte. Danke
@JSmith Versteht Ihr Problem, woher die Gleichung kommt oder wie man sie löst?