class CalcSat::Orbita
参考文献: 「人工衛星をつくる(宮崎康行 著)」 「CanSat 超小型模擬人工衛星(大学宇宙工学コンソーシアム)」
Public Class Methods
new()
click to toggle source
軌道計算
a … 楕円軌道の長半径 e … 楕円の離心率(地球が楕円の中心からどれだけの割合ずれているかを表す) i … 軌道傾斜角(楕円軌道面と赤道面がなす角度) o … 昇交点赤経 w … 近地点引数 theta … 真近点角
# File lib/calc_sat.rb, line 19 def initialize() @m_e = 3.986 * 1014 # 地球の重力定数(3.986*1014 [m3/s2]) @r_e = 6378 # 地球の半径(6378 [km]) @j_2 = 0.001082628 # 地球の扁平性を表す定数(0.001082628) end
Public Instance Methods
periodic_time(a)
click to toggle source
# File lib/calc_sat.rb, line 34 def periodic_time(a) # 周期 t = 2*Math::PI*(a**1.5 / Math.sqrt(@m_e)) return t end
sso_check(a, e, i, tolerance=10**-5)
click to toggle source
# File lib/calc_sat.rb, line 40 def sso_check(a, e, i, tolerance=10**-5) # 太陽同期軌道(sun_synchronous_orbit)となる条件式の正誤を判定する # 太陽同期軌道 … iとaを調整して同じ経度に戻るようにした時の軌道 # tolerance: 許容誤差 comparison = 1.99 * 10**(-7) res = -( (3*@j_2*@r_e**2) / (2*a**2*(1-e**2)**2) * Math.sqrt(@m_e / a**3) * Math.cos(i) ) diff = (res - comparison).abs cond = diff < tolerance if cond return "OK" else return "iとaを修正してください。" end end
velocity(a,e,theta)
click to toggle source
# File lib/calc_sat.rb, line 25 def velocity(a,e,theta) # 速度 v = Math.sqrt( @m_e * (1 + e**2 + 2*e*Math.cos(theta)) / a * (1 - e**2) ) return v end