Já existe uma boa resposta sobre números inteiros, mas acho que os pontos flutuantes não devem ser eliminados. Em sua resposta, Byte56 optou pela órbita máxima de Plutão, provavelmente extraída desta planilha de excel , então vou manter isso.
Isso coloca os limites do sistema solar em:
Qual a fórmula para converter de centímetros para centímetros?
O formato de ponto flutuante de precisão dupla oferece uma precisão máxima de 15 casas decimais significativas. Então, você tem sorte: se sua origem está no centro do Sol e você usa uma posição em torno de Plutão, você pode representar todos os centímetros, por exemplo, em C ++:
printf("%.0Lf\n", 7.4e14);
printf("%.0Lf\n", 7.4e14 + 1.0);
printf("%.0Lf\n", 7.4e14 + 2.0);
Output:
-------
740000000000000
740000000000001
740000000000002
Então, se você pode limitar seu jogo à órbita de Plutão, parabéns! Você tem precisão suficiente com dobras para representá-lo.
Cuidado, porém, é o suficiente para representá-lo em uma simulação , mas não espere render isso sem esforço. Você terá que converter para carros alegóricos de 32 bits, talvez alterar sua origem para obter precisão suficiente nos objetos próximos, e provavelmente precisará contar com alguns truques de buffer Z e frustum da câmera para obter tudo isso para renderizar corretamente .
Agora, se você quiser que seus astronautas visitem alguns cometas distantes na nuvem de Oort , que é bem maior, então acabou. Cerca de 10 ^ 16 cm, você começa a perder a precisão:
printf("%.0Lf\n", 1.0e16);
printf("%.0Lf\n", 1.0e16 + 1.0);
printf("%.0Lf\n", 1.0e16 + 2.0);
Output:
-------
10000000000000000
10000000000000000 <-- oops
10000000000000002
E piora ainda mais, é claro.
Portanto, se você estiver nesse caso, convém tentar algumas soluções mais avançadas. Sugiro que você dê uma olhada no artigo de Peter Freeze em Game Programming Gems 4: "2.3 Resolvendo problemas de precisão nas grandes coordenadas mundiais". Segundo o IIRC, ele sugere um sistema que atenda às suas necessidades, é de fato algum tipo de vários espaços coordenados diferentes.
Essas são apenas algumas dicas, você provavelmente terá que usar uma receita sua para fazer isso funcionar. Alguém que já implementou esse tipo de coisa pode ajudá-lo mais. Por que não enviar um email para os caras por trás do Kerbal Space Program, por exemplo?
Boa sorte com seu jogo!