15#ifndef WSFPATHLIST_HPP
16#define WSFPATHLIST_HPP
18#include "wsf_export.h"
22#include "UtEntity.hpp"
24#include "UtSphericalEarth.hpp"
71 virtual void Print(ut::log::MessageStream& aStream);
115 void InitializeRotation(UtVec3d aInitialLocationWCS, UtVec3d aRotationAxisWCS);
137 void ComputeState(
double aRelativeSimTime,
WsfPathState& aState)
override;
139 void Print(ut::log::MessageStream& aStream)
override;
153 void ComputeState(
double aRelativeSimTime,
WsfPathState& aState)
override;
155 void Print(ut::log::MessageStream& aStream)
override;
167 void Print(ut::log::MessageStream& aStream)
override;
198 bool Empty()
const {
return mSegments.empty(); }
208 mEndStateValid =
true;
214 void PrintPath(ut::log::MessageStream& aStream);
218 void GetStateP(
double aRelativeSimTime,
WsfPathState& aState);
221 int mLastSegmentIndex;
222 double mLastSegmentStartTime;
223 std::vector<Segment*> mSegments;
#define WSF_EXPORT
Definition WsfXIO_Export.hpp:35
Contains data about the acceleration and altitude changes during a segment.
Definition WsfPathList.hpp:85
DynamicsData()
Definition WsfPathList.hpp:87
void SetFlightAngle(double aFlightAngle)
Definition WsfPathList.hpp:97
void SetClimbRate(double aClimbRate)
Definition WsfPathList.hpp:95
double mLinearAcceleration
Linear acceleration applied to the duration of the segment.
Definition WsfPathList.hpp:99
double mFlightAngle
Flight angle applied to the duration of the segment.
Definition WsfPathList.hpp:103
void SetLinearAcceleration(double aAcceleration)
Definition WsfPathList.hpp:93
double mClimbRate
Climb rate applied to the duration of the segment.
Definition WsfPathList.hpp:101
Definition WsfPathList.hpp:163
void ComputeState(double aRelativeSimTime, WsfPathState &aState) override
Definition WsfPathList.hpp:166
Segment * Clone() const override
Returns a copy of the segment.
Definition WsfPathList.hpp:165
RotationArcSegment()
Definition WsfPathList.hpp:132
void SetTargetRoll(double aRoll)
Definition WsfPathList.hpp:138
Segment * Clone() const override
Returns a copy of the segment.
Definition WsfPathList.hpp:136
double mRoll
Definition WsfPathList.hpp:141
Contains data about a rotation.
Definition WsfPathList.hpp:108
UtVec3d mRotationAxis
Axis of rotation. May represent a turn, or straight flight (around a spherical earth).
Definition WsfPathList.hpp:123
UtVec3d mInitialLocationWCS
Initial location in WCS. This is rotated to find new position.
Definition WsfPathList.hpp:121
void SetRotationRadius(double aEarthRadius)
Definition WsfPathList.hpp:117
UtVec3d mInitialDirectionWCS
Initial direction in WCS. This is rotated to find new direction.
Definition WsfPathList.hpp:125
double mRotationRadius
Radius of the rotation. (radius of turn, or radius of earth).
Definition WsfPathList.hpp:119
RotationData()
Definition WsfPathList.hpp:110
RotationSegment()
Definition WsfPathList.hpp:148
Segment * Clone() const override
Returns a copy of the segment.
Definition WsfPathList.hpp:152
void SetTargetRoll(double aRoll)
Definition WsfPathList.hpp:154
double mRoll
Definition WsfPathList.hpp:157
Defines an entity's segment from one state to another over time.
Definition WsfPathList.hpp:34
void SetDuration(double aDuration)
Sets the length of time to complete this segment.
Definition WsfPathList.hpp:68
double mRollRate
The roll rate used when changing roll angle.
Definition WsfPathList.hpp:78
Segment()
Definition WsfPathList.hpp:36
virtual Segment * Clone() const =0
Returns a copy of the segment.
const WsfPathState & GetInitialState() const
Returns the state at the start of the segment.
Definition WsfPathList.hpp:63
WsfPathState mInitialState
The initial state of the segment. This should be equivalent to ComputeState(0.0).
Definition WsfPathList.hpp:74
void SetRollRate(double aRollRate)
Definition WsfPathList.hpp:60
bool mIsApproximation
Indicates this segment is an approximation.
Definition WsfPathList.hpp:80
virtual ~Segment()=default
double mDuration
The length of simulation time this duration takes to complete.
Definition WsfPathList.hpp:76
virtual void ComputeState(double aRelativeSimTime, WsfPathState &aState)=0
double GetDuration() const
Returns the length of time to complete this segment.
Definition WsfPathList.hpp:66
void Initialize(double aDuration, const WsfPathState &aState)
Initialize the basic members of the segment.
Definition WsfPathList.hpp:54
std::vector< Segment * > SegmentList
Definition WsfPathList.hpp:170
double GetDuration() const
Returns the sim-time required to move along the path.
Definition WsfPathList.cpp:359
void GetState(double aRelativeSimTime, WsfPathState &aState)
Returns the state at a time offset from the beginning of the path.
Definition WsfPathList.cpp:378
double GetEndStateValid()
Definition WsfPathList.hpp:195
void PopBack()
Definition WsfPathList.cpp:431
void SetEndState(WsfPathState &aState)
Sets the final state at the end of the path.
Definition WsfPathList.hpp:205
WsfPathList()
Definition WsfPathList.cpp:296
void Append(Segment *aSegmentPtr)
Appends a segment to the path.
Definition WsfPathList.cpp:325
const SegmentList & GetSegments() const
returns the list of segments in the path
Definition WsfPathList.hpp:212
WsfPathList & operator=(const WsfPathList &aRhs)=delete
void Reset()
Removes all segments from the path.
Definition WsfPathList.cpp:418
bool Empty() const
Returns true if the path list is empty.
Definition WsfPathList.hpp:198
Definition WsfPathState.hpp:24