Class: Astronoby::StellarPropagation
- Inherits:
-
Object
- Object
- Astronoby::StellarPropagation
- Defined in:
- lib/astronoby/stellar_propagation.rb
Class Method Summary collapse
-
.equatorial_coordinates_for(**kwargs) ⇒ Astronoby::Coordinates::Equatorial
Propagated equatorial coordinates.
-
.position_for(**kwargs) ⇒ Astronoby::Vector
Propagated position vector of Astronoby::Distance components.
-
.velocity_vector_for(**kwargs) ⇒ Astronoby::Vector
Propagated position vector of Astronoby::Velocity components.
Instance Method Summary collapse
-
#equatorial_coordinates ⇒ Astronoby::Coordinates::Equatorial
Propagated equatorial coordinates.
-
#initialize(instant:, equatorial_coordinates:, proper_motion_ra:, proper_motion_dec:, parallax:, radial_velocity:, earth_geometric: nil) ⇒ StellarPropagation
constructor
A new instance of StellarPropagation.
-
#position ⇒ Astronoby::Vector
Propagated position vector of Astronoby::Distance components.
-
#velocity_vector ⇒ Astronoby::Vector
Propagated position vector of Astronoby::Velocity components.
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.
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.
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.
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.
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_coordinates ⇒ Astronoby::Coordinates::Equatorial
Returns Propagated equatorial coordinates.
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 |
#position ⇒ Astronoby::Vector
Returns 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_vector ⇒ Astronoby::Vector
Returns 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 |