Limites mundiais - (0, tamanho) ou (-metade do tamanho, metade do tamanho)?


9

Ao criar um espaço de jogo no qual mover, desenhar e colidir objetos, é melhor ter o ponto (0,0) ou o ponto (0,0,0) no centro do seu espaço, de modo que os limites dos mundos são (-halfSize, halfSize), ou é melhor que ele esteja no canto mais distante do seu espaço, para que os limites sejam (0, tamanho)?

Quais são os prós e os contras de cada um, e que tipo de problemas eles implicam? Ou isso realmente não importa?

Parece um pequeno detalhe, mas eu queria ver se talvez houvesse problemas importantes que talvez eu estivesse ignorando.

Respostas:


15

Parece-me que ter o centro do seu espaço (0, 0, 0) é melhor. Supondo que você esteja usando um formato assinado para representar posições no espaço, um centro de (0, 0, 0) permite que você use as partes negativa e positiva do seu formato, o que pode fazer maravilhas pela precisão de flutuadores e intervalo para números inteiros assinados . Isso pode não importar para escalas pequenas, mas para escalas grandes, pode fazer toda a diferença, ou seja, antes que você precise criar um novo sistema inteiramente.

Só para esclarecer: como você está criando um mundo de jogo, que eu assumo que você está processando, o formato final no qual você converterá será flutuante, que é como você sabe, um formato assinado. Nesse caso, você pode chegar a uma situação em que (0, tamanho) não pode ser representado, enquanto (-HalfSize, HalfSize) pode ser. Se você não planeja renderizar e pode escolher um formato arbitrário, use qualquer um dos estilos, embora eu ainda prefira pessoalmente o estilo mencionado acima.


+1, muitas simulações de física também usam esse intervalo, provavelmente por esse motivo.
MichaelHouse

11

11
Também bastante conhecido, mas possivelmente um pouco difícil para os não iniciados: docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html - "O que cada cientista computador deve saber sobre Floating-Point Arithmetic"
Leander

5

Isso não importa particularmente. Contanto que você seja consistente durante todo o jogo.

Acredito que a abordagem mais comum é ter os limites do mundo centrados (0,0), o que significa que você terá seus limites afastados -halfSize, halfSize. Como a maioria das estruturas de dados que representam a posição (Vetor2 ou Vetor3) é padronizada como zeros, você sabe que o posicionamento padrão dos objetos está no centro do mundo (em vez de no canto inferior).

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.