Ich habe eine Physik-Engine implementiert, die auf den Konzepten des klassischen Textes Advanced Character Physics von Thomas Jakobsen basiert . Reibung wird im Artikel nur sehr kurz diskutiert und Jakobsen selbst stellt fest, wie "andere und bessere Reibungsmodelle als diese implementiert werden könnten und sollten".
Wie kann man generell ein glaubwürdiges Reibungsmodell zusätzlich zu den Konzepten aus dem genannten Artikel implementieren? Und wie könnte die gefundene Reibung in Rotation auf einem Kreis übersetzt werden?
Ich möchte nicht, dass es bei dieser Frage um meine spezifische Implementierung geht, sondern darum, wie Jakobsens Ideen allgemeiner mit einem großartigen Reibungssystem kombiniert werden können. Aber hier ist eine Live-Demo, die den aktuellen Zustand meines Motors zeigt, der in keiner Weise mit Reibung umgeht : http://jsfiddle.net/Z7ECB/embedded/result/
Unten sehen Sie ein Bild und ein Beispiel dafür, wie die Kollisionserkennung in einem Motor funktionieren könnte. In der Verlet-Integration werden immer die aktuelle und die vorherige Position gespeichert. Basierend darauf wird eine neue Position berechnet. In jedem Frame berechne ich den Abstand zwischen den Kreisen und den Linien. Wenn dieser Abstand kleiner als ein Kreisradius ist, ist eine Kollision aufgetreten, und der Kreis wird entsprechend der Größe der Überlappung (Versatz auf dem Bild) senkrecht aus der betreffenden Linie heraus projiziert.
Die Geschwindigkeit ist aufgrund der Verlet-Integration implizit, sodass sich durch Ändern der Position auch die Geschwindigkeit ändert. Was ich wissen muss, ist, irgendwie die Reibung auf dem Kreis zu bestimmen und ihn parallel zur Linie rückwärts zu bewegen, um seine Geschwindigkeit zu verringern.