World Bounds - (0, Size) o (-HalfSize, HalfSize)?


9

Quando si crea uno spazio di gioco in cui spostare, disegnare e scontrare oggetti, è meglio avere il punto (0,0) o il punto (0,0,0), al centro del proprio spazio, in modo tale che i limiti dei mondi sono (-halfSize, halfSize), o è meglio averlo nell'angolo più lontano del tuo spazio, quindi i limiti sono (0, size)?

Quali sono i pro e i contro di ciascuno e che tipo di problemi comportano ciascuno? O davvero non importa?

Sembra un dettaglio minore, ma volevo vedere se ci fossero forse problemi importanti che potrei trascurare.

Risposte:


15

Mi sembra che avere il centro del tuo spazio sia (0, 0, 0) sia meglio. Supponendo che tu stia utilizzando un formato con segno per rappresentare le posizioni nello spazio, un centro di (0, 0, 0) ti consente di utilizzare sia le parti negative che positive del tuo formato, il che può fare miracoli per la precisione per i float e l' intervallo per gli interi con segno . Questo potrebbe non essere importante per le scale di piccole dimensioni, ma per le scale di grandi dimensioni può fare la differenza, vale a dire, prima che tu debba inventare un nuovo sistema completamente.

Giusto per chiarire: dato che stai creando un mondo di gioco, che presumo tu stia visualizzando, il formato finale in cui convertirai sarà float, che è come sai, un formato firmato. In tal caso, potresti arrivare a una situazione in cui (0, Dimensione) non può essere rappresentato, mentre (-HalfSize, HalfSize) può essere. Se non si prevede di eseguire il rendering e si può scegliere un formato arbitrario, utilizzare entrambi gli stili, anche se preferirei comunque personalmente lo stile di cui sopra.


+1, molte simulazioni fisiche usano anche questo intervallo, probabilmente per questo motivo.
MichaelHouse


1
Anche abbastanza noto ma forse un po 'difficile per i non iniziati: docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html - "Ciò che ogni scienziato informatico dovrebbe sapere sull'aritmetica a virgola mobile"
leander

5

Non importa particolarmente. Finché sei coerente durante tutto il gioco.

Credo che l'approccio più comune sia quello di centrare i confini del mondo (0,0), il che significa che dovresti allontanarli -halfSize, halfSize. Poiché la maggior parte delle strutture di dati che rappresentano la posizione (Vector2 o Vector3) sono predefinite sugli zeri, sai che il posizionamento predefinito per gli oggetti è al centro del mondo (anziché nell'angolo in basso).

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.