참고 : 이것은 @ Ingolifs의 우수한 답변에 세부 사항을 추가하는 보충 답변 입니다.
에서 약 2006-Apr-28 08:30 UTC
카시니는 타이탄에서 1,800,000km 동시에 에피메테우스에서 667,000km 모두이었다.
JPL의 Horizons를 사용 하고 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()