Pergunta

Otimizando um jogo que estamos desenvolvendo, estamos enfrentando a fase em que todo ciclo de CPU ganha contagens. Usando radianos para cálculos de posição de objetos circulando em torno de outros objetos e quero cortar a precisão desnecessária nas minhas tabelas de pesquisa. Para isso, fazemos uso pesado de um PI predefinido. Quão preciso deve ser isso?

Então, minha pergunta é:

  • Quão precisa é preciso o suficiente?
  • Ou ainda melhor, Como determinar a precisão necessária?
Foi útil?

Solução

Você também pode torná-lo tão preciso quanto qualquer representação de ponto flutuante que puder armazenar. Não levará mais tempo para executar cálculos usando um número de ponto flutuante mais preciso do mesmo tipo.

A precisão é geralmente medida como número de dígitos significativos; Você precisará decidir por si mesmo quantos dígitos de precisão você está interessado. Se você usar um valor menos preciso para o PI, esse valor da imprecisão se propaga para os outros cálculos em que está.

Outras dicas

Como comparação: acho que a NASA usa Pi com 7 decimais precisão para poder atracar no espaço.

Antes de tudo, precisamos determinar a precisão dos cálculos de sua posição, ou seja, quão precisa as fórmulas do seu programa que dependem do PI precisam ser. Precisamos começar por aí para saber o quão preciso você precisa para conseguir isso.

Uma vez determinado, você provavelmente pode usar uma análise numérica mais ou menos direta para determinar a boa precisão necessária para o PI. Eu posso ajudá -lo com isso, mas preciso das fórmulas de posição para fazer isso :)

EDIT: Suspeito que suas fórmulas sejam linearmente dependentes do PI, ou seja, você não está usando alguma função obscura F (x, y, z, pi), onde Pi é quadrado ou similar. Nesse caso, a precisão da sua fórmula é um fator vezes a precisão do PI, por exemplo, K*EPS (PI). Caso contrário, é basicamente um fator vezes o derivado de F em relação ao PI. Não contar a precisão de todos os outros parâmetros f depende!

Felicidades !

Depende de quantos Dígitos significantes você tem em seu cálculo. Dada a fórmula

C = pi * D

Se você quiser saber quantos polegadas na circunferência de um círculo milha Em diâmetro, você precisaria de seis dígitos de Pi para manter a precisão desejada, pois existem 63.360 polegadas em uma milha e haveria 199.051 polegadas na circunferência. Como existem seis dígitos significativos na resposta, preciso de seis dígitos de Pi para calculá -lo com a precisão necessária.

3.14 * 63,360 = 198950.4

3.142 * 63,360 = 199077.12

3.1416 * 63,360 = 199051.776

3.14159 * 63,360 = 199051.1424

Como você pode ver, recebi a resposta certa neste caso com apenas 5 dígitos do PI, mas nem sempre será o caso. Você precisa de pelo menos tantos dígitos de Pi quanto você tem dígitos significativos para garantir você tem precisão suficiente.

Se você estiver pré -calculando e armazenando -o, basta usar a Biblioteca de Matemática no seu sistema para calculá -lo uma vez com a maior precisão possível. Uma boa opção é:

double PI = (16.0 * atan(1/5)) - (4.0 * atan(1/239));

Isso fornecerá um valor bastante preciso para o PI, que você pode calcular na inicialização e reutilização, conforme necessário. É difícil obter uma versão mais precisa do que a que é facilmente reutilizável.

Não está totalmente claro o que você está fazendo. Você está procurando coordenadas com base em um ângulo? Nesse caso, a precisão do PI não importa. Importante é o tamanho da tabela de pesquisa e, é claro, você a precede com a maior precisão possível. Mais precisão não custa tempo de execução adicional, além de você estar pensando em alterar o tipo de dados de um único para o dobro.

Se você estiver pré-calculador, o valor o torna tão preciso quanto viável para armazenar, mas para obter a verdadeira sensação de que precisão realmente precisa, você precisa olhar para suas fórmulas e a precisão de outros componentes e não garantir a precisão que você tem para Pi corresponde a isso para outros componentes. A análise numérica dará a você uma pista.

A Bíblia diz que o valor de Pi é 3 (link). Então é claro que você deve usar isso :)

nova fórmula para pi

Pi=2.m.sin(90/m)

Pi=3.m.sin(60/m)

Pi=4.m.sin(45/m)

Pi=5.m.sin(36/m)

Para milhões em todo o valor da calculadora livre de Pi XP, XM,… .. Recomendar M = 1.0E+10000000 para o sucesso da calculadora, você precisa instalar o NetFramework2.0

http://harry-j-smith-memorial.com/index.html

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top