Class: Astronoby::ExtremumCalculator
- Inherits:
-
Object
- Object
- Astronoby::ExtremumCalculator
- Defined in:
- lib/astronoby/events/extremum_calculator.rb
Instance Method Summary collapse
-
#apoapsis_events_between(start_time, end_time) ⇒ Array<Astronoby::ExtremumEvent>
Finds all apoapsis events between two times.
-
#find_extrema(start_jd, end_jd, type: :maximum) ⇒ Array<Astronoby::ExtremumEvent>
Finds extrema (minima or maxima) in the distance between bodies within a time range.
-
#initialize(body:, primary_body:, ephem:, samples_per_period: 60) ⇒ ExtremumCalculator
constructor
A new instance of ExtremumCalculator.
-
#periapsis_events_between(start_time, end_time) ⇒ Array<Astronoby::ExtremumEvent>
Finds all periapsis events between two times.
Constructor Details
#initialize(body:, primary_body:, ephem:, samples_per_period: 60) ⇒ ExtremumCalculator
Returns a new instance of ExtremumCalculator.
9 10 11 12 13 14 15 16 17 18 19 |
# File 'lib/astronoby/events/extremum_calculator.rb', line 9 def initialize( body:, primary_body:, ephem:, samples_per_period: 60 ) @body = body @primary_body = primary_body @ephem = ephem @samples_per_period = samples_per_period end |
Instance Method Details
#apoapsis_events_between(start_time, end_time) ⇒ Array<Astronoby::ExtremumEvent>
Finds all apoapsis events between two times
25 26 27 28 29 30 31 |
# File 'lib/astronoby/events/extremum_calculator.rb', line 25 def apoapsis_events_between(start_time, end_time) find_extrema( Instant.from_time(start_time).tt, Instant.from_time(end_time).tt, type: :maximum ) end |
#find_extrema(start_jd, end_jd, type: :maximum) ⇒ Array<Astronoby::ExtremumEvent>
Finds extrema (minima or maxima) in the distance between bodies within
a time range
51 52 53 54 55 56 57 58 |
# File 'lib/astronoby/events/extremum_calculator.rb', line 51 def find_extrema(start_jd, end_jd, type: :maximum) finder.extrema(start_jd, end_jd, type: type).map do |extremum| ExtremumEvent.new( Instant.from_terrestrial_time(extremum[:jd]), extremum[:value] ) end end |
#periapsis_events_between(start_time, end_time) ⇒ Array<Astronoby::ExtremumEvent>
Finds all periapsis events between two times
37 38 39 40 41 42 43 |
# File 'lib/astronoby/events/extremum_calculator.rb', line 37 def periapsis_events_between(start_time, end_time) find_extrema( Instant.from_time(start_time).tt, Instant.from_time(end_time).tt, type: :minimum ) end |