Class: Korba::Propagator::Kepler

Inherits:
Object
  • Object
show all
Includes:
OrbitUtils
Defined in:
lib/korba/propagator/kepler.rb

Instance Method Summary collapse

Methods included from OrbitUtils

#deg_to_rad, #distance, #eccentric_anomaly, #height_at_apogee, #height_at_perigee, #normalize_deg, #normalize_rad, #path_angle, #period, #rad_to_deg, #semi_major_axis, #true_anomaly, #velocity

Constructor Details

#initialize(initial_kep, disable_j2: false) ⇒ Kepler

Returns a new instance of Kepler.



6
7
8
9
# File 'lib/korba/propagator/kepler.rb', line 6

def initialize(initial_kep, disable_j2: false)
  @initial_kep = initial_kep
  @disable_j2 = disable_j2
end

Instance Method Details

#propagate(seconds_after_epoch) ⇒ Object



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/korba/propagator/kepler.rb', line 11

def propagate(seconds_after_epoch)
  mean_motion = Math.sqrt(Constant::GME / @initial_kep.semi_major_axis ** 3)
  mean_anomaly = rad_to_deg(deg_to_rad(@initial_kep.mean_anomaly) + mean_motion * seconds_after_epoch)

  Kep.new(
    object_name: @initial_kep.object_name,
    epoch: @initial_kep.epoch + seconds_after_epoch,
    semi_major_axis: @initial_kep.semi_major_axis,
    eccentricity: @initial_kep.eccentricity,
    inclination: @initial_kep.inclination,
    ra_of_asc_node: ra_of_asc_node(seconds_after_epoch),
    arg_of_pericenter: arg_of_pericenter(seconds_after_epoch),
    mean_anomaly: mean_anomaly,
  )
end