12#ifndef WSFORBITALCONJUNCTIONASSESSMENT_HPP
13#define WSFORBITALCONJUNCTIONASSESSMENT_HPP
15#include "UtCalendar.hpp"
17#include "UtException.hpp"
18#include "UtOrbitalPropagatorBase.hpp"
19#include "UtSpline.hpp"
64 double aSecondarySize,
66 const UtOrbitalPropagatorBase* aPropPtr);
98 UtVec3d mAcceleration;
104 double DistanceFunction()
const;
105 double DistanceFunctionPrime()
const;
106 double DistanceFunctionPrimePrime()
const;
107 UtVec3d RelativePosition()
const;
108 UtVec3d RelativeVelocity()
const;
109 UtVec3d RelativeAcceleration()
const;
113 Kinematics mSecondary;
125 void Compute(
const State& aCurr,
127 double aCombinedRadius,
128 const UtCovariance& aCombinedCovariance,
129 double aScaleFactor);
132 bool HasCloseEncounter()
const {
return mRecord.mStartTime < mRecord.mEndTime; }
135 WsfOrbitalConjunctionRecord GetRecord()
const {
return mRecord; }
138 void ComputeProbability(
const UtInterpolatingPolynomial<UtVec3d, 5>& aPath,
double aCombinedRadius);
139 void ComputeEncounterTimes(
const UtInterpolatingPolynomial<UtVec3d, 5>& aPath,
143 UtCovariance& aCombinedCovariance);
144 static double RecomputeMinTime(
const UtInterpolatingPolynomial<UtVec3d, 5>& aFunction,
160 template<
typename Callable>
161 static double ContractTowardRoot(Callable aFunction,
double aFixed,
double aLimit)
163 if (aFunction(aFixed) >= 0.0)
167 double delta = (aLimit - aFixed) / 2.0;
168 double xTest = aFixed + delta;
169 while (aFunction(xTest) > 0.0)
172 xTest = aFixed + delta;
174 return xTest + 2.0 * delta;
177 WsfOrbitalConjunctionRecord mRecord;
184 Object(WsfLocalTrack& aTrack,
double aSize,
const UtOrbitalPropagatorBase* aPropPtr);
187 double EstimateTimeStep(
double aTime,
double aRadians);
190 double Periapsis()
const;
193 double Apoapsis()
const;
199 UtCovariance Covariance(
double aTime)
const;
202 Kinematics Propagate(
double aTime);
208 std::string GetName()
const;
211 double OrbitRadiusSquared(
double aTime);
212 double Eccentricity()
const;
213 double SemiMajorAxis()
const;
214 double MeanMotion()
const;
215 void UpdatePropagator(
double aTime);
217 WsfLocalTrack& mTrack;
218 UtCalendar mSimStartTime;
220 std::unique_ptr<UtOrbitalPropagatorBase> mPropPtr;
225 void PredictNextState();
226 double FindMinimum();
227 double ComputeNextTime();
238 Encounter mEncounter;
Definition WsfLocalTrack.hpp:32
WsfOrbitalConjunctionAssessment(WsfLocalTrack &aPrimary, double aPrimarySize, WsfLocalTrack &aSecondary, double aSecondarySize, const Options &aOptions, const UtOrbitalPropagatorBase *aPropPtr)
Definition WsfOrbitalConjunctionAssessment.cpp:31
Status
This indicates if a conjunction has been found.
Definition WsfOrbitalConjunctionAssessment.hpp:55
@ cREACHED_FINAL_TIME
Definition WsfOrbitalConjunctionAssessment.hpp:58
@ cCONJUNCTION_FOUND
Definition WsfOrbitalConjunctionAssessment.hpp:57
@ cNO_CONJUNCTION
Definition WsfOrbitalConjunctionAssessment.hpp:56
WsfOrbitalConjunctionRecord CurrentConjunction() const
Returns the current conjunction.
Definition WsfOrbitalConjunctionAssessment.cpp:91
double DefaultVariance() const
Return the default variance set when this object was constructed.
Definition WsfOrbitalConjunctionAssessment.hpp:87
bool ReachedFinalTime() const
Returns if the assessment has reached the end of the evaluation interval.
Definition WsfOrbitalConjunctionAssessment.hpp:81
double DefaultObjectRadius() const
Return the default object radius set when this object was constructed.
Definition WsfOrbitalConjunctionAssessment.hpp:90
Status FindNext()
Definition WsfOrbitalConjunctionAssessment.cpp:58
Definition Options.hpp:21
Specifies the options to use when performing the analysis.
Definition WsfOrbitalConjunctionAssessment.hpp:42
double mCutRadius
Definition WsfOrbitalConjunctionAssessment.hpp:43
double mDefaultObjectRadius
The time over which to search for close approaches.
Definition WsfOrbitalConjunctionAssessment.hpp:49
double mStepRadians
The distance cut in the periapsis-apoapsis fast cut.
Definition WsfOrbitalConjunctionAssessment.hpp:44
double mInitialSearchTime
exclusion zone.
Definition WsfOrbitalConjunctionAssessment.hpp:47
double mExclusionFactor
The step size in degrees to take during prediction.
Definition WsfOrbitalConjunctionAssessment.hpp:45
double mDefaultVariance
The default object radius.
Definition WsfOrbitalConjunctionAssessment.hpp:50
double mFinalSearchTime
The initial search time.
Definition WsfOrbitalConjunctionAssessment.hpp:48
The data recorded when a possible conjunction is predicted.
Definition WsfOrbitalConjunctionAssessment.hpp:25
double mRelativeVelocity
The predicted miss distance between the two objects.
Definition WsfOrbitalConjunctionAssessment.hpp:33
double mMinTime
A string identifier for the secondary object.
Definition WsfOrbitalConjunctionAssessment.hpp:28
double mMissDistance
The worst-case probability estimate for a conjunction to occur.
Definition WsfOrbitalConjunctionAssessment.hpp:32
std::string mPrimary
Definition WsfOrbitalConjunctionAssessment.hpp:26
double mEndTime
The start time of the encounter.
Definition WsfOrbitalConjunctionAssessment.hpp:30
std::string mSecondary
A string identifier for the primary object.
Definition WsfOrbitalConjunctionAssessment.hpp:27
double mMaxProbability
The end time of the encounter.
Definition WsfOrbitalConjunctionAssessment.hpp:31
double mStartTime
The time of closest approach.
Definition WsfOrbitalConjunctionAssessment.hpp:29