¿Cuáles son las variables necesarias para calcular una línea de trayectoria para orbitar un planeta en unidad?

Si bien la mecánica orbital no es lo mío, lo haría de esta manera:

Para fines prácticos, el movimiento físico se rige por las leyes de newton:

[matemáticas] F = m * a [/ matemáticas]

[matemáticas] S = v * t + a * t * t / 2 [/ matemáticas]

[matemáticas] v = v0 + a * t [/ matemáticas]

F – fuerza aplicada al cuerpo.

M – masa.

a – aceleración.

S – distancia recorrida.

v – velocidad (v0 velocidad anterior)

t – tiempo.

Además de eso, hay una fórmula para la fórmula gravitacional entre dos cuerpos (ver: Ley de Newton de la gravitación universal – Wikipedia):

[matemáticas] F = G * m1 * m2 / (r ^ 2) [/ matemáticas]

La fuerza de gravedad entre cuerpos equivale a la masa del primer cuerpo multiplicada por la masa del segundo cuerpo, multiplicada por la constante gravitacional ((6.674 × 10−11 N · (m / kg) 2), dividida por la distancia al cuadrado.

Entonces, ¿por qué estoy explicando la física?

Para calcular la siguiente posición de un cuerpo, necesita saber, la posición actual del cuerpo, la velocidad, las fuerzas aplicadas a él. Usando los que calculas la aceleración corporal para el cuadro actual, y usando esa aceleración, calculas el cambio de velocidad y posición. Básicamente, cada cuadro que haces:

force = collectForces ()
currentAcceleration = force / object.mass
nextPostiion = currentPostiion + currentVelocity * deltaTime + currentAcceleration * deltaTime * deltaTime / 2
nextVelocity = currentVelocity + currentAcceleration * t

Y puede simular físicamente el movimiento correcto (bueno, más o menos correcto, habrá pequeños errores numéricos que se acumularán con el tiempo).

En este método, la gravedad entra en juego en la fase de “reunir fuerzas”, donde se incluye en el vecotor de fuerza de resumen.

Ahora … trayectoria.

Hay fórmulas para la mecánica orbital, la cuestión es que no estoy familiarizado con ninguna de ellas.

Sin embargo, lo que puede hacer es aplicar un método simple: tome los parámetros iniciales y luego, en un bucle, calcule las posiciones usando pequeños pasos de tiempo fijos.

básicamente:

fixedTimeStep = 1.0f // 1 segundo
resultTrajectory = nueva Lista ()
startPosition = …
startVelocity = …
objectMass = …

currentPos = startingPosition
currentVel = startingVelcoity
resultTrajectory.append (currentPos)
por N veces {
currentForce = collectForces ()
currentAccel = currentForce / mass
deltaT = fixedTimeStep
nextPos = currentPos + currentVel * deltaT + currentAccel * deltaT * deltaT * 0.5
nextVel = currentVel + currentAccel * deltaT
resultTrajectory.append (nextPos)
currentPos = nextPos
currentVel = nextVel
}

Y esto le dará una trayectoria de objeto para la duración específica.

Debido a que esta fórmula básica es muy simple, es muy rápida, por lo que no tendrá problemas para calcular algunos miles de puntos de trayectoria por cuadro.

Para obtener información adicional, puede consultar los documentos de Chris Hecker sobre la dinámica del cuerpo rígido

Dinámica del cuerpo rígido

No tengo ninguna experiencia con Unity, pero sí sé algunas cosas sobre la mecánica orbital. La cuestión es que no sé si desea lanzar algo en órbita o simplemente llevarlo de A a B en la superficie en una trayectoria suborbital.

En cualquier caso, hay muchas cosas que pueden causar problemas. Por cada trayectoria en un planeta como la Tierra, la atmósfera ralentizará las cosas. Esto hace que las predicciones sean muy difíciles porque es difícil calcular las propiedades aerodinámicas de un cohete o proyectil. Si desea calcular una (sub) órbita, también debe conocer el radio del planeta, su peso y la velocidad de la superficie (causada por la rotación del planeta) en el punto de lanzamiento. Esto hace que el lanzamiento sea más eficiente.

Comente con más información sobre lo que desea calcular. He hecho la mayoría de estos cálculos yo mismo últimamente, así que tal vez puedas ayudarme trazándolo en Unity.