Límites mundiales: (0, tamaño) o (-medio tamaño, medio tamaño)?

9

Al crear un espacio de juego en el que moverse, dibujar y colisionar objetos, ¿es mejor tener el punto (0,0) o el punto (0,0,0) en el centro de su espacio, de modo que los límites de los mundos son (-medio tamaño, medio tamaño), o ¿es mejor que esté en la esquina más alejada de su espacio, entonces los límites son (0, tamaño)?

¿Cuáles son los pros y los contras de cada uno y qué tipo de problemas conllevan? ¿O realmente no importa?

Parece un detalle menor, pero quería ver si quizás había problemas importantes que podría estar pasando por alto.

GarrickW
fuente

Respuestas:

15

Me parece que es mejor tener el centro de su espacio (0, 0, 0). Suponiendo que está utilizando un formato con signo para representar posiciones en el espacio, un centro de (0, 0, 0) le permite usar las partes negativas y positivas de su formato, lo que puede hacer maravillas para la precisión de los flotantes y el rango de los enteros con signo. . Esto puede no importar para escalas pequeñas, pero para escalas grandes puede marcar la diferencia, es decir, antes de tener que crear un nuevo sistema por completo.

Solo para aclarar: dado que está creando un mundo de juegos, que supongo que está renderizando, el formato definitivo al que convertirá será flotante, que es, como saben, un formato firmado. En ese caso, puede llegar a una situación en la que (0, Size) no se puede representar, mientras que (-HalfSize, HalfSize) sí. Si no planea renderizar y puede elegir un formato arbitrario, use cualquiera de los estilos, aunque personalmente preferiría el estilo mencionado anteriormente.

parar
fuente
+1, muchas simulaciones físicas también usan este rango, probablemente por esta razón.
MichaelHouse
1
Referencias útiles: altdevblogaday.com/2012/02/22/…
leander
1
También bastante conocido pero posiblemente un poco difícil para los no iniciados: docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html - "Lo que todo informático debe saber sobre la aritmética de punto flotante"
leander
5

No importa particularmente. Siempre y cuando seas constante a lo largo de tu juego.

Creo que el enfoque más común es centrar los límites mundiales (0,0), lo que significa que los límites van de-halfSize, halfSize . Dado que la mayoría de las estructuras de datos que representan la posición (Vector2 o Vector3) están predeterminadas a ceros, usted sabe que la ubicación predeterminada de los objetos está en el centro del mundo (en lugar de en la esquina inferior).

MichaelHouse
fuente