¿Qué significan las líneas verticales sombreadas en la animación de las ayudas de gravedad de las sondas espaciales?

¿Estás hablando de estas líneas (flecha roja)? imgur.com/ef0UY5z Sugiera agregar esta imagen a su pregunta (puedo hacerlo si su representante no lo permite). De todos modos, parece que es la distancia desde el plano de la eclíptica.
@OrganicMarble - Sí, esas líneas. No pude agregar la foto.
Ok, lo haré, no hay problema.
@OrganicMarble: pero los planos orbitales de todos los planetas no son muy diferentes del plano de la eclíptica. ¿Estás seguro de que es la distancia desde la eclíptica? Como no tiene sentido aumentar continuamente la distancia.
No respondo, solo comento. Alguien vendrá y dará una buena respuesta.
@OrganicMarble - Genial. Gracias.
@OrganicMarble Acabo de notar que ya respondiste en un comentario, edité mi respuesta para hacer referencia a ella.
@uhoh Gracias, solo estaba adivinando. Escribiste una respuesta autorizada.

Respuestas (1)

@OrganicMarble lo clavó: ... parece que es la distancia desde el plano de la eclíptica.

Sí, es la altura por encima/por debajo de la eclíptica, una forma de representar 3D en un gráfico 2D.

Al principio pensé que podrían ser vectores de empuje como estos , pero no, estos son arcos balísticos. En cambio, estoy 99,44% seguro de que estas líneas se usan para indicar la altura por encima o por debajo del plano de la eclíptica.

A continuación se muestra el GIF de Pioneer 11 desde la Tierra hasta un sobrevuelo de Júpiter a Saturno. Descargué los datos de Horizons de JPL y los tracé. En el gráfico 2D en el plano de la eclíptica he añadido líneas cada 100 días cuyas longitudes en el y ^ dirección son iguales a la posición en z . Parece coincidir bien.

ingrese la descripción de la imagen aquí

ingrese la descripción de la imagen aquí

ingrese la descripción de la imagen aquí

ingrese la descripción de la imagen aquí

ingrese la descripción de la imagen aquí

cuadro final de este GIF

import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

class Body(object):
    def __init__(self, name):
        self.name = name

def rotate_it(vec, theta):
    cth, sth = [f(theta) for f in (np.cos, np.sin)]
    x, y, z = vec
    xr = cth*x - sth*y
    yr = cth*y + sth*x
    return np.vstack((xr, yr, z))

def makecubelimits(axis, centers=None, hw=None):
    # xlims, ylims, zlims = ax.get_xlim(), ax.get_ylim(), ax.get_zlim()
    lims = ax.get_xlim(), ax.get_ylim(), ax.get_zlim()
    # llims, ulims = zip(*lims)
    if centers == None:
        centers = [0.5*sum(pair) for pair in lims] 

    if hw == None:
        widths  = [pair[1] - pair[0] for pair in lims]
        hw      = 0.5*max(widths)
        ax.set_xlim(centers[0]-hw, centers[0]+hw)
        ax.set_ylim(centers[1]-hw, centers[1]+hw)
        ax.set_zlim(centers[2]-hw, centers[2]+hw)
        print ('hw was None so set to: ', hw)
    else:
        try:
            hwx, hwy, hwz = hw
            print('ok hw requested: ', hwx, hwy, hwz)

            ax.set_xlim(centers[0]-hwx, centers[0]+hwx)
            ax.set_ylim(centers[1]-hwy, centers[1]+hwy)
            ax.set_zlim(centers[2]-hwz, centers[2]+hwz)
        except:
            print ('nope hw requested: ', hw)
            ax.set_xlim(centers[0]-hw, centers[0]+hw)
            ax.set_ylim(centers[1]-hw, centers[1]+hw)
            ax.set_zlim(centers[2]-hw, centers[2]+hw)

    return centers, hw

names  = ['Sun', 'Earth', 'Jupiter', 'Saturn', 'Pioneer_11']

halfpi, pi, twopi = [f*np.pi for f in [0.5, 1.0, 2.0]]
degs, rads        = 180./pi, pi/180.
AU                = 149597870.700  # kilometers

bodies = []
for name in names: # horizons_results Pioneer_11.txt
    fname = 'horizons_results ' + name + '.txt'
    with open(fname, 'r') as infile:
        lines = infile.read().splitlines()

    iSOE = [i for i, line in enumerate(lines) if "$$SOE" in line][0]
    iEOE = [i for i, line in enumerate(lines) if "$$EOE" in line][0]

    print(iSOE, iEOE, lines[iSOE], lines[iEOE])
    lines = [line.split(',') for line in lines[iSOE+1:iEOE]]
    JD  = np.array([float(line[0]) for line in lines])
    pos = np.array([[float(item) for item in line[2:5]] for line in lines])
    vel = np.array([[float(item) for item in line[5:8]] for line in lines])
    body = Body(name)
    body.lines = lines
    body.JD = JD
    body.pos = pos.T.copy()
    body.vel = vel.T.copy()
    bodies.append(body)

theta = +np.pi/4.

for body in bodies:
    body.pos_r = rotate_it(body.pos, -theta)
    body.vel_r = rotate_it(body.vel, -theta)

Sun, Earth, Jupiter, Saturn, Pioneer_11 = bodies

if True:    
    fig = plt.figure(figsize=[10, 8])  # [12, 10]
    ax  = fig.add_subplot(1, 1, 1, projection='3d')

    for body in bodies:
        x, y, z = body.pos
        ax.plot(x, y, z)

    c, h = makecubelimits(ax, centers=(0, 0, 0), hw=None)
    print(c, h)
    plt.show()

if True:
    fig = plt.figure(figsize=[10, 8])  # [12, 10]
    ax  = fig.add_subplot(1, 1, 1)

    for body in bodies:
        x, y, z = body.pos_r
        ax.plot(x, y)
        for x, y, z in Pioneer_11.pos_r.T[::100]:
            plt.plot([x, x], [y, y-z], '-k')
    plt.show()
Debería haber dibujado las líneas en el gráfico 3D y luego visto desde un ángulo, en lugar de en un gráfico 2D. Con esa perspectiva, mi gráfico coincidiría exactamente. En este momento, Saturno se ve un poco extraño en relación con Pioneer 11 en la parte superior izquierda debido a la proyección sobre la eclíptica y la falta de perspectiva.