Órbita de Kepler: obtenga posición en la órbita con el tiempo

8

Estoy desarrollando un juego relacionado con la simulación espacial, y tengo problemas para implementar el movimiento de estrellas binarias, como este:

Estrella binaria

Las dos estrellas orbitan su centroide, y sus trayectorias son elipses.

Básicamente sé cómo determinar la velocidad angular en cualquier posición, pero no la velocidad angular con el tiempo. Entonces, para un ángulo dado, puedo calcular muy fácilmente la posición de las estrellas (véase http://en.wikipedia.org/wiki/Orbit_equation ).

Me gustaría obtener la posición de las estrellas con el tiempo. Las ecuaciones paramétricas de las obras de la elipse, pero no da a la velocidad correcta: { X(t) = a×cos(t) ; Y(t) = b×sin(t) }.

¿Es posible y cómo se puede hacer?

Artefacto2
fuente
Podría hacerse simulando la gravedad, que es bastante simple (agregue una fuerza dependiente de la masa * sqrt (distancia) y haga una física simple)
Elva
77
¡No, no hagas física simple! Las órbitas son numéricamente inestables y todo explotará o explotará.
Jonas Bötel

Respuestas:

4

Siguiendo algunos enlaces de la página de Wikipedia, usted hace referencia a Posición en función del tiempo .

Peter Taylor
fuente
1
Gracias. Parece que tendré que usar el método de Newton para resolver la segunda ecuación.
Artefact2
0

Parece que ha tenido suficientes datos para producir la práctica animación anterior. Su simulación puede necesitar más precisión que la que proporciona mi solución:

Para cada cuadro de su animación anterior, registre las posiciones de píxeles de los centros de cada estrella. Ingrese estos valores en dos matrices en su programa. Para un tiempo dado t, encuentre las cuatro entradas consecutivas correspondientes en cada matriz y haga un filtro bicúbico en ellas para producir la posición de cada estrella.

bmcnett
fuente
En realidad, la animación es de Wikipedia.
Artefact2
0

He encontrado que la integración numérica es la forma más fácil. La ley del cuadrado inverso (F = GM / r ^ 2) funciona bastante bien. Y Runge Kutta orden cuatro a menudo llamado RK4 es fácil de implicar y funciona bien silenciosamente. Empiezas escribiendo una rutina que toma una derivada de tiempo de primer orden, por ejemplo, para un solo objeto en el espacio 2D, tienes coordenadas X e Y, y velocidades X e Y. La salida es la derivada del tiempo, la derivada del tiempo de la posición es simplemente la velocidad, por lo que la mitad es solo copiar valores, luego la aceleración es solo la atracción gravitacional. Luego sigues la receta de Runge Kutta. El error de un solo paso de tiempo es proporcional al paso de tiempo hasta la quinta potencia. Ajusta el paso de tiempo para que el resultado sea lo suficientemente preciso. Una ventaja de la integración numérica es si quieres jugar con el sistema para hacerlo más interesante,


fuente
Bueno, sí, esta es una solución, pero mi programa no es una simulación física en tiempo real. Es discreto y no puedo actualizar todo en todas partes. Esta es la razón por la cual la posición en función del tiempo es agradable: no necesita computación, siempre es exacta, no importa con qué frecuencia se actualicen las posiciones.
Artefact2