T
- the type of the field elementspublic class FieldAngularCoordinates<T extends RealFieldElement<T>> extends Object implements TimeShiftable<FieldAngularCoordinates<T>>, Serializable
RealFieldElement
.
The state can be slightly shifted to close dates. This shift is based on a simple quadratic model. It is not intended as a replacement for proper attitude propagation but should be sufficient for either small time shifts or coarse accuracy.
This class is the angular counterpart to FieldPVCoordinates
.
Instances of this class are guaranteed to be immutable.
AngularCoordinates
,
Serialized FormConstructor and Description |
---|
FieldAngularCoordinates(FieldRotation<T> rotation,
FieldVector3D<T> rotationRate)
Builds a rotation/rotation rate pair.
|
FieldAngularCoordinates(FieldRotation<T> rotation,
FieldVector3D<T> rotationRate,
FieldVector3D<T> rotationAcceleration)
Builds a FieldRotation
|
Modifier and Type | Method and Description |
---|---|
FieldAngularCoordinates<T> |
addOffset(FieldAngularCoordinates<T> offset)
Add an offset from the instance.
|
static <T extends RealFieldElement<T>> |
estimateRate(FieldRotation<T> start,
FieldRotation<T> end,
double dt)
Estimate FieldRotation
|
FieldRotation<T> |
getRotation()
Get the FieldRotation
|
FieldVector3D<T> |
getRotationAcceleration()
Get the rotation acceleration.
|
FieldVector3D<T> |
getRotationRate()
Get the FieldRotation
|
static <T extends RealFieldElement<T>> |
interpolate(AbsoluteDate date,
boolean useRotationRates,
Collection<Pair<AbsoluteDate,FieldAngularCoordinates<T>>> sample)
Deprecated.
|
FieldAngularCoordinates<T> |
revert()
Revert a FieldRotation
|
FieldAngularCoordinates<T> |
shiftedBy(double dt)
Get a time-shifted state.
|
FieldAngularCoordinates<T> |
subtractOffset(FieldAngularCoordinates<T> offset)
Subtract an offset from the instance.
|
AngularCoordinates |
toAngularCoordinates()
Convert to a regular angular coordinates.
|
public FieldAngularCoordinates(FieldRotation<T> rotation, FieldVector3D<T> rotationRate)
rotation
- rotationrotationRate
- rotation rate Ω (rad/s)public FieldAngularCoordinates(FieldRotation<T> rotation, FieldVector3D<T> rotationRate, FieldVector3D<T> rotationAcceleration)
rotation
- FieldRotationrotationRate
- FieldRotationrotationAcceleration
- FieldRotationpublic static <T extends RealFieldElement<T>> FieldVector3D<T> estimateRate(FieldRotation<T> start, FieldRotation<T> end, double dt)
Estimation is based on a simple fixed rate FieldRotation
T
- the type of the field elementsstart
- start orientationend
- end orientationdt
- time elapsed between the dates of the two orientationspublic FieldAngularCoordinates<T> revert()
public FieldAngularCoordinates<T> shiftedBy(double dt)
The state can be slightly shifted to close dates. This shift is based on a simple quadratic model. It is not intended as a replacement for proper attitude propagation but should be sufficient for either small time shifts or coarse accuracy.
shiftedBy
in interface TimeShiftable<FieldAngularCoordinates<T extends RealFieldElement<T>>>
dt
- time shift in secondspublic FieldRotation<T> getRotation()
public FieldVector3D<T> getRotationRate()
public FieldVector3D<T> getRotationAcceleration()
public FieldAngularCoordinates<T> addOffset(FieldAngularCoordinates<T> offset)
We consider here that the offset FieldRotationa.addOffset(b)
and b.addOffset(a)
lead to different results in most cases.
The two methods addOffset
and
subtractOffset
are designed
so that round trip applications are possible. This means that both ac1.subtractOffset(ac2).addOffset(ac2)
and ac1.addOffset(ac2).subtractOffset(ac2)
return angular coordinates equal to ac1.
offset
- offset to subtractsubtractOffset(FieldAngularCoordinates)
public FieldAngularCoordinates<T> subtractOffset(FieldAngularCoordinates<T> offset)
We consider here that the offset Rotation is applied first and the
instance is applied afterward. Note that angular coordinates do not
commute under this operation, i.e. a.subtractOffset(b)
and b.subtractOffset(a)
lead to different results in most cases.
The two methods addOffset
and
subtractOffset
are designed
so that round trip applications are possible. This means that both ac1.subtractOffset(ac2).addOffset(ac2)
and ac1.addOffset(ac2).subtractOffset(ac2)
return angular coordinates equal to ac1.
offset
- offset to subtractaddOffset(FieldAngularCoordinates)
public AngularCoordinates toAngularCoordinates()
@Deprecated public static <T extends RealFieldElement<T>> FieldAngularCoordinates<T> interpolate(AbsoluteDate date, boolean useRotationRates, Collection<Pair<AbsoluteDate,FieldAngularCoordinates<T>>> sample) throws OrekitException
TimeStampedFieldAngularCoordinates.interpolate(AbsoluteDate,
AngularDerivativesFilter, Collection)
The interpolated instance is created by polynomial Hermite interpolation
on Rodrigues vector ensuring FieldRotation
This method is based on Sergei Tanygin's paper Attitude
Interpolation, changing the norm of the vector to match the modified Rodrigues
vector as described in Malcolm D. Shuster's paper A
Survey of Attitude Representations. This change avoids the singularity at π.
There is still a singularity at 2π, which is handled by slightly offsetting all FieldRotation
Note that even if first time derivatives (FieldRotation
T
- the type of the field elementsdate
- interpolation dateuseRotationRates
- if true, use sample points FieldRotationsample
- sample points on which interpolation should be doneOrekitException
- if the number of point is too small for interpolatingCopyright © 2002-2015 CS Systèmes d'information. All rights reserved.