Class: Astronoby::RiseTransitSetCalculator

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

Defined Under Namespace

Classes: PotentialEvent

Constant Summary collapse

TAU =
Math::PI * 2
SAMPLE_THRESHOLD =
0.8
REFINEMENT_ITERATIONS =
3
MIN_TIME_ADJUSTMENT =
Constants::MICROSECOND_IN_DAYS
STANDARD_REFRACTION_ANGLE =
-Angle.from_dms(0, 34, 0)
SUN_REFRACTION_ANGLE =
-Angle.from_dms(0, 50, 0)
EVENT_TYPES =
[:rising, :transit, :setting].freeze

Instance Method Summary collapse

Constructor Details

#initialize(body:, observer:, ephem: nil) ⇒ RiseTransitSetCalculator

Returns a new instance of RiseTransitSetCalculator.

Parameters:



30
31
32
33
34
# File 'lib/astronoby/events/rise_transit_set_calculator.rb', line 30

def initialize(body:, observer:, ephem: nil)
  @body = body
  @observer = observer
  @ephem = ephem
end

Instance Method Details

#event_on(date, utc_offset: 0) ⇒ Object



36
37
38
39
40
41
42
43
# File 'lib/astronoby/events/rise_transit_set_calculator.rb', line 36

def event_on(date, utc_offset: 0)
  events = events_on(date, utc_offset: utc_offset)
  RiseTransitSetEvent.new(
    events.rising_times.first,
    events.transit_times.first,
    events.setting_times.first
  )
end

#events_between(start_time, end_time) ⇒ Object



61
62
63
64
65
66
# File 'lib/astronoby/events/rise_transit_set_calculator.rb', line 61

def events_between(start_time, end_time)
  reset_state
  @start_instant = Instant.from_time(start_time)
  @end_instant = Instant.from_time(end_time)
  events
end

#events_on(date, utc_offset: 0) ⇒ Object



45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
# File 'lib/astronoby/events/rise_transit_set_calculator.rb', line 45

def events_on(date, utc_offset: 0)
  start_time = Time.new(
    date.year,
    date.month,
    date.day,
    0, 0, 0, utc_offset
  )
  end_time = Time.new(
    date.year,
    date.month,
    date.day,
    23, 59, 59, utc_offset
  )
  events_between(start_time, end_time)
end