Calcular a posição de um corpo de aceleração depois de um certo tempo [fechado]
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?
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)