public abstract class AxesEvaluator extends MotionEvaluator2<UnitQuaternion,Cartesian>
Evaluates an Axes
over time.
The result of evaluating will be a
Motion
<UnitQuaternion
, Cartesian
>
representation of the orientation and rotation of these axes at the specified JulianDate
.
The AxesEvaluator
will attempt to provide rotational rate information up to the requested order.
The rotation reported by this evaluator represents the rotational transformation from the original
axes to these axes. By calling Cartesian.rotate(UnitQuaternion)
with the reported UnitQuaternion
,
it will transform the given cartesian vector from the original axes to be expressed in these axes.
The rotational rates reported by an AxesEvaluator
are the rotational rates of these axes
with respect to and expressed in the base axes in which these axes are defined.
e.g. The "FirstDerivative" (if available) of a platform body axes defined in the fixed frame
will represent the angular velocity of the body in the fixed frame.
Modifier | Constructor and Description |
---|---|
protected |
AxesEvaluator(AxesEvaluator existingInstance,
CopyContext context)
Initializes a new instance as a copy of an existing instance.
|
protected |
AxesEvaluator(EvaluatorGroup group)
Initializes a new instance.
|
Modifier and Type | Method and Description |
---|---|
protected static TimeIntervalCollection1<Axes> |
createConstantDefinedIn(Axes definedIn)
Creates a
TimeIntervalCollection indicating that the Axes that this Axes is defined in is
the same for all possible times. |
IEvaluator |
getCachingWrapper()
Gets a version of this evaluator that caches the previously computed value so that if it is evaluated
twice at the same date the computation is done only once.
|
abstract TimeIntervalCollection1<Axes> |
getDefinedInIntervals()
Gets a
TimeIntervalCollection where the Data (get ) property of
each interval is the Axes in which this Axes is defined over the interval. |
AxesEvaluator |
simplifyIfNotTimeVarying(EvaluatorGroup group)
If this evaluator is not time varying, this method evaluates its value and constructs an evaluator
from an
AxesFixedOffset representing the fixed value. |
evaluate, evaluate, evaluate, evaluate, evaluate, evaluate, getAvailabilityIntervals, getAvailabilityIntervals, getGroup, getIsTimeVarying, isAvailable, updateEvaluatorReferences
clone, dispose, dispose, getIsThreadSafe, getNextSampleSuggestion
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
getIsThreadSafe
clone
close, dispose
protected AxesEvaluator(@Nonnull EvaluatorGroup group)
group
- The group that contains this evaluator.ArgumentNullException
- Thrown when group
is null
.protected AxesEvaluator(@Nonnull AxesEvaluator existingInstance, @Nonnull CopyContext context)
See ICloneWithContext.clone(CopyContext)
for more information about how to implement this constructor
in a derived class.
existingInstance
- The existing instance to copy.context
- A CopyContext
that controls the depth of the copy.ArgumentNullException
- Thrown when existingInstance
or context
is null
.public IEvaluator getCachingWrapper()
This method is called by EvaluatorGroup
to create a caching version of an evaluator
that is shared between multiple computations.
To implement this method in your own evaluator, construct and return a caching version of the evaluator's base class.
For example, if your evaluator implements IEvaluator1
directly, return an instance of
CachingEvaluator
. In many cases, such as when implementing a PointEvaluator
this method does not need to be overridden because the default implementation returns an appropriate
caching wrapper already. If you do not want the last value computed by your evaluator to ever be cached, or
if your evaluator does its own caching internally, this method can return this
.
Shows an example implementation in an evaluator that implements IEvaluator1
directly, where T is double.
@Override
public IEvaluator getCachingWrapper() {
return new CachingEvaluator<Double>(this);
}
getCachingWrapper
in interface IEvaluator
getCachingWrapper
in class MotionEvaluator2<UnitQuaternion,Cartesian>
this
should be returned by this method.@Nonnull public abstract TimeIntervalCollection1<Axes> getDefinedInIntervals()
TimeIntervalCollection
where the Data
(get
) property of
each interval is the Axes in which this Axes is defined over the interval.@Nonnull public final AxesEvaluator simplifyIfNotTimeVarying(@Nonnull EvaluatorGroup group)
AxesFixedOffset
representing the fixed value. If this evaluator is time varying,
this method does nothing and returns the evaluator on which it is called.group
- The evaluator group in which to construct the new evaluator, if applicable.this
if this axes is not fixed.ArgumentNullException
- Thrown when group
is null
.@Nonnull protected static TimeIntervalCollection1<Axes> createConstantDefinedIn(Axes definedIn)
TimeIntervalCollection
indicating that the Axes that this Axes is defined in is
the same for all possible times. This is useful for constructing the value of the
DefinedInIntervals
(get
) property.definedIn
- The axes that this axes is defined in for all time.