2016-03-20 7 views
4

更新:スカイフィールドには広範な文書と角度分離の方法が含まれています。スカイフィールドの2つのオブジェクトの見かけ上の角度分離を計算する方が良いでしょうか?

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

これを現在行うにはこれが最善の方法ですか?スカイフィールドの範囲内で本質的に正しいのですか?

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" 
+0

は[関連Skyfield]である(http://stackoverflow.com/q/36110998/3904031 ) 質問。 – uhoh

+1

私はSkyfieldについては分かりませんが(興味深いですが)、あなたのコードは大丈夫です。あるいは、RAの球面三角関数のcos規則と2つの見かけ上の位置の偏角を使用します。丸め誤差のために2つの方法の間にはわずかな違いがあります。また、https://en.wikipedia.org/wiki/Great-circle_distance –

+0

スカイフィールドの岩を参照してください! @ PM2Ringの提案に感謝します。私はそれが私のアプリケーションで使用しているので、ここでデカルトで固執しています。私はそれが正当化されているかどうかはわかりませんが、月が実際に地球に当たっていない限り、デカルトでのデカルトとゼロを避けて、デカルト座標を使ってより安全です。 – uhoh

答えて

関連する問題