public final class LightAberrationTransformation extends Object
Note that this class only treats the transformation coming from the translational velocity between two frames since
this is the only aspect that matters regarding the aberration.
For example, if a user wants to transform a light path direction from GCRF to a topocentric frame TOPO, they can
proceed in two equivalent ways (depending on handling the rotation before of after the light aberration
transformation):
The light aberration simply comes from the difference of photons velocity direction, arriving (resp. leaving) an object, depending on the frame of observation. Thus, in the same manner as the velocity, the light path direction is necessarily attached to a frame.
Examples:
VacuumSignalPropagationModel
in an inertial frame F (for example GCRF).toTargetDirection=vectorBToA
(light path
direction from B to A), newFrameVelocity=velocityBInFrameF
, signalDirection =
ITargetDirection.SignalDirection.FROM_TARGET
toTargetDirection=vectorBToA
(light path direction from B to
A), newFrameVelocity=velocityBInFrameF
, signalDirection =
ITargetDirection.SignalDirection.TOWARD_TARGET
toTargetDirection
expressed in an instrument frame F is provided as
input. The user wants to know the equivalent reception light path direction seen from another frame F'. Then this
class should be used with: newFrameVelocity=velocityF'InF
, signalDirection =
ITargetDirection.SignalDirection.FROM_TARGET
Constructor and Description |
---|
LightAberrationTransformation(VacuumSignalPropagation signalPropagation,
ITargetDirection.SignalDirection signalDirection)
Constructor for the light aberration transformation to convert the propagation vector from frame F to F'.
|
LightAberrationTransformation(Vector3D toTargetDirection,
Vector3D newFrameVelocity,
ITargetDirection.SignalDirection signalDirection)
Constructor for the light aberration transformation to transform the provided light path direction from frame F
to F'.
|
Modifier and Type | Method and Description |
---|---|
static Vector3D |
applyTo(Vector3D toTargetDirection,
Vector3D newFrameVelocity,
ITargetDirection.SignalDirection signalDirection)
Transform the provided light path direction from frame F to F'.
|
static double |
computeAberrationAngle(Vector3D toTargetDirection,
Vector3D newFrameVelocity)
Compute the light aberration angle between a light path direction seen from a frame F and a frame F'.
|
double |
getAberrationAngle()
Getter for the aberration angle [rad].
|
ITargetDirection.SignalDirection |
getSignalDirection()
Getter for the signal direction.
|
Vector3D |
getTransformedToTargetDirection()
Getter for the transformed light path direction towards the target in the new frame F'.
|
public LightAberrationTransformation(VacuumSignalPropagation signalPropagation, ITargetDirection.SignalDirection signalDirection)
The light propagation vector
is defined with respect to the
frame F
. The new frame F' is attached to the receiver or emitter
according to the signalDirection
, but keeps the same orientation as the frame F.
See computeAberrationAngle(fr.cnes.sirius.patrius.math.geometry.euclidean.threed.Vector3D, fr.cnes.sirius.patrius.math.geometry.euclidean.threed.Vector3D)
for more details on the aberration formula.
signalPropagation
- The signal propagation from emitter to receiversignalDirection
- Indicate whether the frame F' is attached to the receiver ITargetDirection.SignalDirection.FROM_TARGET
or the
emitter ITargetDirection.SignalDirection.TOWARD_TARGET
public LightAberrationTransformation(Vector3D toTargetDirection, Vector3D newFrameVelocity, ITargetDirection.SignalDirection signalDirection)
See computeAberrationAngle(fr.cnes.sirius.patrius.math.geometry.euclidean.threed.Vector3D, fr.cnes.sirius.patrius.math.geometry.euclidean.threed.Vector3D)
for more details on the aberration formula.
toTargetDirection
- Direction towards the target, defined in a frame FnewFrameVelocity
- Velocity of the new frame F' with respect to F. Note that F' keeps the same orientation as F.signalDirection
- Indicates whether the signal is coming from or towards the targetpublic double getAberrationAngle()
public Vector3D getTransformedToTargetDirection()
Note: The returned vector can be projected in any other frame thanks to Transform.transformVector(fr.cnes.sirius.patrius.math.geometry.euclidean.threed.Vector3D)
.
But beware that it is only a projection and the light path direction remains defined with respect to F' (in terms
of aberration).
public ITargetDirection.SignalDirection getSignalDirection()
public static double computeAberrationAngle(Vector3D toTargetDirection, Vector3D newFrameVelocity)
Let's assume that toTargetDirection
is a light path direction defined in the frame F.
To convert this direction in a new frame F', the velocity of F' with respect to F (newFrameVelocity
)
needs to be taken into consideration. Note that F' keeps the same orientation as F.
target (in F) target (in F') T T' ^ ^ / . / . dir (in F') /__ Δθ . dir (in F) / \ . / . / . / .__ /__. \ θ' / . \ | /. θ | | -----------> _ O V velocity of F' in F sin(θ) tan(θ') = ------------- sqrt(1 - (V/c)²) cos(θ) + V/c
toTargetDirection
- Direction towards the target, defined in the frame FnewFrameVelocity
- Velocity of the new frame F' w.r.t the frame FangleInNewFrame = angleInPreviousFrame + aberrationAngle
public static Vector3D applyTo(Vector3D toTargetDirection, Vector3D newFrameVelocity, ITargetDirection.SignalDirection signalDirection)
Let's assume that toTargetDirection
is a light path direction defined in the frame F.
To convert this direction in a new frame F', the newFrameVelocity
should be the velocity of F' with
respect to F.
Note that F' keeps the same orientation as F.
See computeAberrationAngle(fr.cnes.sirius.patrius.math.geometry.euclidean.threed.Vector3D, fr.cnes.sirius.patrius.math.geometry.euclidean.threed.Vector3D)
for more details on the aberration formula.
toTargetDirection
- Direction towards the target defined in the frame FnewFrameVelocity
- Velocity of the frame F' w.r.t the frame FsignalDirection
- Indicates whether the signal is coming from or towards the targetCopyright © 2023 CNES. All rights reserved.