WSF
WsfBallisticMissileLaunchComputer.hpp
Go to the documentation of this file.
1// ****************************************************************************
2// CUI
3//
4// The Advanced Framework for Simulation, Integration, and Modeling (AFSIM)
5//
6// Copyright 2003-2015 The Boeing Company. All rights reserved.
7//
8// The use, dissemination or disclosure of data in this file is subject to
9// limitation or restriction. See accompanying README and LICENSE for details.
10// ****************************************************************************
11
12#ifndef WSFBALLISTICMISSILELAUNCHCOMPUTER_HPP
13#define WSFBALLISTICMISSILELAUNCHCOMPUTER_HPP
14
15#include "wsf_mil_export.h"
16
17#include <map>
18#include <memory>
19#include <vector>
20
21#include "TblLookup.hpp"
22#include "UtCallbackHolder.hpp"
23#include "UtEntity.hpp"
24#include "UtLog.hpp"
25
26class WsfAero;
27class WsfDraw;
28#include "WsfEvent.hpp"
29#include "WsfLaunchComputer.hpp"
30#include "WsfMover.hpp"
31#include "WsfPlatform.hpp"
33
35
40{
41protected:
42 class Target;
43
44public:
45 using TargetMap = std::map<size_t, WsfMover::KinematicModel*>;
46
57
59 static std::string BaseTypeName() { return "WSF_BALLISTIC_MISSILE_LAUNCH_COMPUTER"; }
60
65
66 WsfLaunchComputer* Clone() const override;
67 bool Initialize(double aSimTime, WsfWeapon* aWeaponPtr) override;
68 bool ProcessInput(UtInput& aInput) override;
69
70 double EstimatedTimeToIntercept(double aSimTime, const WsfTrack& aTrack, double aLaunchDelayTime) override;
71
72 virtual double ComputeLateralTargetOffset(double aSimTime, const WsfTrack& aTrack);
73
74 double GetTargetApogeeTime() const;
75 void GetTargetApogeeLocationWCS(double aLocWCS[3]) const;
76
82 void ComputeEndPoint() { mComputeEndPoint = true; }
83
87
88
89 void ComputeLaunchWindows() { mComputeLaunchWindows = true; }
90 unsigned int GetLaunchWindowCount() const { return static_cast<unsigned int>(mLaunchWindows.size()); }
91 double GetFirstLaunchTime(unsigned int aIndex) const;
92 double GetFirstInterceptTime(unsigned int aIndex) const;
93 void GetFirstInterceptLocationWCS(unsigned int aIndex, double aLocWCS[3]) const;
94 double GetLastLaunchTime(unsigned int aIndex) const;
95 double GetLastInterceptTime(unsigned int aIndex) const;
96 void GetLastInterceptLocationWCS(unsigned int aIndex, double aLocWCS[3]) const;
98
99 // The following function was written specifically to get access to the launch windows
100 // encapsulated within, for the purposes of automating multiple timed SA defensive launches
101 // in response to a given threat SS BM launch:
102 bool GetPrecomputedLaunchWindowsFor(double aSimTime, unsigned int aThreatIndex, std::vector<SA_LaunchWindow>& aWindows);
103
104 void QueuedSolutionPurge(double aSimTime, size_t aTargetIndex, const std::string& aCaller);
105
106protected:
110 {
111 public:
112 BallisticModel() = delete;
114 double aSimTime,
115 WsfStringId aModelTypeId,
116 const double aLocationWCS[3],
117 const double aVelocityWCS[3],
118 double aIntegrationInterval,
119 WsfDraw* aDrawPtr = nullptr); // If we want to draw the trajectory.
120 ~BallisticModel() override;
121
122 bool GetLocationXYZ(double aTime, double aLocXYZ[3]) const override;
123
124 bool GetVelocityXYZ(double aTime, double aVelXYZ[3]) const override;
125
126 private:
127 struct Point
128 {
129 double mLocXYZ[3]; // Spherical Earth
130 double mVelXYZ[3]; // Spherical Earth
131 };
132
133 double Update();
134
135 WsfPlatform* mStatePtr;
136 double mMass;
137 WsfAero* mAeroPtr;
138 double mIntegrationInterval;
139
140 // The following are Ellipsoidal Earth values, but integration is done is done in the spherical
141 // frame to correspond with the frame used by WsfGuidedMover. Results are converted to ellipsoidal
142 // earth values for external use.
143 double mIntegLocWCS[3];
144 double mIntegVelWCS[3];
145 double mIntegWCS_ToNED_Transform[3][3];
146
148 std::vector<Point> mPoints;
149 };
150
151 double LastEvaluatedGroundRange() const { return mLastEvaluatedGroundRange; }
152
154 {
155 public:
156 PurgeSolutionEvent(double aSimTime,
158 size_t aTargetIndex,
159 const std::string& aCaller);
161
162 private:
163 size_t mPlatformIndex;
165 size_t mTargetIndex;
166 std::string mCaller;
167 };
168
169 // Intentionally does not set the corresponding validity flag.
170 void SetLauncherBearingOnly(double aValue) { mLauncherBearing = aValue; }
171
174
175
177 {
178 public:
179 double mAltitude;
182 double mSpeed;
184 };
185
187 using TempRangeLine = std::vector<TempPoint>;
188
196
197
206 {
207 public:
208 TblIndVarU<double> mAltitude;
209 TblDepVar1<double> mTimeOfFlight;
210 TblDepVar1<double> mLoftAngle;
211 TblDepVar1<double> mSpeed;
212 TblDepVar1<double> mFlightPathAngle;
213
216 };
217
226
229 {
230 public:
231 SA_Table(double aRangeInterval);
233
234 void ComputeRoundedLimits(double aInterval, double& aMinValue, double& aMaxValue, int& aPointCount);
235
236 void ConvertRangeLine(TempRangeLine& aTempRangeLine, RangeLine& aRealRangeLine);
237
238 int IndexOfRange(double aRange) const
239 {
240 int groundRangeIndex = static_cast<int>((aRange - mMinRange) / mRangeInterval);
241 if (groundRangeIndex < 0)
242 {
243 groundRangeIndex = 0;
244 }
245 else if (groundRangeIndex >= mRangePointCount)
246 {
247 groundRangeIndex = mRangePointCount - 1;
248 }
249 return groundRangeIndex;
250 }
251
252 double RangeOfIndex(size_t aRangeIndex) const { return mMinRange + (aRangeIndex * mRangeInterval); }
253
254 void PrintRangeLine(const RangeLine& aRangeLine, ut::log::MessageStream& aStream) const;
255
256 bool Read(const std::string& aFileName, bool aDebugEnabled, bool aPrintDetail);
257
258 double mMinRange;
259 double mMaxRange;
264
267
269
270 // The vector is indexed by ground range index.
271 std::vector<RangeEntry> mRangeTable;
272 };
273
276 {
277 public:
278 SS_Table() = default;
279 ~SS_Table() = default;
280
281 bool Read(const std::string& aFileName);
282
283 // Independent variable range.
284 TblIndVarU<double> mRange;
285
286 // Dependent variables are loft angle, burn time, time of flight
287 TblDepVar1<double> mLoftAngle;
288 TblDepVar1<double> mBurnTime;
289 TblDepVar1<double> mTimeOfFlight;
290 TblDepVar1<double> mSpeed;
291 TblDepVar1<double> mFlightPathAngle;
292
293 TblDepVar1<double> mBO_TimeOfFlight;
294 TblDepVar1<double> mBO_Range;
295 TblDepVar1<double> mBO_Speed;
296 TblDepVar1<double> mBO_FlightPathAngle;
297
298 bool mHasVelocityData = false;
299 bool mHasBurnoutData = false;
300 };
301
308 {
309 public:
310 SA_Evaluator(double aBaseTime,
312 WsfMover::KinematicModel* aTargetDataPtr);
313
314 void FindLaunchWindowStart(double& aTimeToLaunch,
315 double& aTimeToIntercept,
316 double& aTimeOfFlight,
317 double& aLoftAngle,
318 double& aInterceptSpeed,
319 double& aInterceptFlightPathAngle);
320
321 void FindLaunchWindowEnd(double& aTimeToLaunch,
322 double& aTimeToIntercept,
323 double& aTimeOfFlight,
324 double& aLoftAngle,
325 double& aInterceptSpeed,
326 double& aInterceptFlightPathAngle);
327
328 bool CheckForInterceptOnRangeLine(int aRangeIndex,
329 double& aTimeToLaunch,
330 double& aTimeToIntercept,
331 double& aTimeOfFlight,
332 double& aLoftAngle,
333 double& aInterceptSpeed,
334 double& aInterceptFlightPathAngle);
335
339 double mBaseTime;
340 double mLaunchLocXYZ[3]; // spherical
341
343
344 double mBegTime;
345 double mBegLocXYZ[3]; // spherical
346 double mBegRange;
349
350 double mEndTime;
351 double mEndLocXYZ[3]; // spherical
352 double mEndRange;
355
359
360 TblLookupLUBX<double> mAltitudeLU;
361 };
362
364 {
365 public:
367 : mLaunchTime(-1.0)
368 , mInterceptTime(-1.0)
369 , mTimeOfFlight(-1.0)
370 , mLoftAngle(0.0)
371 , mInterceptSpeed(0.0)
373 , mEndTime(-1.0)
375 {
376 UtVec3d::Set(mEndPointWCS, 0.0);
377 }
378
383 double mInterceptSpeed; // Of the interceptor
384 double mInterceptFlightPathAngle; // Of the interceptor
385 double mEndTime;
386 double mEndPointWCS[3];
387
388 std::vector<SA_LaunchWindow> mLaunchWindows;
389 };
390
391 bool ComputeAirIntercept(double aSimTime, WsfPlatform* aTargetPtr, const WsfTrack* aTrackPtr, double aLaunchDelayTime);
392
393 bool ComputeGroundIntercept(double aSimTime, double aLaunchDelayTime, const double aTargetLocWCS[3]);
394
395 void ComputeLaunchWindows(double aSimTime,
396 double aLaunchDelayTime,
397 double aTimeToLaunch,
398 double aTimeToIntercept,
399 SA_Evaluator& aEvaluator,
400 std::vector<SA_LaunchWindow>& aLaunchWindows);
401
402 void WeaponFired(double aSimTime, const WsfWeaponEngagement* aEngagementPtr, const WsfTrack* aTrackPtr);
403
404 void WeaponFireAborted(double aSimTime, WsfWeapon* aWeaponPtr, const WsfTrack* aTrackPtr, double aQuantity);
405
406 bool InitializeTTIData() override;
407
408private:
409 void DrawRanges();
410
411 // This accessor will always return a base Target class pointer.
412 WsfMover::KinematicModel* GetTargetData(double aSimTime,
413 size_t aTargetIndex,
414 WsfStringId aTargetTypeId,
415 const double aTargetLocWCS[3],
416 const double aTargetVelWCS[3],
417 WsfMover* aMoverPtr);
418
419 WsfMover::KinematicModel* CreateTarget(double aSimTime,
420 WsfStringId aTargetTypeId,
421 const double aTargetLocWCS[3],
422 const double aTargetVelWCS[3],
423 WsfMover* aMoverPtr);
424
425 void PlatformDeleted(double aSimTime, WsfPlatform* aPlatformPtr);
426
427 void PurgeSolution(double aSimTime, size_t aTargetIndex, const std::string& aCaller);
428
429 void ShowPoint(const double aLocWCS[3],
430 double aRedValue = 1.0,
431 double aGreenValue = 1.0,
432 double aBlueValue = 0.0,
433 int aPointSize = 8);
434
435
436 std::shared_ptr<SA_Table> mSA_TablePtr;
437 std::shared_ptr<SS_Table> mSS_TablePtr;
438
439 double mMaxLaunchSlantRange;
440 double mMaxInterceptSlantRange;
441 double mMinInterceptAltitude;
442 double mMaxInterceptAltitude;
443 double mMinInterceptVelocity;
444 double mMaxInterceptAngle;
445 double mIntegrationTimeStep;
446 double mGroundRangeSampleInterval;
447 double mSolutionValidityTime;
448 double mPredictedTrajectoryErrorLimit;
449 double mLastEvaluatedGroundRange;
450 bool mAllowBoostPhaseIntercept;
451 bool mShowGraphics;
452 bool mDebugFileLoading;
453 bool mInterceptTruth; // else Intercept Track location.
454 std::unique_ptr<WsfDraw> mDrawPtr;
455 std::unique_ptr<WsfDraw> mLineDrawPtr;
456
457 bool mInputComputeEndPoint;
458 bool mComputeEndPoint;
459 bool mComputeLaunchWindows;
460 std::vector<SA_LaunchWindow> mLaunchWindows;
461
462 double mTargetApogeeTime;
463 double mTargetApogeeLocWCS[3];
464
466 using SA_SolutionCache = std::map<size_t, SA_Solution>;
467 SA_SolutionCache mSA_SolutionCache;
468
469 UtCallbackHolder mCallbacks;
471};
472
473
475{
476public:
479
480 // =================================================================================================
490 // protected
491 void GlobalPlatformDeleted(double aSimTime, WsfPlatform* aPlatformPtr);
492
493 bool Initialize() override;
494
495
500
502 std::map<WsfStringId, WsfStringId> mTargetAeroMap;
503 std::map<WsfStringId, double> mTargetMassMap;
504 UtCallbackHolder mCallbacks;
505};
506
507#endif
aObjectPtr Update(simTime)
UtStringId WsfStringId
WsfStringId – the same thing as UtStringId.
Definition WsfStringId.hpp:23
Definition Target.hpp:27
Definition WsfAero.hpp:30
Definition WsfBallisticMissileLaunchComputer.hpp:475
UtCallbackHolder mCallbacks
Definition WsfBallisticMissileLaunchComputer.hpp:504
std::map< WsfStringId, WsfStringId > mTargetAeroMap
Definition WsfBallisticMissileLaunchComputer.hpp:502
void GlobalPlatformDeleted(double aSimTime, WsfPlatform *aPlatformPtr)
Definition WsfBallisticMissileLaunchComputer.cpp:3016
WsfBallisticMissileLaunchComputer::TargetMap mTargetDataMap
Definition WsfBallisticMissileLaunchComputer.hpp:501
std::map< WsfStringId, double > mTargetMassMap
Definition WsfBallisticMissileLaunchComputer.hpp:503
WsfBallisticMissileLaunchComputerSharedData()
Definition WsfBallisticMissileLaunchComputer.cpp:3035
bool GetVelocityXYZ(double aTime, double aVelXYZ[3]) const override
Definition WsfBallisticMissileLaunchComputer.cpp:2882
bool GetLocationXYZ(double aTime, double aLocXYZ[3]) const override
Definition WsfBallisticMissileLaunchComputer.cpp:2853
PurgeSolutionEvent(double aSimTime, WsfBallisticMissileLaunchComputer *aLC_Ptr, size_t aTargetIndex, const std::string &aCaller)
Definition WsfBallisticMissileLaunchComputer.cpp:2995
WsfEvent::EventDisposition Execute() override
Definition WsfBallisticMissileLaunchComputer.cpp:3007
Definition WsfBallisticMissileLaunchComputer.hpp:219
RangeLine mIncreasingLine
The line where increasing loft angle results in increasing altitude.
Definition WsfBallisticMissileLaunchComputer.hpp:222
RangeLine mDecreasingLine
The line where increasing loft angle results in decreasing altitude.
Definition WsfBallisticMissileLaunchComputer.hpp:224
Definition WsfBallisticMissileLaunchComputer.hpp:206
double mMinAltitude
Definition WsfBallisticMissileLaunchComputer.hpp:214
TblDepVar1< double > mTimeOfFlight
Definition WsfBallisticMissileLaunchComputer.hpp:209
TblDepVar1< double > mSpeed
Definition WsfBallisticMissileLaunchComputer.hpp:211
TblDepVar1< double > mLoftAngle
Definition WsfBallisticMissileLaunchComputer.hpp:210
double mMaxAltitude
Definition WsfBallisticMissileLaunchComputer.hpp:215
TblIndVarU< double > mAltitude
Definition WsfBallisticMissileLaunchComputer.hpp:208
TblDepVar1< double > mFlightPathAngle
Definition WsfBallisticMissileLaunchComputer.hpp:212
Definition WsfBallisticMissileLaunchComputer.hpp:308
double mEndRange
Definition WsfBallisticMissileLaunchComputer.hpp:352
int mIterCount
Definition WsfBallisticMissileLaunchComputer.hpp:357
double mEndTime
Definition WsfBallisticMissileLaunchComputer.hpp:350
int mBegRangeIndex
Definition WsfBallisticMissileLaunchComputer.hpp:348
bool CheckForInterceptOnRangeLine(int aRangeIndex, double &aTimeToLaunch, double &aTimeToIntercept, double &aTimeOfFlight, double &aLoftAngle, double &aInterceptSpeed, double &aInterceptFlightPathAngle)
Definition WsfBallisticMissileLaunchComputer.cpp:2494
int mEndRangeIndex
Definition WsfBallisticMissileLaunchComputer.hpp:354
double mLastRange
Definition WsfBallisticMissileLaunchComputer.hpp:356
const WsfBallisticMissileLaunchComputer * mComputerPtr
Definition WsfBallisticMissileLaunchComputer.hpp:336
double mEndAltitude
Definition WsfBallisticMissileLaunchComputer.hpp:353
bool mClosing
Definition WsfBallisticMissileLaunchComputer.hpp:358
TblLookupLUBX< double > mAltitudeLU
Definition WsfBallisticMissileLaunchComputer.hpp:360
double mBegRange
Definition WsfBallisticMissileLaunchComputer.hpp:346
void FindLaunchWindowStart(double &aTimeToLaunch, double &aTimeToIntercept, double &aTimeOfFlight, double &aLoftAngle, double &aInterceptSpeed, double &aInterceptFlightPathAngle)
Definition WsfBallisticMissileLaunchComputer.cpp:2132
double mEndLocXYZ[3]
Definition WsfBallisticMissileLaunchComputer.hpp:351
double mBegLocXYZ[3]
Definition WsfBallisticMissileLaunchComputer.hpp:345
void FindLaunchWindowEnd(double &aTimeToLaunch, double &aTimeToIntercept, double &aTimeOfFlight, double &aLoftAngle, double &aInterceptSpeed, double &aInterceptFlightPathAngle)
Definition WsfBallisticMissileLaunchComputer.cpp:2326
double mBaseTime
Definition WsfBallisticMissileLaunchComputer.hpp:339
bool mCheckGeometry
Definition WsfBallisticMissileLaunchComputer.hpp:342
double mBegTime
Definition WsfBallisticMissileLaunchComputer.hpp:344
double mBegAltitude
Definition WsfBallisticMissileLaunchComputer.hpp:347
SA_Evaluator(double aBaseTime, WsfBallisticMissileLaunchComputer *aComputerPtr, WsfMover::KinematicModel *aTargetDataPtr)
Definition WsfBallisticMissileLaunchComputer.cpp:2091
const SA_Table & mSA_Table
Definition WsfBallisticMissileLaunchComputer.hpp:338
double mLaunchLocXYZ[3]
Definition WsfBallisticMissileLaunchComputer.hpp:340
const WsfMover::KinematicModel * mTargetDataPtr
Definition WsfBallisticMissileLaunchComputer.hpp:337
Definition WsfBallisticMissileLaunchComputer.hpp:48
double mFirstInterceptLocWCS[3]
Definition WsfBallisticMissileLaunchComputer.hpp:52
double mLastInterceptTime
Definition WsfBallisticMissileLaunchComputer.hpp:54
double mLastInterceptLocWCS[3]
Definition WsfBallisticMissileLaunchComputer.hpp:55
double mFirstInterceptTime
Definition WsfBallisticMissileLaunchComputer.hpp:51
double mFirstLaunchTime
Definition WsfBallisticMissileLaunchComputer.hpp:50
double mLastLaunchTime
Definition WsfBallisticMissileLaunchComputer.hpp:53
double mLoftAngle
Definition WsfBallisticMissileLaunchComputer.hpp:382
double mInterceptTime
Definition WsfBallisticMissileLaunchComputer.hpp:380
double mInterceptFlightPathAngle
Definition WsfBallisticMissileLaunchComputer.hpp:384
double mLaunchTime
Definition WsfBallisticMissileLaunchComputer.hpp:379
double mTimeOfFlight
Definition WsfBallisticMissileLaunchComputer.hpp:381
double mInterceptSpeed
Definition WsfBallisticMissileLaunchComputer.hpp:383
double mEndPointWCS[3]
Definition WsfBallisticMissileLaunchComputer.hpp:386
double mEndTime
Definition WsfBallisticMissileLaunchComputer.hpp:385
std::vector< SA_LaunchWindow > mLaunchWindows
Definition WsfBallisticMissileLaunchComputer.hpp:388
SA_Solution()
Definition WsfBallisticMissileLaunchComputer.hpp:366
The data used for surface-to-air launches.
Definition WsfBallisticMissileLaunchComputer.hpp:229
SA_Table(double aRangeInterval)
Definition WsfBallisticMissileLaunchComputer.cpp:1630
void ConvertRangeLine(TempRangeLine &aTempRangeLine, RangeLine &aRealRangeLine)
Definition WsfBallisticMissileLaunchComputer.cpp:1669
double mMinRange
Definition WsfBallisticMissileLaunchComputer.hpp:258
void ComputeRoundedLimits(double aInterval, double &aMinValue, double &aMaxValue, int &aPointCount)
Definition WsfBallisticMissileLaunchComputer.cpp:1647
int mRangePointCount
Definition WsfBallisticMissileLaunchComputer.hpp:266
std::vector< RangeEntry > mRangeTable
Definition WsfBallisticMissileLaunchComputer.hpp:271
double mMaxRange
Definition WsfBallisticMissileLaunchComputer.hpp:259
int IndexOfRange(double aRange) const
Definition WsfBallisticMissileLaunchComputer.hpp:238
double mMaxTimeOfFlight
Definition WsfBallisticMissileLaunchComputer.hpp:263
double mRangeInterval
Definition WsfBallisticMissileLaunchComputer.hpp:265
double mMaxAltitude
Definition WsfBallisticMissileLaunchComputer.hpp:261
double mMinTimeOfFlight
Definition WsfBallisticMissileLaunchComputer.hpp:262
double RangeOfIndex(size_t aRangeIndex) const
Definition WsfBallisticMissileLaunchComputer.hpp:252
double mMinAltitude
Definition WsfBallisticMissileLaunchComputer.hpp:260
bool mHasVelocityData
Definition WsfBallisticMissileLaunchComputer.hpp:268
bool mHasBurnoutData
Definition WsfBallisticMissileLaunchComputer.hpp:299
TblDepVar1< double > mSpeed
Definition WsfBallisticMissileLaunchComputer.hpp:290
TblDepVar1< double > mBurnTime
Definition WsfBallisticMissileLaunchComputer.hpp:288
TblDepVar1< double > mFlightPathAngle
Definition WsfBallisticMissileLaunchComputer.hpp:291
TblDepVar1< double > mBO_FlightPathAngle
Definition WsfBallisticMissileLaunchComputer.hpp:296
TblIndVarU< double > mRange
Definition WsfBallisticMissileLaunchComputer.hpp:284
TblDepVar1< double > mBO_Speed
Definition WsfBallisticMissileLaunchComputer.hpp:295
TblDepVar1< double > mBO_Range
Definition WsfBallisticMissileLaunchComputer.hpp:294
bool mHasVelocityData
Definition WsfBallisticMissileLaunchComputer.hpp:298
bool Read(const std::string &aFileName)
Definition WsfBallisticMissileLaunchComputer.cpp:1492
TblDepVar1< double > mLoftAngle
Definition WsfBallisticMissileLaunchComputer.hpp:287
TblDepVar1< double > mBO_TimeOfFlight
Definition WsfBallisticMissileLaunchComputer.hpp:293
TblDepVar1< double > mTimeOfFlight
Definition WsfBallisticMissileLaunchComputer.hpp:289
A temporary class for holding an intersection point.
Definition WsfBallisticMissileLaunchComputer.hpp:177
double mSpeed
Definition WsfBallisticMissileLaunchComputer.hpp:182
double mTimeOfFlight
Definition WsfBallisticMissileLaunchComputer.hpp:180
double mFlightPathAngle
Definition WsfBallisticMissileLaunchComputer.hpp:183
double mLoftAngle
Definition WsfBallisticMissileLaunchComputer.hpp:181
double mAltitude
Definition WsfBallisticMissileLaunchComputer.hpp:179
A temporary form of 'RangeEntry' used during creation of the final tables.
Definition WsfBallisticMissileLaunchComputer.hpp:191
TempRangeLine mIncreasingLine
Definition WsfBallisticMissileLaunchComputer.hpp:193
TempRangeLine mDecreasingLine
Definition WsfBallisticMissileLaunchComputer.hpp:194
Definition WsfBallisticMissileLaunchComputer.hpp:40
static std::string BaseTypeName()
The basic type name (needed by weapon_tools and launch computer processor).
Definition WsfBallisticMissileLaunchComputer.hpp:59
void ComputeEndPoint()
Definition WsfBallisticMissileLaunchComputer.hpp:82
WsfBallisticMissileLaunchComputer()
Constructor.
Definition WsfBallisticMissileLaunchComputer.cpp:179
void SetLauncherBearingOnly(double aValue)
Definition WsfBallisticMissileLaunchComputer.hpp:170
bool ComputeGroundIntercept(double aSimTime, double aLaunchDelayTime, const double aTargetLocWCS[3])
Definition WsfBallisticMissileLaunchComputer.cpp:1026
double GetTargetApogeeTime() const
Definition WsfBallisticMissileLaunchComputer.cpp:686
bool ComputeAirIntercept(double aSimTime, WsfPlatform *aTargetPtr, const WsfTrack *aTrackPtr, double aLaunchDelayTime)
Definition WsfBallisticMissileLaunchComputer.cpp:731
virtual double ComputeLateralTargetOffset(double aSimTime, const WsfTrack &aTrack)
Definition WsfBallisticMissileLaunchComputer.cpp:540
void WeaponFired(double aSimTime, const WsfWeaponEngagement *aEngagementPtr, const WsfTrack *aTrackPtr)
Simulation observer for a weapon firing.
Definition WsfBallisticMissileLaunchComputer.cpp:1469
std::map< size_t, WsfMover::KinematicModel * > TargetMap
Definition WsfBallisticMissileLaunchComputer.hpp:45
void ComputeLaunchWindows()
Definition WsfBallisticMissileLaunchComputer.hpp:89
void GetTargetApogeeLocationWCS(double aLocWCS[3]) const
Definition WsfBallisticMissileLaunchComputer.cpp:692
WsfBallisticMissileLaunchComputer & operator=(const WsfBallisticMissileLaunchComputer &)=delete
std::vector< TempPoint > TempRangeLine
A temporary form of 'RangeLine' used during creation of the final tables.
Definition WsfBallisticMissileLaunchComputer.hpp:187
double LastEvaluatedGroundRange() const
Definition WsfBallisticMissileLaunchComputer.hpp:151
unsigned int GetLaunchWindowCount() const
Definition WsfBallisticMissileLaunchComputer.hpp:90
void WeaponFireAborted(double aSimTime, WsfWeapon *aWeaponPtr, const WsfTrack *aTrackPtr, double aQuantity)
Definition WsfBallisticMissileLaunchComputer.cpp:1455
Provides the capability to draw shapes into the WSF replay file.
Definition WsfDraw.hpp:35
WsfEvent()=default
EventDisposition
Definition WsfEvent.hpp:37
virtual bool InitializeTTIData()
Definition WsfLaunchComputer.cpp:440
double mLauncherBearing
Definition WsfLaunchComputer.hpp:360
WsfLaunchComputer()
Definition WsfLaunchComputer.cpp:44
virtual double EstimatedTimeToIntercept(double aSimTime, const WsfTrack &aTrack, double aLaunchDelayTime)
Definition WsfLaunchComputer.cpp:749
WsfLaunchComputer * Clone() const override
Definition WsfLaunchComputer.cpp:518
bool ProcessInput(UtInput &aInput) override
Definition WsfLaunchComputer.cpp:171
virtual bool Initialize(double aSimTime, WsfWeapon *aWeaponPtr)
Definition WsfLaunchComputer.cpp:393
Definition WsfMover.hpp:286
Definition WsfMover.hpp:37
Platforms represent a entity within the simulation.
Definition WsfPlatform.hpp:115
WsfSimulationExtension()
Definition WsfSimulationExtension.cpp:23
An object that represents an 'track' (perception) of something.
Definition WsfTrack.hpp:120
Definition WsfWeaponEngagement.hpp:43
Definition WsfWeapon.hpp:63
Copyrights Multiple, All Rights Reserved