примечание: это дополнительный ответ, добавляющий некоторые детали к отличному ответу @ Ingolifs .
При примерно 2006-Apr-28 08:30 UTC
Кассини был и 1800000 км от Titan и 667000 км от Эпиметея в то же самое время.
Я использовал горизонты JPL и каждые 5 минут сохранял позиции в центральных координатах тела Сатурна, а затем запустил скрипт на языке Python ниже для построения графика. Я не уверен, как легко получить плоскость колец.
class Body(object):
def __init__(self, name):
self.name = name
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
fnames = ['Titan photo Cassini horizons_results.txt',
'Titan photo Titan horizons_results.txt',
'Titan photo Epimetheus horizons_results.txt' ]
names = ['Cassini', 'Titan', 'Epimetheus']
bodies = []
for name, fname in zip(names, fnames):
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 = zip(*[line.split(',') for line in lines[iSOE+1:iEOE]])
JD = np.array([float(x) for x in lines[0]])
pos = np.array([[float(x) for x in lines[i]] for i in 2, 3, 4])
vel = np.array([[float(x) for x in lines[i]] for i in 5, 6, 7])
body = Body(name)
bodies.append(body)
body.JD = JD
body.pos = pos
body.vel = vel
Cassini, Titan, Epimetheus = bodies
r_Titan = np.sqrt(((Cassini.pos - Titan.pos )**2).sum(axis=0))
r_Epimetheus = np.sqrt(((Cassini.pos - Epimetheus.pos)**2).sum(axis=0))
hours = 24 * (JD - JD[0])
r_Titan_target = 1.8E+06
r_Epimetheus_target = 6.67E+05
hours_Titan = hours[np.argmax(r_Titan < r_Titan_target)]
hours_Epimetheus = hours[np.argmax(r_Epimetheus[30:] > r_Epimetheus_target)+30]
print hours_Titan, hours_Epimetheus
if True:
fig = plt.figure()
plt.subplot(2, 1, 1)
plt.plot(hours, r_Titan)
plt.plot(hours, 1.8E+06 * np.ones_like(r_Titan), '-k')
plt.ylabel('Cassini-Titan distance (km)', fontsize=16)
plt.subplot(2, 1, 2)
plt.plot(hours, r_Epimetheus)
plt.plot(hours, 6.67E+05 * np.ones_like(r_Epimetheus), '-k')
plt.ylabel('Cassini-Epimetheus distance (km)', fontsize=16)
plt.xlabel('2006-Apr-28 hours', fontsize=16)
plt.show()