4

更新: Skyfield は、拡張されたドキュメントと角度分離の方法を含む大幅な改訂を行ったばかりです - 受け入れられた回答を参照してください。

Skyfieldを使用して、2 つのオブジェクト間の見かけの角度分離を計算しています。パッケージ内にメソッドが見つからなかったので、見かけ上の 2 つの位置ベクトル間の内積を計算する方法を「発明」しました。

これは現在それを行うための最良の方法ですか?Skyfieldの範囲内で、それは本質的に正しいですか?

def separation(seconds, lat, lon):

    lat, lon, seconds = float(lat), float(lon), float(seconds) # necessary it seems

    place = earth.topos(lat, lon)

    jd = JulianDate(utc=(2016, 3, 9, 0, 0, seconds))

    mpos = place.at(jd).observe(moon).apparent().position.km
    spos = place.at(jd).observe(sun).apparent().position.km

    mlen = np.sqrt((mpos**2).sum())
    slen = np.sqrt((spos**2).sum())

    sepa = ((3600.*180./np.pi) *
            np.arccos(np.dot(mpos, spos)/(mlen*slen)))

    return sepa


from skyfield.api import load, now, JulianDate
import numpy as np
from scipy.optimize import minimize

data = load('de421.bsp')

sun   = data['sun']
earth = data['earth']
moon  = data['moon']

sep = separation(12000, 32.5, 215.1)

print "sun-moon aparent separation: ", sep, " arcsec"
4

1 に答える 1