public abstract class ProfileSegment extends DefinitionalObject
RouteSegment
.Modifier | Constructor and Description |
---|---|
protected |
ProfileSegment()
Initializes a new instance.
|
protected |
ProfileSegment(ProfileSegment existingInstance,
CopyContext context)
Initializes a new instance as a copy of an existing instance.
|
Modifier and Type | Method and Description |
---|---|
protected boolean |
checkForSameDefinition(DefinitionalObject other)
Checks to determine if another instance has the same definition as this instance and
returns
true if it does. |
protected abstract boolean |
checkForSameDefinition(ProfileSegment other)
Checks to determine if another instance has the same definition as this instance and
returns
true if it does. |
protected int |
computeCurrentDefinitionHashCode()
Computes a hash code based on the current properties of this object.
|
double |
getHeight(Duration time)
Get the value for the height above the
TerrainProvider height reference
specified by the ProfileSegment.getHeightReference(agi.foundation.time.Duration) method at the given time. |
abstract Motion1<Double> |
getHeight(Duration time,
int order)
Get the value for the height above the
TerrainProvider height reference
specified by the ProfileSegment.getHeightReference(agi.foundation.time.Duration) method at the given time. |
abstract TerrainProvider |
getHeightReference(Duration time)
Get the
TerrainProvider height reference for the profile height at the given time. |
double |
getSurfaceMotion(Duration time)
Get the value for the arc length along the surface path, in meters.
|
abstract Motion1<Double> |
getSurfaceMotion(Duration time,
int order)
Get the value for the arc length and its derivatives along the surface path, in meters and seconds.
|
abstract Duration |
getTotalTime()
Gets the total time elapsed over the course of this segment.
|
abstract Duration |
getTotalTime(double arcLength)
Get the time required to travel the specified arc length.
|
boolean |
isSameDefinition(ProfileSegment other)
Determines if this object has the same definition as another object.
|
areSameDefinition, areSameDefinition, areSameDefinition, areSameDefinition, areSameDefinition, clone, collectionItemsAreSameDefinition, collectionItemsAreSameDefinition, collectionItemsAreSameDefinition, dictionaryItemsAreSameDefinition, enumerateDependencies, freeze, freezeAggregatedObjects, getCollectionHashCode, getCollectionHashCode, getCollectionHashCode, getDefinitionHashCode, getDefinitionHashCode, getDefinitionHashCode, getDefinitionHashCode, getDefinitionHashCode, getDefinitionHashCode, getDictionaryHashCode, getIsFrozen, isSameDefinition, throwIfFrozen
protected ProfileSegment()
protected ProfileSegment(@Nonnull ProfileSegment 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 final boolean isSameDefinition(ProfileSegment other)
This method is very similar to Object.equals(Object)
except that it explicitly considers
the "definitions" of the two objects for objects that do not typically act like values. The definition of
an object typically includes all of the fields of the object.
other
- The other instance to compare to this one.true
if this object has the same definition as the specified one.
false
if the other object is null
, a different type
than this one, or if this object and the specified one have different definitions.protected final boolean checkForSameDefinition(DefinitionalObject other)
true
if it does. Derived classes MUST override this method and check
all new fields introduced by the derived class for definitional equivalence. It is NOT necessary
to check base class fields because the base class will already have done that. When overriding this method,
you should NOT call the base implementation because it will return false
for all derived-class instances.
Derived classes should check the type of other
to preserve the symmetric nature of IEquatableDefinition.isSameDefinition(java.lang.Object)
.checkForSameDefinition
in class DefinitionalObject
other
- The other instance to compare to this one.true
if the two objects are defined equivalently; otherwise false
.protected abstract boolean checkForSameDefinition(ProfileSegment other)
true
if it does. Derived classes MUST override this method and check
all new fields introduced by the derived class for definitional equivalence. It is NOT necessary
to check base class fields because the base class will already have done that. When overriding this method,
you should NOT call the base implementation because it will return false
for all derived-class instances.
Derived classes should check the type of other
to preserve the symmetric nature of IEquatableDefinition.isSameDefinition(java.lang.Object)
.other
- The other instance to compare to this one.true
if the two objects are defined equivalently; otherwise false
.protected int computeCurrentDefinitionHashCode()
ProfileSegment.checkForSameDefinition(agi.foundation.infrastructure.DefinitionalObject)
method.computeCurrentDefinitionHashCode
in class DefinitionalObject
public double getHeight(@Nonnull Duration time)
TerrainProvider
height reference
specified by the ProfileSegment.getHeightReference(agi.foundation.time.Duration)
method at the given time.time
- The time elapsed since the beginning of this segment.@Nonnull public abstract Motion1<Double> getHeight(@Nonnull Duration time, int order)
TerrainProvider
height reference
specified by the ProfileSegment.getHeightReference(agi.foundation.time.Duration)
method at the given time.time
- The time elapsed since the beginning of this segment.order
- The requested order of the height where zero is the height and
higher orders specify the number of derivatives. Depending on the type of profile
and underlying geometry, the resulting order may not match the requested order.public double getSurfaceMotion(@Nonnull Duration time)
time
- The time elapsed since the beginning of this segment.@Nonnull public abstract Motion1<Double> getSurfaceMotion(@Nonnull Duration time, int order)
time
- The time elapsed since the beginning of this segment.order
- The requested order of the arc length where zero is the arc length and
higher orders specify the number of derivatives. Depending on the type of profile
and underlying geometry, the resulting order may not match the requested order.@Nonnull public abstract Duration getTotalTime(double arcLength)
arcLength
- The arc length to travel, in meters.@Nonnull public abstract Duration getTotalTime()
public abstract TerrainProvider getHeightReference(@Nonnull Duration time)
TerrainProvider
height reference for the profile height at the given time.time
- The elapsed time since the beginning of this segment.