Órbita Kepler: obtenha posição na órbita ao longo do tempo

8

Estou desenvolvendo um jogo relacionado à simulação espacial e estou tendo alguns problemas para implementar o movimento de estrelas binárias, assim:

Estrela binária

As duas estrelas orbitam seu centróide e suas trajetórias são elipses.

Basicamente, sei como determinar a velocidade angular em qualquer posição, mas não a velocidade angular ao longo do tempo. Portanto, para um determinado ângulo, eu posso facilmente calcular a posição das estrelas (cf. http://en.wikipedia.org/wiki/Orbit_equation ).

Eu gostaria de obter a posição das estrelas ao longo do tempo. Se as equações paramétricas das obras da elipse, mas não dar a velocidade correta: { X(t) = a×cos(t) ; Y(t) = b×sin(t) }.

É possível e como isso pode ser feito?

Artefato2
fonte
Pode ser feito através da simulação de gravidade que é bastante simples (adicionar uma força depende da massa * sqrt (distância) e fazer física simples)
Elva
7
Não, não faça física simples! As órbitas são numericamente instáveis ​​e tudo vai implodir ou explodir.
Jonas Bötel

Respostas:

4

Seguindo alguns links da página da Wikipedia, você faz referência a Position em função do tempo .

Peter Taylor
fonte
11
Obrigado. Parece que vou ter que usar o método Newton para resolver a segunda equação.
Artefact2
0

Você parece ter dados suficientes para produzir a animação útil acima. Sua simulação pode precisar de mais precisão do que a fornecida pela minha solução:

Para cada quadro de sua animação acima, registre as posições de pixel dos centros de cada estrela. Digite esses valores em duas matrizes no seu programa. Por um determinado tempo t, encontre as quatro entradas consecutivas correspondentes em cada matriz e faça um filtro bicúbico para produzir a posição de cada estrela.

bmcnett
fonte
Na verdade, a animação é da Wikipedia.
precisa
0

Eu achei a integração numérica a maneira mais fácil. A lei do quadrado inverso (F = GM / r ^ 2) funciona muito bem. E o pedido Runge Kutta, geralmente chamado de RK4, é fácil de implementar e funciona bem silenciosamente. Você começa escrevendo uma rota que leva a derivada de tempo de primeira ordem, por exemplo, para um único objeto no espaço 2D, você tem coordenadas X e Y e velocidades X e Y. A saída é a derivada do tempo, a derivada do tempo da posição é simplesmente velocidade; portanto, metade dela é apenas cópia de valores; a aceleração é apenas a atração gravacional. Então você segue a prescrição Runge Kutta. O erro de um único intervalo de tempo é proporcional ao intervalo de tempo para a quinta potência. Você ajusta a etapa do tempo para tornar o resultado preciso o suficiente. Uma vantagem da integração numérica é se você deseja jogar com o sistema para torná-lo mais interessante,


fonte
Bem, sim, esta é uma solução, mas meu programa não é uma simulação de física em tempo real. É discreto e não consigo atualizar tudo em qualquer lugar. É por isso que a posição em função do tempo é boa: não precisa de computação, sempre exata, independentemente da frequência com que as posições são atualizadas.
Artefact2