Weltgrenzen - (0, Größe) oder (-HalfSize, HalfSize)?

9

Wenn Sie einen Spielraum erstellen, in dem Sie Objekte bewegen, zeichnen und kollidieren können, ist es besser, wenn sich der (0,0) -Punkt oder der (0,0,0) -Punkt genau in der Mitte Ihres Raums befindet, sodass Die Grenzen der Welten sind (-halfSize, halfSize), oder ist es besser, wenn sie sich in der äußersten Ecke Ihres Raums befinden, also sind die Grenzen (0, Größe)?

Was sind die Vor- und Nachteile eines jeden und welche Probleme bringen sie mit sich? Oder spielt es wirklich keine Rolle?

Es scheint ein kleines Detail zu sein, aber ich wollte sehen, ob es vielleicht große Probleme gibt, die ich übersehen könnte.

GarrickW
quelle

Antworten:

15

Es scheint mir, dass es besser ist, die Mitte Ihres Raumes (0, 0, 0) zu haben. Angenommen, Sie verwenden ein vorzeichenbehaftetes Format, um Positionen im Raum darzustellen. Mit einem Mittelpunkt von (0, 0, 0) können Sie sowohl den negativen als auch den positiven Teil Ihres Formats verwenden. Dies kann Wunder für die Genauigkeit von Gleitkommazahlen und den Bereich für vorzeichenbehaftete Ganzzahlen bewirken . Dies mag für kleine Maßstäbe nicht von Bedeutung sein, aber für große Maßstäbe kann es den Unterschied ausmachen, dh bevor Sie ein neues System entwickeln müssen.

Nur zur Verdeutlichung: Angesichts der Tatsache, dass Sie eine Spielwelt erstellen, die Sie vermutlich rendern, ist das ultimative Format, in das Sie konvertieren, float, das, wie Sie wissen, ein signiertes Format ist. In diesem Fall kann es vorkommen, dass (0, Größe) nicht dargestellt werden kann, während (-HalfSize, HalfSize). Wenn Sie nicht rendern möchten und ein beliebiges Format auswählen können, verwenden Sie einen der beiden Stile, obwohl ich den oben genannten Stil persönlich immer noch bevorzugen würde.

parar
quelle
+1, wahrscheinlich verwenden auch viele physikalische Simulationen diesen Bereich.
MichaelHouse
1
Nützliche Referenzen: altdevblogaday.com/2012/02/22/…
leander
1
Auch ziemlich bekannt, aber möglicherweise etwas schwierig für Uneingeweihte: docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html - "Was jeder Informatiker über Gleitkomma-Arithmetik wissen sollte"
Leander
5

Es ist nicht besonders wichtig. Solange du während deines Spiels konstant bist.

Ich glaube, der üblichere Ansatz besteht darin, die Grenzen der Welt zu zentrieren (0,0), was bedeutet, dass Sie Ihre Grenzen verlassen müssen -halfSize, halfSize. Da die meisten Datenstrukturen, die die Position darstellen (Vektor2 oder Vektor3), standardmäßig Nullen sind, wissen Sie, dass sich die Standardplatzierung für Objekte im Zentrum der Welt befindet (anstatt in der unteren Ecke).

MichaelHouse
quelle