Estoy trabajando en una simulación de física básica para un juego y necesito simular la gravedad. Tengo un sistema funcionando que se está comportando más o menos correctamente hasta ahora, pero quiero ver si puedo enviar un proyectil a una órbita estable dándole una velocidad inicial .
Entiendo que la siguiente ecuación expresa la velocidad de una órbita estable alrededor de una masa,
Puedo usar esta ecuación para crear una órbita estable, pero no establecer una velocidad inicial y luego dejar que la gravedad haga el trabajo. Solo funciona si calculo los componentes {x, y} de v y establezco ese vector como la velocidad de los proyectiles cada vez que renderizo la escena. La dirección del vector siempre se calcula para ser perpendicular en dirección a la línea que representa la fuerza gravitacional hacia el centro de la masa.
Entonces, mi pregunta es esencialmente si esta ecuación está destinada a encontrar una velocidad inicial adecuada y, de no ser así, ¿hay otra forma? No tengo claro si existe alguna distinción significativa entre calcular v como una velocidad orbital estable versus v como una velocidad inicial que se resuelve en una órbita estable.
O, alternativamente, podría ser más apropiado decir que necesito darle al proyectil y la fuerza o aceleración inicial que se resuelve en una órbita estable (como una velocidad de escape, más o menos).
Gracias.
EDITAR: así es como calculo el vector de aceleración gravitacional en un punto determinado. Sean (x, y) el punto de interés, (x1, y1) el centro de masa, dx la aceleración de la componente x y dy la aceleración de la componente y:
1) seperation of the points
sep_x = x1 - x;
sep_y = y1 - y;
2) effect of gravity given distance between points
gravity = (G * mass) / radialDistance ^ 2
3) break down into components
dx = (gravity * sep_x) / radialDistance ^ 3
dy = (gravity * sep_y) / radialDistance ^ 3
El satélite permanecerá en órbita estable si su velocidad inicial es inferior a a menos que el pericentro de la órbita sea demasiado bajo, en cuyo caso el satélite chocará contra el cuerpo central. En particular, si la velocidad del satélite es y perpendicular a permanecerá en una órbita circular estable.
Es muy fácil ver eso a partir del balance de energía. Anotemos la energía cinética y potencial del satélite.
Si la energía total del satélite es negativa, no puede ir al infinito y está confinado a la vecindad del cuerpo central y residirá en una órbita elíptica. Si la energía total es positiva, se irá volando.
Sospecho que resuelves ecuaciones de movimiento incorrectamente. Para cualquier coordenada y velocidad iniciales, el satélite circulará en una órbita elíptica (o circular) o volará en una órbita hiperbólica.
Para calcular la trayectoria del satélite, necesita resolver ecuaciones de movimiento. Existe una solución analítica para el caso de dos cuerpos. Pero si desea agregar más cuerpos masivos o tener en cuenta los propulsores o la resistencia atmosférica, deberá usar la integración numérica. Vamos a escribirlos. Los escribí en forma adecuada para la integración numérica.
La solución también debe satisfacer las condiciones iniciales.
Aquí hay una regla muy simple para la integración numérica. es un paso de tiempo para la integración y es la aceleración en el i-ésimo momento del tiempo.
Este método en particular es una mala elección para la simulación. Hay métodos mucho mejores, por ejemplo Runge-Kutta.
Al leer los muchos comentarios tengo varias preocupaciones.
Sobre la cuestión de cómo funcionan la gravedad y las órbitas.
Estoy un poco preocupado por el uso de la frase "caer en órbita" , que es conveniente pero filosóficamente arriesgada. Un cuerpo en una aproximación parabólica o hiperbólica (es decir, literalmente cayendo) no obtiene una trayectoria cerrada (es decir, una órbita) sin empuje o la intervención de una fuerza exterior (por ejemplo, perturbaciones gravitatorias de un tercer cuerpo). En ese sentido, no hay diferencia entre la velocidad inicial en una órbita particular y la velocidad en evolución en esa misma órbita.
Inyectar cuerpos en órbita es un problema importante, pero no tengo la sensación de que esto sea lo que Sean está haciendo.
En cuanto a lo que se entiende por vector
No es cierto que el vector deba expresarse como ser significativo, es igual de significativo. Generalmente es más conveniente usar representaciones cartesianas en una simulación, pero eso no es fundamental
Sobre la cuestión de cómo funcionan las simulaciones
Si está simulando la gravedad de forma ingenua (y así es como debería hacerlo hasta que se sienta cómodo con la simulación), entonces no debería volver a calcular la órbita desde
Las órbitas resultan ser casos complicados, por lo que le sugiero que alterne entre actualizar las posiciones en un paso y las velocidades en el siguiente (es bien sabido que este enfoque de salto de rana conserva la energía orbital cuando otros métodos ingenuos no lo hacen).
Arruinaste tu código. Estás tomando los componentes de la gravedad dividiendo por 1/r^2 por segunda vez, cuando ya lo hiciste en el paso original de calcular la fuerza gravitacional.
Debe establecer G en 1. Esto solo redefine la unidad de masa, pero evita confusiones porque en unidades ordinarias G es enormemente pequeño.
Aquí está el algoritmo correcto. Simplemente elimina los cubos de los componentes de aceleración.
1) seperation of the points
sep_x = x1 - x;
sep_y = y1 - y;
2) effect of gravity given distance between points
gravity = (G * mass) / radialDistance ^ 2
3) break down into components
dx = (gravity * sep_x) / radialDistance
dy = (gravity * sep_y) / radialDistance
Su simulación original sigue siendo interesante --- está calculando el movimiento en un campo de fuerza 1/r^4, un potencial 1/r^3. Este tipo de cosas no son físicamente relevantes para el sistema solar, pero es un buen ejercicio matemático. Puedes ver que no lo hiciste bien porque las órbitas precesan en dicho campo, en lugar de hacer elipses cerradas.
Para obtener las nuevas velocidades, supongo que multiplicas dx y dy por una pequeña cantidad y las restas de v_x y v_y, las componentes x e y de la velocidad, como deberías, porque no tienes un signo menos en tu fórmula de fuerza. . Luego agrega v_x y v_y veces la misma pequeña cantidad a la posición actual. Todo esto es asumiendo una unidad de masa, lo cual está bien, porque asumo que no mueves tu centro gravitacional en absoluto durante la simulación.
AdamRedwine
Sean Thoman
AdamRedwine
Sean Thoman
AdamRedwine
Sean Thoman
AdamRedwine
Sean Thoman
dmckee --- gatito ex-moderador
dmckee --- gatito ex-moderador