Class: Astronoby::Aberration

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

Overview

Applies relativistic aberration corrections to an astrometric position based on observer velocity.

Constant Summary collapse

LIGHT_SPEED =

Source:

Title: Explanatory Supplement to the Astronomical Almanac
Authors: Sean E. Urban and P. Kenneth Seidelmann
Edition: University Science Books
Chapter: 7.2.3 - Aberration
Astronoby::Velocity.light_speed.mps

Instance Method Summary collapse

Constructor Details

#initialize(astrometric_position:, observer_velocity:) ⇒ Aberration

Initializes the aberration correction with position and observer velocity.

Parameters:



21
22
23
24
25
26
# File 'lib/astronoby/aberration.rb', line 21

def initialize(astrometric_position:, observer_velocity:)
  @position = astrometric_position
  @velocity = observer_velocity
  @distance_meters = @position.norm.m
  @observer_speed = @velocity.norm.mps
end

Instance Method Details

#corrected_positionAstronoby::Vector<Astronoby::Distance>

Computes the aberration-corrected position.

Returns:



32
33
34
35
36
37
38
39
40
41
42
43
44
45
# File 'lib/astronoby/aberration.rb', line 32

def corrected_position
  beta = @observer_speed / LIGHT_SPEED
  projected_velocity = beta * aberration_angle_cos
  lorentz_factor_inv = lorentz_factor_inverse(beta)

  velocity_correction =
    velocity_correction_factor(projected_velocity) * velocity_mps
  normalization_factor = 1.0 + projected_velocity
  position_scaled = position_meters * lorentz_factor_inv

  Distance.vector_from_meters(
    (position_scaled + velocity_correction) / normalization_factor
  )
end