Class: Astronoby::StellarPropagation

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

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(instant:, equatorial_coordinates:, proper_motion_ra:, proper_motion_dec:, parallax:, radial_velocity:, earth_geometric: nil) ⇒ StellarPropagation

Returns a new instance of StellarPropagation.

Parameters:



34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
# File 'lib/astronoby/stellar_propagation.rb', line 34

def initialize(
  instant:,
  equatorial_coordinates:,
  proper_motion_ra:,
  proper_motion_dec:,
  parallax:,
  radial_velocity:,
  earth_geometric: nil
)
  @instant = instant
  @right_ascension = equatorial_coordinates.right_ascension
  @declination = equatorial_coordinates.declination
  @initial_epoch = equatorial_coordinates.epoch
  @proper_motion_ra = proper_motion_ra
  @proper_motion_dec = proper_motion_dec
  @parallax = parallax
  @radial_velocity = radial_velocity
  @earth_geometric = earth_geometric
end

Class Method Details

.equatorial_coordinates_for(**kwargs) ⇒ Astronoby::Coordinates::Equatorial

Returns Propagated equatorial coordinates.

Returns:



19
20
21
# File 'lib/astronoby/stellar_propagation.rb', line 19

def self.equatorial_coordinates_for(**kwargs)
  new(**kwargs).equatorial_coordinates
end

.position_for(**kwargs) ⇒ Astronoby::Vector

Returns Propagated position vector of Astronoby::Distance components.

Returns:

  • (Astronoby::Vector)

    Propagated position vector of Astronoby::Distance components



7
8
9
# File 'lib/astronoby/stellar_propagation.rb', line 7

def self.position_for(**kwargs)
  new(**kwargs).position
end

.velocity_vector_for(**kwargs) ⇒ Astronoby::Vector

Returns Propagated position vector of Astronoby::Velocity components.

Returns:

  • (Astronoby::Vector)

    Propagated position vector of Astronoby::Velocity components



13
14
15
# File 'lib/astronoby/stellar_propagation.rb', line 13

def self.velocity_vector_for(**kwargs)
  new(**kwargs).velocity_vector
end

Instance Method Details

#equatorial_coordinatesAstronoby::Coordinates::Equatorial

Returns Propagated equatorial coordinates.

Returns:



75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
# File 'lib/astronoby/stellar_propagation.rb', line 75

def equatorial_coordinates
  @equatorial_coordinates ||= begin
    right_ascension = Util::Trigonometry.adjustement_for_arctangent(
      position.y.m,
      position.x.m,
      Angle.atan(position.y.m / position.x.m)
    )
    declination = Angle.asin(position.z.m / position.magnitude.m)

    Coordinates::Equatorial.new(
      right_ascension: right_ascension,
      declination: declination,
      epoch: @instant.tt
    )
  end
end

#positionAstronoby::Vector

Returns Propagated position vector of Astronoby::Distance components.

Returns:

  • (Astronoby::Vector)

    Propagated position vector of Astronoby::Distance components



56
57
58
59
60
61
# File 'lib/astronoby/stellar_propagation.rb', line 56

def position
  @position ||= Distance.vector_from_meters(
    initial_position_vector +
    tangential_velocity.map(&:mps) * time_elapsed_seconds
  )
end

#velocity_vectorAstronoby::Vector

Returns Propagated position vector of Astronoby::Velocity components.

Returns:

  • (Astronoby::Vector)

    Propagated position vector of Astronoby::Velocity components



65
66
67
68
69
70
71
# File 'lib/astronoby/stellar_propagation.rb', line 65

def velocity_vector
  @velocity_vector ||= if @earth_geometric
    @earth_geometric.velocity - tangential_velocity
  else
    tangential_velocity
  end
end