Class: Astronoby::LunarEclipseCalculator::Geometry

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

Overview

Geometry of the Sun, Moon and Earth’s shadow at one instant, in kilometres in the plane perpendicular to the shadow axis at the Moon’s distance.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(axis_distance:, umbra_radius:, penumbra_radius:, gamma:) ⇒ Geometry

Returns a new instance of Geometry.



71
72
73
74
75
76
77
# File 'lib/astronoby/events/lunar_eclipse_calculator.rb', line 71

def initialize(axis_distance:, umbra_radius:, penumbra_radius:, gamma:)
  @axis_distance = axis_distance
  @umbra_radius = umbra_radius
  @penumbra_radius = penumbra_radius
  @gamma = gamma
  freeze
end

Instance Attribute Details

#axis_distanceFloat (readonly)

Returns distance of the Moon’s centre from the shadow axis (km).

Returns:

  • (Float)

    distance of the Moon’s centre from the shadow axis (km)



60
61
62
# File 'lib/astronoby/events/lunar_eclipse_calculator.rb', line 60

def axis_distance
  @axis_distance
end

#gammaFloat (readonly)

Returns signed distance from the shadow axis, in Earth radii.

Returns:

  • (Float)

    signed distance from the shadow axis, in Earth radii



69
70
71
# File 'lib/astronoby/events/lunar_eclipse_calculator.rb', line 69

def gamma
  @gamma
end

#penumbra_radiusFloat (readonly)

Returns radius of the penumbra at the Moon’s distance (km).

Returns:

  • (Float)

    radius of the penumbra at the Moon’s distance (km)



66
67
68
# File 'lib/astronoby/events/lunar_eclipse_calculator.rb', line 66

def penumbra_radius
  @penumbra_radius
end

#umbra_radiusFloat (readonly)

Returns radius of the umbra at the Moon’s distance (km).

Returns:

  • (Float)

    radius of the umbra at the Moon’s distance (km)



63
64
65
# File 'lib/astronoby/events/lunar_eclipse_calculator.rb', line 63

def umbra_radius
  @umbra_radius
end

Instance Method Details

#partial_contact_valueObject



93
94
95
# File 'lib/astronoby/events/lunar_eclipse_calculator.rb', line 93

def partial_contact_value
  axis_distance - (umbra_radius + MOON_RADIUS_KM)
end

#penumbral_contact_valueObject



89
90
91
# File 'lib/astronoby/events/lunar_eclipse_calculator.rb', line 89

def penumbral_contact_value
  axis_distance - (penumbra_radius + MOON_RADIUS_KM)
end

#penumbral_magnitudeObject



83
84
85
86
87
# File 'lib/astronoby/events/lunar_eclipse_calculator.rb', line 83

def penumbral_magnitude
  (
    penumbra_radius + MOON_RADIUS_KM - axis_distance
  ) / (2 * MOON_RADIUS_KM)
end

#total_contact_valueObject



97
98
99
# File 'lib/astronoby/events/lunar_eclipse_calculator.rb', line 97

def total_contact_value
  axis_distance - (umbra_radius - MOON_RADIUS_KM)
end

#umbral_magnitudeObject



79
80
81
# File 'lib/astronoby/events/lunar_eclipse_calculator.rb', line 79

def umbral_magnitude
  (umbra_radius + MOON_RADIUS_KM - axis_distance) / (2 * MOON_RADIUS_KM)
end