WSF
BrawlerEvaluation.hpp
Go to the documentation of this file.
1// ****************************************************************************
2// CUI//REL TO USA ONLY
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// Updated by Infoscitex, a DCS Company
13// ****************************************************************************
14
15#ifndef BRAWLEREVALUATION_HPP
16#define BRAWLEREVALUATION_HPP
17
18#include "brawler_export.h"
19
20class BrawlerPlatform;
21#include "BrawlerUtil.hpp"
22class UtEntity;
23#include "UtRandom.hpp"
24#include "UtVec3.hpp"
25
26/******************************************************************************
27BrawlerEvaluation replicates the brawler alternative evaluation call tree:
28 EvaluateAlternative() //aeval3
29 InitializeRoutePointValues() //evrtei
30 CalcRoutepointValue() //evrte
31 CalcPrimaryValues() //eclin
32 Evaluate1v1() //e1v1
33 GunTracking() //gunpar
34 SelfEngagementMeasure() //sem2
35 GetBestWeapon() //getarm
36 NominalSelfEngagementMeasure()//sem2f
37 AngleAboveHorizon() //aohor
38 WeaponTimeSelfEngageMeasure() //wtsem
39 CalcVectoredFlightValue() //evvec
40 CalcMissileAimValue() //evmaim
41 InitMissileAiming() //ali38
42 WeaponAimingEnvelope() //envlvl_aim
43 CalcIlluminationValue() //evilum
44 CalcEvadeValue() //evevd
45 CalcLowSpeedRecoveryValue() //evlosp
46
47NOTE: TODO: add other maneuver value components (disengage, illuminate, etc)
48******************************************************************************/
49class BRAWLER_EXPORT BrawlerEvaluation
50{
51public:
52 // replicates aeval3() from aeval3.f
53 // Generate an alternative score for the passed in alternative projection state
54 static double EvaluateAlternative(BrawlerPlatform& me, UtEntity* tgt);
55
56 // replicates aohor() from aohor.f
57 static void
58 AngleAboveHorizon(const UtVec3d& xa, const UtVec3d& xt, double& ahor, double& adown, double& ovrhor, bool& masked);
59
60 // replaces: sem2[] computed in gsem2() - gsem2.f
61 static double SelfEngagementMeasure(BrawlerPlatform& me, UtEntity& aRef, UtEntity& aTgt);
62
63 // replicates evevd() from evevd.f
64 static void CalcEvadeValue(BrawlerPlatform& me, double& valevd);
65
66protected:
67 // replicates evrte() from evrte.f
68 static void CalcRoutepointValue(BrawlerPlatform& me, double& compr);
69
70 // replicates evrtei() from evrte.f
72
73 // replicates eclin() from eclin.f
74 static void CalcPrimaryValues(BrawlerPlatform& me, double& valofx, double& valdfs);
75
76 // replicates evvec() from evvec.f
77 static void CalcVectoredFlightValue(BrawlerPlatform& me, double& vvec);
78
79 // replicates evmaim() from evmaim.f
80 static void CalcMissileAimValue(BrawlerPlatform& me, UtEntity& aTgt, double& vmaim);
81
82
83 // replicates evilum() from evilum.f
84 static void CalcIlluminationValue(BrawlerPlatform& me, UtEntity& aTgt, double& villum);
85
86 // replicates evlosp() from evlosp.f
87 static void CalcLowSpeedRecoveryValue(BrawlerPlatform& me, double& vlospd);
88
89 // replicates evbddr() from evbddr.f
90 static void CalcBadAspectValue(BrawlerPlatform& me, double& vavbdd);
91
92 // replicates e1v1() from e1v1.f
93 static void Evaluate1v1(BrawlerPlatform& me, UtEntity& aTgt, double& valoff, double& valdef);
94
95 // replicates gunpar() from gunpar.f
96 static void GunTracking(const UtVec3d& xa,
97 const UtVec3d& va,
98 const UtVec3d& xt,
99 const UtVec3d& vt,
100 const UtVec3d& at,
101 double sbul,
102 bool& laimp,
103 UtVec3d& raimp,
104 UtVec3d& vaimp,
105 UtVec3d& waimp,
106 double& rngap,
107 double& senow);
108
109 // replaces getarm() from getarm.f
110 static void GetBestWeapon(BrawlerPlatform& me, UtEntity& aRef, BRAWLER::WeaponType& kndbst, bool& allasp, bool& lkdown);
111
112 // replicates sem2f() from sem2f.f
113 static double NominalSelfEngagementMeasure(double range,
114 double rdot,
115 double ofbore,
116 double aspect,
117 double egysem,
118 double spdtgt,
119 const UtVec3d& xa,
120 const UtVec3d& xt,
121 double rbord,
122 bool allasp,
123 bool lkdown);
124
125 // replicates wtsem() from wtsem.f
126 // weapon time evaluation - A MEASURE OF COMBAT ADVANTAGE SENSITIVE TO
127 // HAVING target IN A NOMINAL SHORT-RANGE MISSILE ENVELOPE AND THE ABILITY
128 // TO MAINTAIN HIM THERE
129 static double WeaponTimeSelfEngageMeasure(const UtVec3d& xa, const UtVec3d& va, const UtVec3d& xt, const UtVec3d& vt);
130
131 // replicates ali38() from alt38.f
132 static void InitMissileAiming(BrawlerPlatform& me,
133 UtEntity& aTgt,
134 const UtVec3d& wap,
135 double azap,
136 double elap,
137 double spdtmp,
138 double gimbal_lim);
139
140 // replicates envlvl_aim() from envlvl_aim.f
141 static double WeaponAimingEnvelope(BrawlerPlatform& me,
142 const UtVec3d& xlosa,
143 double rng,
144 double rdot,
145 double se,
146 double aof,
147 double rmin,
148 double rmax,
149 double semax,
150 double aoffmx,
151 bool trkbl,
152 double ovrhor,
153 double gimbal_lim,
154 int kind);
155
156private:
157 // SAVE variables from evrte.f
158 static double sclimp;
159 static double vcnom;
160 const static int captac[4];
161 const static int rtmnv[4];
162 const static int captn[4];
163
164 static double msnmlt;
165};
166
167#endif
Definition BrawlerEvaluation.hpp:50
static void Evaluate1v1(BrawlerPlatform &me, UtEntity &aTgt, double &valoff, double &valdef)
Definition BrawlerEvaluation.cpp:924
static void CalcVectoredFlightValue(BrawlerPlatform &me, double &vvec)
Definition BrawlerEvaluation.cpp:2300
static void CalcBadAspectValue(BrawlerPlatform &me, double &vavbdd)
Definition BrawlerEvaluation.cpp:3223
static double NominalSelfEngagementMeasure(double range, double rdot, double ofbore, double aspect, double egysem, double spdtgt, const UtVec3d &xa, const UtVec3d &xt, double rbord, bool allasp, bool lkdown)
Definition BrawlerEvaluation.cpp:1936
static double WeaponAimingEnvelope(BrawlerPlatform &me, const UtVec3d &xlosa, double rng, double rdot, double se, double aof, double rmin, double rmax, double semax, double aoffmx, bool trkbl, double ovrhor, double gimbal_lim, int kind)
Definition BrawlerEvaluation.cpp:3406
static void CalcIlluminationValue(BrawlerPlatform &me, UtEntity &aTgt, double &villum)
Definition BrawlerEvaluation.cpp:2814
static void CalcEvadeValue(BrawlerPlatform &me, double &valevd)
Definition BrawlerEvaluation.cpp:2973
static void InitializeRoutePointValues(BrawlerPlatform &me)
Definition BrawlerEvaluation.cpp:723
static double SelfEngagementMeasure(BrawlerPlatform &me, UtEntity &aRef, UtEntity &aTgt)
Definition BrawlerEvaluation.cpp:1730
static void CalcPrimaryValues(BrawlerPlatform &me, double &valofx, double &valdfs)
Definition BrawlerEvaluation.cpp:768
static void GunTracking(const UtVec3d &xa, const UtVec3d &va, const UtVec3d &xt, const UtVec3d &vt, const UtVec3d &at, double sbul, bool &laimp, UtVec3d &raimp, UtVec3d &vaimp, UtVec3d &waimp, double &rngap, double &senow)
Definition BrawlerEvaluation.cpp:1594
static void CalcRoutepointValue(BrawlerPlatform &me, double &compr)
Definition BrawlerEvaluation.cpp:652
static void GetBestWeapon(BrawlerPlatform &me, UtEntity &aRef, BRAWLER::WeaponType &kndbst, bool &allasp, bool &lkdown)
Definition BrawlerEvaluation.cpp:1854
static double EvaluateAlternative(BrawlerPlatform &me, UtEntity *tgt)
Definition BrawlerEvaluation.cpp:137
static void CalcLowSpeedRecoveryValue(BrawlerPlatform &me, double &vlospd)
Definition BrawlerEvaluation.cpp:3137
static void AngleAboveHorizon(const UtVec3d &xa, const UtVec3d &xt, double &ahor, double &adown, double &ovrhor, bool &masked)
Definition BrawlerEvaluation.cpp:2227
static void CalcMissileAimValue(BrawlerPlatform &me, UtEntity &aTgt, double &vmaim)
Definition BrawlerEvaluation.cpp:2421
static void InitMissileAiming(BrawlerPlatform &me, UtEntity &aTgt, const UtVec3d &wap, double azap, double elap, double spdtmp, double gimbal_lim)
Definition BrawlerEvaluation.cpp:3284
static double WeaponTimeSelfEngageMeasure(const UtVec3d &xa, const UtVec3d &va, const UtVec3d &xt, const UtVec3d &vt)
Definition BrawlerEvaluation.cpp:2085
Definition BrawlerPlatform.hpp:41
WeaponType
Definition BrawlerUtil.hpp:48
Copyrights Multiple, All Rights Reserved