Morgen alle zusammen,
bin u.a. gerade dabei eine kleine 3D Software Engine zu schreiben. Mehr zum Lernen als das nachher auch wirklich produktiv einzusetzen. Aber wer weiß... :wink:
Dabei ist mir folgende Problematik aufgefallen:
Aktuell verwalte ich die Koordinaten als double-Werte. Das heist aber, das die Genauigkeit im Ursprung des Universum am größten ist bzw. mit der Entfernung zum Ursprung abnimmt. Hier zwei Beispiele dazu (nur zur Veranschaulichung):
Beispiel 1:
Alte Koordinate 0,010000000000000
Bewegung +0,010000000000000
Neue Koordinate 0,020000000000000
Beispiel 2:
Alte Koordinate 10000000000000,0
Bewegung +0,010000000000000
Neue Koordinate 10000000000000,0
Sprich wenn sich ein Objekt mit einer gleichbleibende Geschwindigkeit zum Rand bewegt, wird u.U. - je nach Bewegungsgeschwindigkeit - immer langsamer und schließlich bleibt es stehen.
Irgendwelche Ideen? Außer das vielleicht irgendwann in Java ein Gleitkommatyp implementiert wird, der eine höhere Genauigkeit hat?
Man könnte sicher auch einen BigDecimal verwenden. Aber das würde dann ja ziemlich langsam werden, oder.
bin u.a. gerade dabei eine kleine 3D Software Engine zu schreiben. Mehr zum Lernen als das nachher auch wirklich produktiv einzusetzen. Aber wer weiß... :wink:
Dabei ist mir folgende Problematik aufgefallen:
Aktuell verwalte ich die Koordinaten als double-Werte. Das heist aber, das die Genauigkeit im Ursprung des Universum am größten ist bzw. mit der Entfernung zum Ursprung abnimmt. Hier zwei Beispiele dazu (nur zur Veranschaulichung):
Beispiel 1:
Alte Koordinate 0,010000000000000
Bewegung +0,010000000000000
Neue Koordinate 0,020000000000000
Beispiel 2:
Alte Koordinate 10000000000000,0
Bewegung +0,010000000000000
Neue Koordinate 10000000000000,0
Sprich wenn sich ein Objekt mit einer gleichbleibende Geschwindigkeit zum Rand bewegt, wird u.U. - je nach Bewegungsgeschwindigkeit - immer langsamer und schließlich bleibt es stehen.
Irgendwelche Ideen? Außer das vielleicht irgendwann in Java ein Gleitkommatyp implementiert wird, der eine höhere Genauigkeit hat?
Man könnte sicher auch einen BigDecimal verwenden. Aber das würde dann ja ziemlich langsam werden, oder.