Calcular a posição de um corpo de aceleração depois de um certo tempo [fechado]

StackOverflow https://stackoverflow.com/questions/153507

  •  03-07-2019
  •  | 
  •  

Pergunta

Como faço para calcular a posição de um órgão de aceleração (carro por exemplo a) depois de um determinado período de tempo (por exemplo, 1 segundo)?

Para um corpo em movimento que não acelerando, é uma relação linear, então eu presumo para um corpo acelerando envolve um lugar quadrado.

Todas as idéias?

Foi útil?

Solução

A equação é: s = ut + (1/2) um t ^ 2

em que s é a posição, u é a velocidade em t = 0, t é o tempo e a é uma aceleração constante.

Por exemplo, se um carro começa estacionário, e acelera de dois segundos, com uma aceleração de 3m / s ^ 2, move-se (1/2) * 3 * 2 ^ 2 = 6m

Esta equação é resultado da integração analiticamente as equações afirmando que a velocidade é a mudança taxa de-de posição e aceleração é a taxa de variação da velocidade.

Geralmente em uma situação de jogo-programação, pode-se usar uma formulação um pouco diferente: em cada quadro, as variáveis ??de velocidade e posição não são integradas analiticamente, mas numericamente:

s = s + u * dt;
u = u + a * dt;

onde dt é o comprimento de um quadro (medido usando um medidor de tempo: 1/60 segundo ou menos). Este método tem a vantagem de que a aceleração pode variar no tempo.

Editar Um casal de pessoas têm notado que o método de Euler de integração numérica (como mostrado aqui), embora o mais simples de demonstrar com, tem bastante pobre precisão. Consulte Velocity Verlet (muitas vezes usado em jogos), e 4ª ordem Runge Kutta (um método 'standard' para aplicações científicas) para algoritmos melhorados.

Outras dicas

Bem, isso depende se ou não a aceleração é constante. Se for, é simplesmente

s = ut+1/2 at^2

Se um não é constante, você precisa integradas numericamente. Agora, há uma variedade de métodos e nenhum deles vai bater fazendo isso com a mão para a exatidão, como são todas as soluções em última instância aproximados.

O mais fácil e menos precisa é de Euler método . Aqui você dividir o tempo em pedaços discretos chamados passos de tempo, e executar

v[n] = v[n-1] * t * a[t]

n é índice, t é o tamanho de um passo de tempo. Posição é semelhante atualizado. Esta é apenas realmente bom para aqueles casos onde a precisão não é tão importante. Uma versão especial do método de Euler irá produzir uma solução exata para o movimento de projéteis (veja wiki), por isso, enquanto este método é bruto, pode ser perfeito para alguns suituations.

O método de integração mais comum numérica usada em jogos e em algumas simulações de química é Velocity Verlet , que é uma forma especial do método Verlet mais genérico. Eu recomendaria este se Euler é muito bruto.

Você pode pesquisar no Google. Eu encontrei esta: http: // www. ugrad.math.ubc.ca/coursedoc/math101/notes/applications/velocity.html

Mas se você não quiser ler, é:

p (t) = x (0) + v (0) * t + (1/2) a t ^ 2

onde

  • p (t) = posição no tempo t
  • x (0) = posição no tempo zero
  • v (0) = velocidade no tempo zero (se você não tem uma velocidade, você pode ignorar este termo)
  • A = a aceleração
  • t = Seu atual itme

Assumindo que você está lidando com aceleração constante, a fórmula é:

= distância (initial_velocity * tempo) + (aceleração * hora * tempo) / 2

onde

distância é a distância percorrida

initial_velocity é a velocidade inicial (zero se o corpo está inicialmente em repouso, para que você pode deixar cair este termo, nesse caso)

tempo é o momento

aceleração é a aceleração (constante)

Certifique-se de usar as unidades adequadas para o cálculo, isto é, metros, segundos e assim por diante.

Um livro muito bom sobre o tema é Physics for Game Developers .

Assumindo aceleração constante e uma velocidade inicial v0,

x(t) = (1/2 * a * t^2) + (v0 * t)
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top