Einzelnen Beitrag anzeigen

tumo

Registriert seit: 28. Apr 2014
46 Beiträge
 
Delphi 10.3 Rio
 
#1

Gravitation und Kollision

  Alt 22. Jun 2018, 17:50
Hallo,

vorab: ich weiß, dass ein "müsstest du doch in der Schule/Studium/irgendwo gelernt haben" eine echt schöne Antwort ist, nur hilft mir das nicht wirklich weiter. Auch in Internetrecherche bin ich unglaublich schlecht (Auch mit Google und Co.). Daher bitte ich darum wenn möglich leicht verständliche Antworten zu geben.

Ich experimentiere gerade mit OpenGL rum und im Zuge dessen auch mit Physik. Da ich gerne eine eigene "Physik-Engine" haben möchte, will ich auch nicht auf eine schon vorhandene zurückgreifen. Sonderlich realistisch muss es nicht sein, Luftwiederstand und ähnliches vernachlässige ich (weil ich's kann ). Nun habe ich eine Art Flummi programmiert, die mit einer Startposition, -geschwindigkeit und -beschleunigung startet. Sobald der Körper auf den Boden trifft, wird ein Teil der Geschwindigkeit abgezogen und der Rest negiert (also fliegt der Körper dann nach oben), bis die Beschleunigung auch diese wieder umgekehrt hat und so weiter... Das Problem ist nun, dass der Körper nie zum Ruhen kommt, sondern immer weiter eine gewisse Geschwindigkeit erfährt, genug um komische Pixelsprünge zu erzeugen, wenn der Körper fast auf dem Boden ist.

Ich habe eine grobe Vermutung wo das Problem liegen könnte: Das Objekt wird in ca. 15ms Abständen (weil OnIdle) aktualisiert, also Position und Geschwindigkeit. Wenn das Objekt kurz vor dem Boden ist, ist es nach dieser Berechnung unter dem Boden. Bei der Überprüfung, die nach dieser Objektaktualisierung passiert, wird das Objekt exakt auf den Boden gesetzt, hat aber noch die Geschwindigkeit von der kleinen Differenz zwischen der eigentlich berechneten Position und dem Boden. Das bisschen zu viel löst am Ende dieses komische Zittern aus, vielleicht.

Ich stehe echt auf dem Schlauch. Zur Information: 10. Klasse, also erwartet nicht zu viel von meinem Schulwissen. Grundlagen kenne ich schon, aber alles etwas speziellere ist mangelware bei mir.

Wenn ihr Code(-schnipsel) sehen wollt, sagt bescheid.

Mit freundliche Grüßen
  Mit Zitat antworten Zitat