12#ifndef WSFORBITALTARGETING_HPP
13#define WSFORBITALTARGETING_HPP
15#include "wsf_space_export.h"
21#include "UtCalendar.hpp"
22#include "UtCloneablePtr.hpp"
23#include "UtLambertProblem.hpp"
24class UtOrbitalPropagatorBase;
41 UtOrbitalPropagatorBase& aInterceptorProp,
45 UtOrbitalPropagatorBase& aInterceptorProp,
47 bool aAllowHyperbolic,
55 UtLambertProblem::Result
56 MinimizeDeltaV(
double aDtMax,
double aDvMax,
bool aRendezvous,
double aTimeTolerance,
double& aDt,
double& aDv)
const;
58 UtLambertProblem::Result
59 MinimizeDeltaT(
double aDtMax,
double aDvMax,
bool aRendezvous,
double aTimeTolerance,
double& aDt,
double& aDv)
const;
80 double aTimeTolerance,
84 static bool GoShortWay(
const UtVec3d& aLocationInterceptor,
85 const UtVec3d& aVelocityInterceptor,
86 const UtVec3d& aLocationTarget);
88 UtLambertProblem::Result
Solve(
double aDt,
bool aRendezvous,
double& aDeltaV)
const;
90 UtLambertProblem::Result
Solve(
double aDt, UtVec3d& aDeltaV_Intercept, UtVec3d& aDeltaV_Rendezvous)
const;
101 Sample(
double aDt,
double aDv,
bool aHasSolution)
104 , mHasSolution{aHasSolution}
108 double mDt{std::numeric_limits<double>::max()};
109 double mDv{std::numeric_limits<double>::max()};
110 double mCost{std::numeric_limits<double>::max()};
111 bool mHasSolution{
false};
114 Sample Solve(
double aDt,
bool aRendezvous)
const;
127 std::vector<std::pair<double, double>> FindAllRangesCost(
const wsf::space::OrbitalTargetingCost& aCost,
131 bool aRendezvous)
const;
146 UtLambertProblem::Result SearchCost(
const wsf::space::OrbitalTargetingCost& aCost,
151 double aTimeTolerance,
152 double& aDeltaV)
const;
154 const UtCalendar mTime;
155 UtOrbitalPropagatorBase& mInterceptorProp;
156 UtCloneablePtr<wsf::space::OrbitalTargetPoint> mTargetPtr;
157 double mTolerance{1.0e-9};
158 bool mAllowEarthHit{
false};
double GetTolerance() const
Definition WsfOrbitalTargeting.hpp:92
UtLambertProblem::Result MinimizeDeltaV(double aDtMax, double aDvMax, bool aRendezvous, double aTimeTolerance, double &aDt, double &aDv) const
Definition WsfOrbitalTargeting.cpp:65
UtLambertProblem::Result MinimizeDeltaT(double aDtMax, double aDvMax, bool aRendezvous, double aTimeTolerance, double &aDt, double &aDv) const
Definition WsfOrbitalTargeting.cpp:88
UtLambertProblem::Result Solve(double aDt, bool aRendezvous, double &aDeltaV) const
Definition WsfOrbitalTargeting.cpp:213
WsfOrbitalTargeting(WsfOrbitalTargeting &&)=default
~WsfOrbitalTargeting()=default
void SetTolerance(double aTolerance)
Definition WsfOrbitalTargeting.hpp:94
WsfOrbitalTargeting(const UtCalendar &aTime, UtOrbitalPropagatorBase &aInterceptorProp, const wsf::space::OrbitalTargetPoint &aTarget)
Definition WsfOrbitalTargeting.cpp:23
static bool GoShortWay(const UtVec3d &aLocationInterceptor, const UtVec3d &aVelocityInterceptor, const UtVec3d &aLocationTarget)
Definition WsfOrbitalTargeting.cpp:193
UtLambertProblem::Result MinimizeCost(const wsf::space::OrbitalTargetingCost &aCost, double aDtMax, double aDvMax, bool aRendezvous, double aTimeTolerance, double &aDt, double &aDv) const
Definition WsfOrbitalTargeting.cpp:155
WsfOrbitalTargeting(const WsfOrbitalTargeting &aOther)=delete
Definition WsfOrbitalTargetPoint.hpp:30
A cost function to minimize when computing a solution for an orbital targeting operation.
Definition WsfOrbitalTargetingCost.hpp:29
Definition WsfAtmosphere.cpp:23
Function definitions for those who need run-time access to the version.
Definition WsfComm.cpp:32