Class: Astronoby::Coordinates::Ecliptic

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

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(latitude:, longitude:) ⇒ Ecliptic

Returns a new instance of Ecliptic.



8
9
10
11
# File 'lib/astronoby/coordinates/ecliptic.rb', line 8

def initialize(latitude:, longitude:)
  @latitude = latitude
  @longitude = longitude
end

Instance Attribute Details

#latitudeObject (readonly)

Returns the value of attribute latitude.



6
7
8
# File 'lib/astronoby/coordinates/ecliptic.rb', line 6

def latitude
  @latitude
end

#longitudeObject (readonly)

Returns the value of attribute longitude.



6
7
8
# File 'lib/astronoby/coordinates/ecliptic.rb', line 6

def longitude
  @longitude
end

Instance Method Details

#to_equatorial(epoch:) ⇒ Object

Source:

Title: Celestial Calculations
Author: J. L. Lawrence
Edition: MIT Press
Chapter: 4 - Orbits and Coordinate Systems


18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/astronoby/coordinates/ecliptic.rb', line 18

def to_equatorial(epoch:)
  mean_obliquity = MeanObliquity.for_epoch(epoch)

  y = Angle.as_radians(
    @longitude.sin * mean_obliquity.cos -
    @latitude.tan * mean_obliquity.sin
  )
  x = Angle.as_radians(@longitude.cos)
  r = Angle.atan(y.radians / x.radians)
  right_ascension = Util::Trigonometry.adjustement_for_arctangent(y, x, r)

  declination = Angle.asin(
    @latitude.sin * mean_obliquity.cos +
    @latitude.cos * mean_obliquity.sin * @longitude.sin
  )

  Equatorial.new(
    right_ascension: right_ascension,
    declination: declination,
    epoch: epoch
  )
end