Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!
Werbeanzeige
Ich denke, er bezieht sich auf 64-Bit-Festkommazahlen. Aber auch da bringt das nichts: Möchte man die Länge eines Vektors, der sich über so eine Distanz erstreckt, berechnen, muss man die 18 Millionen km zum Quadrat nehmen. Dann hat man eine Präzision von 36 Metern (besser als mit double, das dann auf einen Kilometer aufgelöst wäre, aber immernoch etliche Bits von Nanometern entfernt).Ich glaube da unterliegst Du einem Irrtum. Wenn Du Abstände zwischen Mond und Erde korrekt modellierst, wirst Du feststellen, dass sich Nanometer eben nicht mehr bestimmen lassen. Sogar mit Zentimetern wird es dann schon problematisch. Double kann zwar große Wertebereiche abdecken, aber die Genauigkeit ist relativ zum absoluten Wert des Doubles. Große Zahlen führen dazu, dass Nachkommastellen oder sogar die unteren Stellen vor dem Komma nicht mehr dargestellt werden können. Bei Double sind das in etwa 15 Stellen. Da wird bei den 18.446.744km nix mehr die Nanometer aufzulösen, die stolze 20 Stellen bräuchten.Mit 64Bit Werten wie ich sie heute verwenden würde, kaum noch. Bei einer Genauigkeit von einem Nanometer, würde der Wertebereich für bis zu 18 446 744km Abstand reichen. Das reicht locker, als das von der Erde aus, auch noch der Mond mit in den Wertebereich passt.
Community-Fossil
Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer
Ich vermute die FPU rechnet nur bei Fließkommazahlen mit vierfacher (also intern 128 Bits) Genauigkeit - Festkomma kann sie ja außer bei SSE/Konsorten ja eigentlich gar nicht? Oder wie sehen da die aktuellen Generationen aus? Ich bin da schon eine ganze Weile nicht mehr groß interessiert dran (eigentlich ging an mir alles nach SSE 1 vorbei). Wenn ich Recht habe, dann hat man mit Fixkomma natürlich ziemlich schnell verloren, wie Du ja auch schon sagst. Allerdings dürfte eine Längen-Berechnung auf der FPU mit 64-Bit-Fließkomma doch ziemlich genau ausfallen wegen der internen Vergrößerung des Wertebereichs auf 128 Bit. Oder nicht? Und selbst wenn nicht, sehe ich da kein Problem, da die Multiplikation und Wurzel ja eigentlich numerisch stabil ist. Damit müsste man doch eigentlich immer gut eine Länge berechnen können. Mehrere Vektoren zu addieren hingegen stellen wohl eher ein Problem gerade bei iterativen System wie Physik-Engines dar. Die würden da ganz schnell nur noch Mist ausrechnen. Ich lasse mich hier gern korrigieren, sehe nämlich das Problem nicht. Box2D rechnet allerdings beispielsweise schon bei sehr kleinen Werte-Spannen schnell nur noch Quatsch aus (Welt der Größe 100x100 Metern lässt oft schon kaum noch Zentimeter-Werte sinnvoll erscheinen).Möchte man die Länge eines Vektors, der sich über so eine Distanz erstreckt, berechnen, muss man die 18 Millionen km zum Quadrat nehmen.
Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »BlueCobold« (16.04.2014, 08:57)
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Krishty« (16.04.2014, 08:43)
Community-Fossil
Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »BlueCobold« (16.04.2014, 09:02)
Nein, ich meinte eigentlich FPUs (und damit heutige CPUs, da das alles eins ist). Das Ergebnis der Multiplikation zweier 64-Bit-Operanden sollte intern doch auf 128 Bit erweitert ausgerechnet werden.
Community-Fossil
Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer
Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »BlueCobold« (16.04.2014, 09:29)
Werbeanzeige