12#ifndef WSFSPACEORIENTATION_HPP
13#define WSFSPACEORIENTATION_HPP
15#include "wsf_space_export.h"
20#include "UtException.hpp"
90 static std::unique_ptr<Orientation>
Factory(
const std::string& aOrientation);
110 virtual bool Calculate(
double& aPsi,
double& aTheta,
double& aPhi)
const = 0;
113 const UtVec3d& aConstraintAxisOrientationECI,
121 const UtVec3d& aX_AxisOrientationECI,
122 const UtVec3d& aZ_AxisConstraintECI,
128 const UtVec3d& aZ_AxisConstraintECI,
134 const UtVec3d& aX_AxisConstraintECI,
140 const UtVec3d& aZ_AxisConstraintECI,
149 UtVec3d Nadir()
const;
150 UtVec3d Solar()
const;
151 UtVec3d VelocityECI()
const;
152 UtVec3d VelocityECEF()
const;
153 UtVec3d OrbitPlaneConstraint(
const UtVec3d& aAlignVector)
const;
155 void HandleException(
const UtException& aException)
const;
170 bool Calculate(
double& aPsi,
double& aTheta,
double& aPhi)
const override {
return false; }
176 static constexpr const char*
GetTypeName() {
return "nadir_with_eci_velocity_constraint"; }
181 bool Calculate(
double& aPsi,
double& aTheta,
double& aPhi)
const override
191 static constexpr const char*
GetTypeName() {
return "solar_with_nadir_constraint"; }
196 bool Calculate(
double& aPsi,
double& aTheta,
double& aPhi)
const override
206 static constexpr const char*
GetTypeName() {
return "nadir_with_solar_constraint"; }
211 bool Calculate(
double& aPsi,
double& aTheta,
double& aPhi)
const override
221 static constexpr const char*
GetTypeName() {
return "nadir_with_ecef_velocity_constraint"; }
226 bool Calculate(
double& aPsi,
double& aTheta,
double& aPhi)
const override
236 static constexpr const char*
GetTypeName() {
return "eci_velocity_with_nadir_constraint"; }
241 bool Calculate(
double& aPsi,
double& aTheta,
double& aPhi)
const override
251 static constexpr const char*
GetTypeName() {
return "eci_velocity_with_solar_constraint"; }
256 bool Calculate(
double& aPsi,
double& aTheta,
double& aPhi)
const override
275 bool IsValid()
const override;
280 : UtException(
"Could not find platform (Entity) " + aEntityName)
288 : UtException(
"Could not find track with track id " + aTrackId)
296 : UtException(
"Track location invalid for track id " + aTrackId)
302 UtVec3d TargetVector()
const;
315 static constexpr const char*
GetTypeName() {
return "entity_with_solar_constraint"; }
320 bool Calculate(
double& aPsi,
double& aTheta,
double& aPhi)
const override;
326 static constexpr const char*
GetTypeName() {
return "entity_with_nadir_constraint"; }
331 bool Calculate(
double& aPsi,
double& aTheta,
double& aPhi)
const override;
337 static constexpr const char*
GetTypeName() {
return "entity_with_orbit_plane_constraint"; }
342 bool Calculate(
double& aPsi,
double& aTheta,
double& aPhi)
const override;
360 : UtException(
"Geo Point reference " + aGeoPointName +
" not found ")
366 UtVec3d TargetVector()
const;
374 static constexpr const char*
GetTypeName() {
return "point_with_orbit_plane_constraint"; }
380 bool Calculate(
double& aPsi,
double& aTheta,
double& aPhi)
const override;
Definition WsfAttitudeController.hpp:31
Definition WsfGeoPoint.hpp:29
WsfObject()
This is the constructor for the WsfObject class.
Definition WsfObject.cpp:88
Definition WsfTrackId.hpp:33
static constexpr const char * GetTypeName()
Definition WsfSpaceOrientation.hpp:236
bool Calculate(double &aPsi, double &aTheta, double &aPhi) const override
Definition WsfSpaceOrientation.hpp:241
OrientationECI_VelocityNadir()
Definition WsfSpaceOrientation.cpp:567
Orientation * Clone() const override
Definition WsfSpaceOrientation.hpp:238
OrientationECI_VelocitySolar()
Definition WsfSpaceOrientation.cpp:494
static constexpr const char * GetTypeName()
Definition WsfSpaceOrientation.hpp:251
Orientation * Clone() const override
Definition WsfSpaceOrientation.hpp:253
bool Calculate(double &aPsi, double &aTheta, double &aPhi) const override
Definition WsfSpaceOrientation.hpp:256
Orientation * Clone() const override
Definition WsfSpaceOrientation.hpp:328
OrientationEntityNadir()
Definition WsfSpaceOrientation.cpp:576
bool Calculate(double &aPsi, double &aTheta, double &aPhi) const override
Definition WsfSpaceOrientation.cpp:582
static constexpr const char * GetTypeName()
Definition WsfSpaceOrientation.hpp:326
Orientation * Clone() const override
Definition WsfSpaceOrientation.hpp:339
static constexpr const char * GetTypeName()
Definition WsfSpaceOrientation.hpp:337
bool Calculate(double &aPsi, double &aTheta, double &aPhi) const override
Definition WsfSpaceOrientation.cpp:615
OrientationEntityOrbitPlane()
Definition WsfSpaceOrientation.cpp:609
OrientationEntitySolar()
Definition WsfSpaceOrientation.cpp:600
bool Calculate(double &aPsi, double &aTheta, double &aPhi) const override
Definition WsfSpaceOrientation.cpp:462
Orientation * Clone() const override
Definition WsfSpaceOrientation.hpp:317
static constexpr const char * GetTypeName()
Definition WsfSpaceOrientation.hpp:315
EntityNotFoundException(const std::string &aEntityName)
Definition WsfSpaceOrientation.hpp:279
TrackLocationInvalidException(const std::string &aTrackId)
Definition WsfSpaceOrientation.hpp:295
TrackNotFoundException(const std::string &aTrackId)
Definition WsfSpaceOrientation.hpp:287
WsfTrackId mTrackId
Definition WsfSpaceOrientation.hpp:305
std::string mEntityName
Definition WsfSpaceOrientation.hpp:304
void SetEntityName(const std::string &aEntityName)
Definition WsfSpaceOrientation.cpp:335
OrientationEntity()
Definition WsfSpaceOrientation.cpp:324
bool ProcessInput(UtInput &aInput) override
Definition WsfSpaceOrientation.cpp:329
bool mOrientToTrack
Definition WsfSpaceOrientation.hpp:306
const WsfTrackId & GetLocalTrackId() const
Definition WsfSpaceOrientation.hpp:273
const std::string & GetEntityName() const
Definition WsfSpaceOrientation.hpp:270
GeoPointNotFoundException(const std::string &aGeoPointName)
Definition WsfSpaceOrientation.hpp:359
bool ProcessInput(UtInput &aInput) override
Read the name of the GeoPoint to access on the platform.
Definition WsfSpaceOrientation.cpp:407
bool IsValid() const override
Definition WsfSpaceOrientation.cpp:413
std::unique_ptr< WsfGeoPoint > mGeoPointPtr
Definition WsfSpaceOrientation.hpp:368
std::string mGeoPointName
Definition WsfSpaceOrientation.hpp:367
void SetGeoPointName(const std::string &aName)
Definition WsfSpaceOrientation.hpp:354
OrientationGeoPoint()
Definition WsfSpaceOrientation.cpp:503
void SetGeoPoint(const WsfGeoPoint &aGeoPoint)
Definition WsfSpaceOrientation.cpp:425
const std::string & GetGeoPointName() const
Definition WsfSpaceOrientation.hpp:355
Orientation * Clone() const override
Definition WsfSpaceOrientation.hpp:223
static constexpr const char * GetTypeName()
Definition WsfSpaceOrientation.hpp:221
OrientationNadirECEF_Velocity()
Definition WsfSpaceOrientation.cpp:549
bool Calculate(double &aPsi, double &aTheta, double &aPhi) const override
Definition WsfSpaceOrientation.hpp:226
OrientationNadirECI_Velocity()
Definition WsfSpaceOrientation.cpp:558
Orientation * Clone() const override
Definition WsfSpaceOrientation.hpp:178
static constexpr const char * GetTypeName()
Definition WsfSpaceOrientation.hpp:176
bool Calculate(double &aPsi, double &aTheta, double &aPhi) const override
Definition WsfSpaceOrientation.hpp:181
OrientationNadirSolar()
Definition WsfSpaceOrientation.cpp:531
Orientation * Clone() const override
Definition WsfSpaceOrientation.hpp:208
static constexpr const char * GetTypeName()
Definition WsfSpaceOrientation.hpp:206
bool Calculate(double &aPsi, double &aTheta, double &aPhi) const override
Definition WsfSpaceOrientation.hpp:211
bool Calculate(double &aPsi, double &aTheta, double &aPhi) const override
Definition WsfSpaceOrientation.hpp:170
OrientationNone()
Definition WsfSpaceOrientation.cpp:540
Orientation * Clone() const override
Definition WsfSpaceOrientation.hpp:167
static constexpr const char * GetTypeName()
Definition WsfSpaceOrientation.hpp:165
Definition WsfSpaceOrientation.hpp:372
OrientationPointOrbitPlane()
Definition WsfSpaceOrientation.cpp:634
OrientationPointOrbitPlane(const OrientationPointOrbitPlane &aSrc)=default
static constexpr const char * GetTypeName()
Definition WsfSpaceOrientation.hpp:374
Orientation * Clone() const override
Definition WsfSpaceOrientation.hpp:377
Orientation * Clone() const override
Definition WsfSpaceOrientation.hpp:193
bool Calculate(double &aPsi, double &aTheta, double &aPhi) const override
Definition WsfSpaceOrientation.hpp:196
OrientationSolarNadir()
Definition WsfSpaceOrientation.cpp:522
static constexpr const char * GetTypeName()
Definition WsfSpaceOrientation.hpp:191
Definition WsfSpaceOrientation.hpp:80
bool GetDefaultX_Aligned() const
Definition WsfSpaceOrientation.hpp:146
UtVec3d Solar() const
Definition WsfSpaceOrientation.cpp:193
Orientation * Clone() const override=0
static void CalculateX_Aligned(const UtVec3d &aX_AxisOrientationECI, const UtVec3d &aZ_AxisConstraintECI, double &aPsi, double &aTheta, double &aPhi)
Definition WsfSpaceOrientation.cpp:90
static void CalculateZ_Aligned(const UtVec3d &aZ_AxisOrientationECI, const UtVec3d &aX_AxisConstraintECI, double &aPsi, double &aTheta, double &aPhi)
Definition WsfSpaceOrientation.cpp:109
Orientation(const Orientation &aSrc)=default
~Orientation() override=default
bool mIssueErrorMessage
Definition WsfSpaceOrientation.hpp:157
virtual bool Calculate(double &aPsi, double &aTheta, double &aPhi) const =0
static void CalculatePCS_DirectionCosines(const UtVec3d &aX_AxisOrientationECI, const UtVec3d &aZ_AxisConstraintECI, UtVec3d &aX_DC, UtVec3d &aY_DC, UtVec3d &aZ_DC)
Definition WsfSpaceOrientation.cpp:62
void CalculateAligned(const UtVec3d &aPointingAxisOrientationECI, const UtVec3d &aConstraintAxisOrientationECI, double &aPsi, double &aTheta, double &aPhi) const
Definition WsfSpaceOrientation.cpp:176
static void CalculateGeneral(double aYawECS, double aPitchECS, double aRollECS, const UtVec3d &aX_AxisOrientationECI, const UtVec3d &aZ_AxisConstraintECI, double &aPsi, double &aTheta, double &aPhi)
Definition WsfSpaceOrientation.cpp:139
const WsfAttitudeController * mControllerPtr
Definition WsfSpaceOrientation.hpp:159
bool mDefaultX_Aligned
Definition WsfSpaceOrientation.hpp:158
static std::unique_ptr< Orientation > Factory(const std::string &aOrientation)
Definition WsfSpaceOrientation.cpp:239
Orientation(bool aIsDefaultX_Aligned)
Definition WsfSpaceOrientation.hpp:82
virtual bool IsValid() const
Definition WsfSpaceOrientation.hpp:104
void SetAttitudeController(const WsfAttitudeController &aController)
Set the automatic orientation to be used with the propagator.
Definition WsfSpaceOrientation.hpp:97
bool ProcessInput(UtInput &aInput) override
Definition WsfSpaceOrientation.hpp:99
UtVec3d VelocityECEF() const
Definition WsfSpaceOrientation.cpp:209
void SetDefaultX_Aligned(bool aIsDefaultX_Aligned)
Definition WsfSpaceOrientation.hpp:145
UtVec3d VelocityECI() const
Definition WsfSpaceOrientation.cpp:201
const char * GetScriptClassName() const override
Definition WsfSpaceOrientation.cpp:46
UtVec3d Nadir() const
Definition WsfSpaceOrientation.cpp:227
Definition WsfAtmosphere.cpp:23
Function definitions for those who need run-time access to the version.
Definition WsfComm.cpp:32