Class: Astronoby::Refraction

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

Constant Summary collapse

LOW_ALTITUDE_BODY_ANGLE =
Angle.from_degrees(15)
ZENITH =
Angle.from_degrees(90)

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(coordinates, observer) ⇒ Refraction

Returns a new instance of Refraction.



16
17
18
19
# File 'lib/astronoby/refraction.rb', line 16

def initialize(coordinates, observer)
  @coordinates = coordinates
  @observer = observer
end

Class Method Details

.angle(coordinates:, observer:) ⇒ Object



8
9
10
# File 'lib/astronoby/refraction.rb', line 8

def self.angle(coordinates:, observer:)
  new(coordinates, observer).refraction_angle
end

.correct_horizontal_coordinates(coordinates:, observer:) ⇒ Object



12
13
14
# File 'lib/astronoby/refraction.rb', line 12

def self.correct_horizontal_coordinates(coordinates:, observer:)
  new(coordinates, observer).refract
end

Instance Method Details

#refractObject

Source:

Title: Practical Astronomy with your Calculator or Spreadsheet
Authors: Peter Duffett-Smith and Jonathan Zwart
Edition: Cambridge University Press
Chapter: 37 - Refraction


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

def refract
  Coordinates::Horizontal.new(
    azimuth: @coordinates.azimuth,
    altitude: @coordinates.altitude + refraction_angle,
    latitude: @coordinates.latitude,
    longitude: @coordinates.longitude
  )
end

#refraction_angleObject



35
36
37
38
39
40
41
# File 'lib/astronoby/refraction.rb', line 35

def refraction_angle
  if @coordinates.altitude > LOW_ALTITUDE_BODY_ANGLE
    high_altitude_angle
  else
    low_altitude_angle
  end
end