Hallo!
Auf meiner Maschine nimmt deltaT aus der Vorlage in der ersten Iteration merkwürdige Werte an. Oftmals ist der Wert sehr groß (z.B. 59 statt 0.009), manchmal sogar negativ. Allein aus der Logik des Codes konnte ich nicht herausfinden, warum das der Fall sein sollte. Wenn ich jedoch in der ersten Iteration einfach gar nichts mache (deltaT = 0 überschreibe), dann funktioniert alles wie gewünscht.
Hat vielleicht jemand Ideen?
Übung P8 - deltaT
-
- Computerversteher
- Beiträge: 363
- Registriert: 14. Okt 2014 17:05
Re: Übung P8 - deltaT
Übliche Frage - was für ein System?
Re: Übung P8 - deltaT
Der Fehler tritt auf folgendem System auf:
(OpenGL version string: 2.1 Mesa 17.2.6)
Code: Alles auswählen
-`
.o+`
`ooo/ OS: Arch Linux
`+oooo: Kernel: x86_64 Linux 4.14.4-1-ARCH
`+oooooo: Uptime: 5h 26m
-+oooooo+: Packages: 934
`/:-:++oooo+: Shell: fish 2.7.0
`/++++/+++++++: Resolution: 1280x800
`/++++++++++++++: WM: i3
`/+++ooooooooooooo/` GTK Theme: xtomFlat [GTK2/3]
./ooosssso++osssssso+` Icon Theme: Numix-Circle
.oossssso-````/ossssss+` Font: Droid Sans 11
-osssssso. :ssssssso. CPU: Intel Core2 Duo L9400 @ 2x 1.867GHz [46.0°C]
:osssssss/ osssso+++. GPU: Mesa DRI Mobile Intel® GM45 Express Chipset
/ossssssss/ +ssssooo/- RAM: 2397MiB / 3847MiB
`/ossssso+/:- -:/+osssso+-
`+sso+:-` `.-/+oso:
`++:. `-/+/
.` `/
-
- Computerversteher
- Beiträge: 363
- Registriert: 14. Okt 2014 17:05
Re: Übung P8 - deltaT
OK, schaue heute Abend zu Hause, ob ich das nachstellen kann.
-
- Computerversteher
- Beiträge: 363
- Registriert: 14. Okt 2014 17:05
Re: Übung P8 - deltaT
Ist repariert. Uninitialisierte Variable.
Re: Übung P8 - deltaT
Danke, dass du nachgeschaut hast! Leider hilft die nun initialisierte Variable in meinem Fall nicht weiter. Wenn ich mir im update()-Schritt oben die Zeiten ausgeben lasse, dann bekomme ich in seltenen Fällen (noch immer) sowas:
Was mir irgendwie nicht logisch erscheint, da das ja bedeutet, dass update() in der Vergangenheit aufgerufen worden wäre..
Im Regelfall sieht das erste update etwa so aus:
Wobei alle übrigen Frames (nach dem ersten Aufruf) etwa so aussehen:
Das Hauptproblem an diesen Zeitwerten für den ersten update()-Aufruf ist, dass die Physik dann verrückt spielt. Aber wenn das Problem zu spezifisch ist, dann überspringe ich einfach weiterhin den ersten Zeitwert von update() durch deltaT = 0, das funktioniert ja
.
Code: Alles auswählen
startTime: 1513291904.000000
System::time(): 1513291872.893172
deltaT: -31.106875
Im Regelfall sieht das erste update etwa so aus:
Code: Alles auswählen
startTime:1513292032.000000
System::time():1513292072.315615
40.315584
Code: Alles auswählen
startTime:1513292032.000000
System::time():1513292072.322055
0.006448

-
- Computerversteher
- Beiträge: 363
- Registriert: 14. Okt 2014 17:05
Re: Übung P8 - deltaT
Das ist seltsam und passiert bei mir nicht. Wenn ich einfach t ausgebe (also time() - startTime), bekomme ich vom ersten Frame an eine aufsteigende Zahlenfolge, beginnend bei 0. Überspring' mal weiter das erste Update, aber wenn Du dazu was rausfindest, gib' mir Bescheid.