12#ifndef BRAWLERUTIL_HPP
13#define BRAWLERUTIL_HPP
15#include "UtEntity.hpp"
17#include "brawler_export.h"
19#include "UtFortMat3.hpp"
20#include "UtMatrix.hpp"
30double const grav = 32.17405;
31double const pi = 3.141592654;
33double const hafpi = 1.570796327;
34double const twopi = 6.283185308;
35double const root2 = 1.414213562;
36double const ftnmi = 0.000164578834;
37double const eps = 1.e-35;
38double const re = 20890377.0;
122BRAWLER_EXPORT
double amin1(
const double a,
const double b);
123BRAWLER_EXPORT
double amax1(
const double a,
const double b);
124BRAWLER_EXPORT
double amax1(
const double a,
const double b,
const double c);
130int sign(
const int a,
const int b);
131double sign(
const double a,
const double b);
135bool btest(
const int var,
const int pos);
136bool lbit(
const int word,
const int n);
140double arccos(
const double a);
141double arcsin(
const double a);
145double avnorm(
const UtVec3d& x);
163double border(
const double z,
const double z0);
169double cauchy(
const double z,
const double z0);
176double reward(
const double z,
const double z0);
184double dist(
const UtVec3d& a,
const UtVec3d& b);
199double egy(
double z,
double s);
212UtFortMat3d
makecs(
const UtVec3d& xVec,
const UtVec3d& zVec);
227UtFortMat3d
makcsi(
const UtVec3d& xVec,
const UtVec3d& zVec);
231UtFortMat3d
makex(
const UtVec3d& cxin);
234UtFortMat3d
makeh(
const UtVec3d& cxin);
249BRAWLER_EXPORT
double ramp(
const double xlo,
const double xval,
const double xhi);
257void vsplit(
const UtVec3d& v,
const UtVec3d& x, UtVec3d& vl, UtVec3d& vt);
265double xlimit(
const double xreq,
const double xmax,
const double xmin);
268UtFortMat3d
bodyax(
const UtFortMat3d& rwe,
273UtFortMat3d
mrotx(UtFortMat3d a,
double chi);
285BRAWLER_EXPORT
void nabort(
const std::string& str);
293BRAWLER_EXPORT
double param1(
int i,
double xx,
double* aray);
304BRAWLER_EXPORT
double tbl1(
double x,
double* z,
double* xval,
int nxval);
317double tbl1b(
double x,
double* z,
int nx,
double xmin,
double xmax);
335BRAWLER_EXPORT
double tbl2(
double x,
double y,
double* z,
double* xval,
int nxval,
double* yval,
int nyval);
349double tbl2e(
double x,
double y,
double* z,
double* xval,
int nxval,
double* yval,
int nyval);
368BRAWLER_EXPORT
void invtb2(
double*
tbl,
double z,
int nr,
int ir,
double pr,
bool revdir,
int nc,
int& ic,
double& pc);
381BRAWLER_EXPORT
void srch(
double* x,
int nx,
double xint,
int& ilow,
double& p);
390bool maxcnt(
int& count,
bool zprnt,
int mcount,
const std::string& subnam);
392double dsxdot(
double xdes,
double x,
double xdot,
double xdotmx,
double tau);
394UtVec3d
vorth(
const UtVec3d& a,
const UtVec3d& b);
396UtVec3d
rotz(
double phi,
const UtVec3d& vin);
399BRAWLER_EXPORT
bool AimPoint(
const UtVec3d& xa,
double sa,
const UtVec3d& xt,
const UtVec3d& vt,
double st, UtVec3d& aimp);
402BRAWLER_EXPORT
void intcpt(
const UtVec3d& xa,
414 const UtVec3d& x_tgt,
425BRAWLER_EXPORT
bool TryReadCommand(UtInput& aInput, std::string& aCommand);
426BRAWLER_EXPORT
void ReadValue(UtInput& aInput,
int& aValue);
427BRAWLER_EXPORT
void ReadValue(UtInput& aInput,
double& aValue);
#define xlo
Definition WsfNORAD_OrbitalPropagator.cpp:242
UtVec3d pos
Definition WsfScriptTrackClass.cpp:1881
UtVec3d vel
Definition WsfScriptTrackClass.cpp:1881
Definition BrawlerUtil.cpp:28
int sign(const int a, const int b)
Definition BrawlerUtil.cpp:45
MissionType
Definition BrawlerUtil.hpp:109
@ ROUTE
Definition BrawlerUtil.hpp:110
@ CAP
Definition BrawlerUtil.hpp:112
@ ESCORT
Definition BrawlerUtil.hpp:111
double const rad
Definition BrawlerUtil.hpp:32
double border(const double z, const double z0)
Definition BrawlerUtil.cpp:80
bool btest(const int var, const int pos)
Returns true if the bit at pos in var is set.
Definition BrawlerUtil.cpp:55
void ReadValue(UtInput &aInput, int &aValue)
Definition BrawlerUtil.cpp:1439
double tbl2e(double x, double y, double *z, double *xval, int nxval, double *yval, int nyval)
Definition BrawlerUtil.cpp:654
double LOSangleSigma(UtFortMat3d M, UtMatrixd R6, double R)
Definition BrawlerUtil.cpp:462
void nabort(const std::string &str)
Definition BrawlerUtil.cpp:495
MissileModeState
Definition BrawlerUtil.hpp:82
@ ILLUMINATE
2 = shot imminent/in progress, aim and fire (i.e. weapon in flight)
Definition BrawlerUtil.hpp:86
@ AIMFIRE
1 = interested in shot, get in evenlope (i.e. have a WEAPON_TASK)
Definition BrawlerUtil.hpp:85
@ NOTASK
Definition BrawlerUtil.hpp:83
@ INTERCEPT
0 = not interested in shot (default)
Definition BrawlerUtil.hpp:84
double const degrees2meters
Definition BrawlerUtil.hpp:40
double dsxdot(double xdes, double x, double xdot, double xdotmx, double tau)
Definition BrawlerUtil.cpp:1085
double const eps
Definition BrawlerUtil.hpp:37
double amin1(const double a, const double b)
Definition BrawlerUtil.cpp:30
UtVec3d vorth(const UtVec3d &a, const UtVec3d &b)
Definition BrawlerUtil.cpp:1103
double tbl2(double x, double y, double *z, double *xval, int nxval, double *yval, int nyval)
Definition BrawlerUtil.cpp:563
double tbl1b(double x, double *z, int nx, double xmin, double xmax)
Definition BrawlerUtil.cpp:539
WeaponType
Definition BrawlerUtil.hpp:48
@ kndmrm
Definition BrawlerUtil.hpp:51
@ knddew
Definition BrawlerUtil.hpp:55
@ kndgun
Definition BrawlerUtil.hpp:54
@ kndlrm
Definition BrawlerUtil.hpp:52
@ kndwpn
Definition BrawlerUtil.hpp:56
@ kndsrm
Definition BrawlerUtil.hpp:50
@ nowepn
Definition BrawlerUtil.hpp:49
@ kndmis
Definition BrawlerUtil.hpp:53
double tbl1(double x, double *z, double *xval, int nxval)
Definition BrawlerUtil.cpp:506
UtVec3d rotz(double phi, const UtVec3d &vin)
Definition BrawlerUtil.cpp:1112
bool TryReadCommand(UtInput &aInput, std::string &aCommand)
Definition BrawlerUtil.cpp:1389
double headeg(UtVec3d v)
Definition BrawlerUtil.cpp:217
UtFortMat3d makex(const UtVec3d &cxin)
Definition BrawlerUtil.cpp:191
double energy(const UtVec3d &pos, const UtVec3d &vel)
Definition BrawlerUtil.cpp:113
double arccos(const double a)
Definition BrawlerUtil.cpp:65
void vsplit(const UtVec3d &v, const UtVec3d &x, UtVec3d &vl, UtVec3d &vt)
Definition BrawlerUtil.cpp:241
bool AimPoint(const UtVec3d &xa, double sa, const UtVec3d &xt, const UtVec3d &vt, double st, UtVec3d &aimp)
Definition BrawlerUtil.cpp:1150
void invtb2(double *tbl, double z, int nr, int ir, double pr, bool revdir, int nc, int &ic, double &pc)
Definition BrawlerUtil.cpp:741
double param1(int i, double xx, double *aray)
Definition BrawlerUtil.cpp:501
double SpeedOfSound(double altitude)
From atmos.f calculating VS.
Definition BrawlerUtil.cpp:374
double const pi
Definition BrawlerUtil.hpp:31
UtFortMat3d mrotx(UtFortMat3d a, double chi)
Definition BrawlerUtil.cpp:300
double const root2
Definition BrawlerUtil.hpp:35
JobType
Definition BrawlerUtil.hpp:103
@ FLIGHT_LEAD
Definition BrawlerUtil.hpp:104
@ ELEMENT_LEAD
Definition BrawlerUtil.hpp:105
@ WINGMAN
Definition BrawlerUtil.hpp:106
double egy(double z, double s)
Definition BrawlerUtil.cpp:118
UtFortMat3d bodyax(const UtFortMat3d &rwe, double alpha)
Definition BrawlerUtil.cpp:267
UtFortMat3d NEDToECSRotation(UtEntity &ref)
Definition BrawlerUtil.cpp:283
ManeuverValueComponentType
Definition BrawlerUtil.hpp:59
@ i_vdew
Definition BrawlerUtil.hpp:78
@ i_vlospd
Definition BrawlerUtil.hpp:61
@ i_gaval
Definition BrawlerUtil.hpp:65
@ i_vmaim
Definition BrawlerUtil.hpp:70
@ i_vsamz
Definition BrawlerUtil.hpp:74
@ i_sepval
Definition BrawlerUtil.hpp:72
@ i_vform
Definition BrawlerUtil.hpp:62
@ i_terrval
Definition BrawlerUtil.hpp:77
@ i_villum
Definition BrawlerUtil.hpp:67
@ i_valevd
Definition BrawlerUtil.hpp:69
@ i_hddval
Definition BrawlerUtil.hpp:76
@ i_vescrt
Definition BrawlerUtil.hpp:73
@ i_vdisng
Definition BrawlerUtil.hpp:71
@ i_compr
Definition BrawlerUtil.hpp:63
@ i_vtpt
Definition BrawlerUtil.hpp:79
@ i_vmusup
Definition BrawlerUtil.hpp:68
@ i_vvec
Definition BrawlerUtil.hpp:66
@ i_valdfx
Definition BrawlerUtil.hpp:64
@ i_vavbdd
Definition BrawlerUtil.hpp:75
@ i_voffef
Definition BrawlerUtil.hpp:60
double xlimit(const double xreq, const double xmax, const double xmin)
Definition BrawlerUtil.cpp:253
double amax1(const double a, const double b)
Definition BrawlerUtil.cpp:35
double cauchy(const double z, const double z0)
Definition BrawlerUtil.cpp:96
double avnorm(const UtVec3d &x)
Definition BrawlerUtil.cpp:75
double arcsin(const double a)
Definition BrawlerUtil.cpp:70
double reward(const double z, const double z0)
Definition BrawlerUtil.cpp:102
WeaponSeekerType
Definition BrawlerUtil.hpp:89
@ acskr
Definition BrawlerUtil.hpp:93
@ irskr
Definition BrawlerUtil.hpp:91
@ mxskr
Definition BrawlerUtil.hpp:90
@ armskr
Definition BrawlerUtil.hpp:94
@ saskr
Definition BrawlerUtil.hpp:92
double const degrees2feet
Definition BrawlerUtil.hpp:41
bool lbit(const int word, const int n)
Definition BrawlerUtil.cpp:60
double const twopi
Definition BrawlerUtil.hpp:34
double const grav
Definition BrawlerUtil.hpp:30
double const ftnmi
Definition BrawlerUtil.hpp:36
void srch(double *x, int nx, double xint, int &ilow, double &p)
Definition BrawlerUtil.cpp:963
double const cFtSec2PerG
Definition BrawlerUtil.hpp:42
UtFortMat3d makecs(const UtVec3d &xVec, const UtVec3d &zVec)
Definition BrawlerUtil.cpp:123
bool maxcnt(int &count, bool zprnt, int mcount, const std::string &subnam)
Definition BrawlerUtil.cpp:1022
double const hafpi
Definition BrawlerUtil.hpp:33
UtFortMat3d makcsi(const UtVec3d &xVec, const UtVec3d &zVec)
Definition BrawlerUtil.cpp:157
void intcpt(const UtVec3d &xa, double sa, const UtVec3d &xt, const UtVec3d &vt, double closmn, double angint, double hdes, UtVec3d &desdir, double &sdes)
Definition BrawlerUtil.cpp:1257
double ramp(const double xlo, const double xval, const double xhi)
Definition BrawlerUtil.cpp:227
UtFortMat3d makeh(const UtVec3d &cxin)
Equiv to makex with cxin assumed zero.
Definition BrawlerUtil.cpp:198
double AtmosphereDensityRatio(double altitude)
From atmos.f calculating DR.
Definition BrawlerUtil.cpp:315
InherentBiasFaultTypes
Definition BrawlerUtil.hpp:97
@ i_nospd
Definition BrawlerUtil.hpp:100
@ i_nmusup
Definition BrawlerUtil.hpp:99
@ i_ovroff
Definition BrawlerUtil.hpp:98
double const re
Definition BrawlerUtil.hpp:38
double dist(const UtVec3d &a, const UtVec3d &b)
Definition BrawlerUtil.cpp:108
double const xlarge
Definition BrawlerUtil.hpp:39
void intcpt_inner(const UtVec3d &x_atkr, double sa, const UtVec3d &x_tgt, const UtVec3d &vt, double closmn, double angint, double hdes, double vs, const UtVec3d &xlos, double range, UtVec3d &desdir, double &sdes)
Definition BrawlerUtil.cpp:1306