Class: Astronoby::ConjunctionOppositionCalculator

Inherits:
Object
  • Object
show all
Defined in:
lib/astronoby/events/conjunction_opposition_calculator.rb

Instance Method Summary collapse

Constructor Details

#initialize(body:, ephem:, samples_per_period: 60) ⇒ ConjunctionOppositionCalculator

Returns a new instance of ConjunctionOppositionCalculator.

Parameters:

  • body (Astronoby::SolarSystemBody)

    the planet to track

  • ephem (::Ephem::SPK)

    ephemeris data source

  • samples_per_period (Integer) (defaults to: 60)

    number of samples per synodic period



8
9
10
11
12
# File 'lib/astronoby/events/conjunction_opposition_calculator.rb', line 8

def initialize(body:, ephem:, samples_per_period: 60)
  @body = body
  @ephem = ephem
  @samples_per_period = samples_per_period
end

Instance Method Details

#conjunction_events_between(start_time, end_time) ⇒ Array<Astronoby::Conjunction>

Returns conjunctions in the range.

Parameters:

  • start_time (Time)

    start time

  • end_time (Time)

    end time

Returns:



17
18
19
20
# File 'lib/astronoby/events/conjunction_opposition_calculator.rb', line 17

def conjunction_events_between(start_time, end_time)
  roots_between(start_time, end_time, accept: method(:conjunction?))
    .map { |jd| conjunction_at(Instant.from_terrestrial_time(jd)) }
end

#opposition_events_between(start_time, end_time) ⇒ Array<Astronoby::Opposition>

Returns oppositions in the range.

Parameters:

  • start_time (Time)

    start time

  • end_time (Time)

    end time

Returns:



25
26
27
28
29
30
31
32
33
# File 'lib/astronoby/events/conjunction_opposition_calculator.rb', line 25

def opposition_events_between(start_time, end_time)
  roots_between(start_time, end_time, accept: method(:opposition?))
    .map do |jd|
      Opposition.new(
        instant: Instant.from_terrestrial_time(jd),
        body: @body
      )
    end
end