lưu ý: Đây là câu trả lời bổ sung thêm một số chi tiết vào câu trả lời xuất sắc của @ Ingolifs .
Gần như 2006-Apr-28 08:30 UTC
Cassini đã cách Titan cả 1.800.000 km và cùng lúc với Epimetheus 667.000 km.
Tôi đã sử dụng Chân trời của JPL và lưu các vị trí trong tọa độ trung tâm của Sao Thổ cứ sau 5 phút, sau đó chạy tập lệnh python bên dưới để vẽ. Tôi không chắc chắn làm thế nào để có được mặt phẳng của các vòng theo cách này một cách dễ dàng.
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()