VR-Forces 5.0.3 Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
SGP4.h
Go to the documentation of this file.
1 #ifndef _h_
2 #define _h_
3 /* ----------------------------------------------------------------
4 *
5 * SGP4.h
6 *
7 * this file contains the sgp4 procedures for analytical propagation
8 * of a satellite. the code was originally released in the 1980 and 1986
9 * spacetrack papers. a detailed discussion of the theory and history
10 * may be found in the 2006 aiaa paper by vallado, crawford, hujsak,
11 * and kelso.
12 *
13 * current :
14 * 7 dec 15 david vallado
15 * fix jd, jdfrac
16 * changes :
17 * 3 nov 14 david vallado
18 * update to msvs2013 c++
19 * 30 Dec 11 david vallado
20 * consolidate updated code version
21 * 30 Aug 10 david vallado
22 * delete unused variables in initl
23 * replace pow inetger 2, 3 with multiplies for speed
24 * 3 Nov 08 david vallado
25 * put returns in for error codes
26 * 29 sep 08 david vallado
27 * fix atime for faster operation in dspace
28 * add operationmode for afspc (a) or improved (i)
29 * performance mode
30 * 20 apr 07 david vallado
31 * misc fixes for constants
32 * 11 aug 06 david vallado
33 * chg lyddane choice back to strn3, constants, misc doc
34 * 15 dec 05 david vallado
35 * misc fixes
36 * 26 jul 05 david vallado
37 * fixes for paper
38 * note that each fix is preceded by a
39 * comment with "sgp4fix" and an explanation of
40 * what was changed
41 * 10 aug 04 david vallado
42 * 2nd printing baseline working
43 * 14 may 01 david vallado
44 * 2nd edition baseline
45 * 80 norad
46 * original baseline
47 * ---------------------------------------------------------------- */
48 
49 #pragma once
50 
51 //using namespace System;
52 
53 #include <math.h>
54 #include <stdio.h>
55 #include <string.h>
56 #include <iostream>
57 #include "vrfutil/vrfutilDefines.h"
58 
59 
60 #define SGP4Version "SGP4 Version 2016-03-09"
61 
63 typedef enum
64 {
69 
70 typedef struct elsetrec
71 {
72  long int satnum;
74  int error;
76  char init, method;
77 
78  /* Near Earth */
79  int isimp;
80  double aycof , con41 , cc1 , cc4 , cc5 , d2 , d3 , d4 ,
81  delmo , eta , argpdot, omgcof , sinmao , t , t2cof, t3cof ,
83  nodecf;
84 
85  /* Deep Space */
86  int irez;
87  double d2201 , d2211 , d3210 , d3222 , d4410 , d4422 , d5220 , d5232 ,
88  d5421 , d5433 , dedt , del1 , del2 , del3 , didt , dmdt ,
89  dnodt , domdt , e3 , ee2 , peo , pgho , pho , pinco ,
90  plo , se2 , se3 , sgh2 , sgh3 , sgh4 , sh2 , sh3 ,
91  si2 , si3 , sl2 , sl3 , sl4 , gsto , xfact , xgh2 ,
92  xgh3 , xgh4 , xh2 , xh3 , xi2 , xi3 , xl2 , xl3 ,
93  xl4 , xlamo , zmol , zmos , atime , xli , xni;
94 
99  int ephtype;
100  long elnum , revnum;
102  double no_unkozai;
104  double am , em , im , Om , om , mm , nm;
107 
109  long dia_mm;
110  double period_sec;
111  unsigned char active;
112  unsigned char not_orbital;
113  double rcs_m2;
114 
115 } elsetrec;
116 
117 
118 namespace SGP4Funcs
119 {
120 
121  // public class SGP4Class
122  // {
123 
125  (
126  gravconsttype whichconst, char opsmode, const int satn, const double epoch,
127  const double xbstar, const double xndot, const double xnddot, const double xecco, const double xargpo,
128  const double xinclo, const double xmo, const double xno,
129  const double xnodeo, elsetrec& satrec
130  );
131 
132  DT_DLL_vrfutil bool sgp4
133  (
135  elsetrec& satrec, double tsince,
136  double r[3], double v[3]
137  );
138 
140  (
141  gravconsttype whichconst,
142  double& tumin,
143  double& mu,
144  double& radiusearthkm,
145  double& xke,
146  double& j2,
147  double& j3,
148  double& j4,
149  double& j3oj2
150  );
151 
154  (
155  char longstr1[130], char longstr2[130],
156  char typerun, char typeinput, char opsmode,
157  gravconsttype whichconst,
158  double& startmfe, double& stopmfe, double& deltamin,
159  elsetrec& satrec
160  );
161 
163  DT_DLL_vrfutil double gstime
164  (
165  double jdut1
166  );
167 
168  DT_DLL_vrfutil double sgn
169  (
170  double x
171  );
172 
173  DT_DLL_vrfutil double mag
174  (
175  double x[3]
176  );
177 
178  DT_DLL_vrfutil void cross
179  (
180  double vec1[3], double vec2[3], double outvec[3]
181  );
182 
183  DT_DLL_vrfutil double dot
184  (
185  double x[3], double y[3]
186  );
187 
188  DT_DLL_vrfutil double angle
189  (
190  double vec1[3],
191  double vec2[3]
192  );
193 
195  (
196  double ecc, double nu,
197  double& e0, double& m
198  );
199 
200  DT_DLL_vrfutil double asinh
201  (
202  double xval
203  );
204 
206  (
207  double r[3], double v[3], const double mu,
208  double& p, double& a, double& ecc, double& incl, double& omega, double& argp,
209  double& nu, double& m, double& arglat, double& truelon, double& lonper
210  );
211 
212  DT_DLL_vrfutil void jday
213  (
214  int year, int mon, int day, int hr, int minute, double sec,
215  double& jd, double& jdFrac
216  );
217 
219  (
220  int year, double days,
221  int& mon, int& day, int& hr, int& minute, double& sec
222  );
223 
225  (
226  double jd, double jdFrac,
227  int& year, int& mon, int& day,
228  int& hr, int& minute, double& sec
229  );
230 
231  DT_DLL_vrfutil void teme2ecef(double rteme[3], double vteme[3], double jdut1, double recef[3], double vecef[3]);
232 
233 }
234 
235 #endif
DT_DLL_vrfutil void twoline2rv(char longstr1[130], char longstr2[130], char typerun, char typeinput, char opsmode, gravconsttype whichconst, double &startmfe, double &stopmfe, double &deltamin, elsetrec &satrec)
older sgp4io methods
double aycof
Definition: SGP4.h:80
double no_unkozai
sgp4fix add unkozai&#39;d variable
Definition: SGP4.h:102
double Om
Definition: SGP4.h:104
double se2
Definition: SGP4.h:87
double j3
Definition: SGP4.h:106
DT_DLL_vrfutil void teme2ecef(double rteme[3], double vteme[3], double jdut1, double recef[3], double vecef[3])
double dnodt
Definition: SGP4.h:87
double se3
Definition: SGP4.h:87
double a
Definition: SGP4.h:95
double j2
Definition: SGP4.h:106
Definition: SGP4.h:70
double d4410
Definition: SGP4.h:87
double mdot
Definition: SGP4.h:80
double nddot
Definition: SGP4.h:95
double om
Definition: SGP4.h:104
double bstar
Definition: SGP4.h:95
char classification
sgp4fix add new variables from tle
Definition: SGP4.h:98
double cc5
Definition: SGP4.h:80
double jdsatepochF
Definition: SGP4.h:95
double mu
Definition: SGP4.h:106
DT_DLL_vrfutil double sgn(double x)
DT_DLL_vrfutil void jday(int year, int mon, int day, int hr, int minute, double sec, double &jd, double &jdFrac)
double period_sec
RSO dia in mm.
Definition: SGP4.h:110
double nodedot
Definition: SGP4.h:80
double xh2
Definition: SGP4.h:87
double d3210
Definition: SGP4.h:87
double argpo
Definition: SGP4.h:95
double epochdays
Definition: SGP4.h:95
double sh2
Definition: SGP4.h:87
double d2201
Definition: SGP4.h:87
double pho
Definition: SGP4.h:87
double xke
Definition: SGP4.h:106
double d5232
Definition: SGP4.h:87
double xgh3
Definition: SGP4.h:87
double mm
Definition: SGP4.h:104
double alta
Definition: SGP4.h:95
int epochyr
Definition: SGP4.h:73
double mo
Definition: SGP4.h:95
double zmos
Definition: SGP4.h:87
double sgh3
Definition: SGP4.h:87
double sgh2
Definition: SGP4.h:87
DT_DLL_vrfutil void getgravconst(gravconsttype whichconst, double &tumin, double &mu, double &radiusearthkm, double &xke, double &j2, double &j3, double &j4, double &j3oj2)
double pgho
Definition: SGP4.h:87
double pinco
Definition: SGP4.h:87
double xfact
Definition: SGP4.h:87
double d5433
Definition: SGP4.h:87
double sl4
Definition: SGP4.h:87
double no_kozai
Definition: SGP4.h:95
double omgcof
Definition: SGP4.h:80
DT_DLL_vrfutil bool sgp4(elsetrec &satrec, double tsince, double r[3], double v[3])
struct elsetrec elsetrec
double d2211
Definition: SGP4.h:87
long dia_mm
Additional elements to capture relevant TLE and object information:
Definition: SGP4.h:109
unsigned char not_orbital
&quot;Active S/C&quot; flag (0=n, 1=y)
Definition: SGP4.h:112
double t3cof
Definition: SGP4.h:80
double xh3
Definition: SGP4.h:87
double e3
Definition: SGP4.h:87
Definition: SGP4.h:67
double xlcof
Definition: SGP4.h:80
double atime
Definition: SGP4.h:87
double am
sgp4fix add singly averaged variables
Definition: SGP4.h:104
double x1mth2
Definition: SGP4.h:80
double t4cof
Definition: SGP4.h:80
DT_DLL_vrfutil void invjday(double jd, double jdFrac, int &year, int &mon, int &day, int &hr, int &minute, double &sec)
double sh3
Definition: SGP4.h:87
double d5421
Definition: SGP4.h:87
double d5220
Definition: SGP4.h:87
double xl2
Definition: SGP4.h:87
double dmdt
Definition: SGP4.h:87
double eta
Definition: SGP4.h:80
double xmcof
Definition: SGP4.h:80
double d3
Definition: SGP4.h:80
double tumin
sgp4fix add constant parameters to eliminate mutliple calls during execution
Definition: SGP4.h:106
char init
Definition: SGP4.h:76
double nm
Definition: SGP4.h:104
double d3222
Definition: SGP4.h:87
double sl2
Definition: SGP4.h:87
double xgh4
Definition: SGP4.h:87
DT_DLL_vrfutil double angle(double vec1[3], double vec2[3])
double sl3
Definition: SGP4.h:87
double didt
Definition: SGP4.h:87
double si3
Definition: SGP4.h:87
double altp
Definition: SGP4.h:95
double d2
Definition: SGP4.h:80
double radiusearthkm
Definition: SGP4.h:106
DT_DLL_vrfutil double gstime(double jdut1)
older sgp4ext methods
double xl3
Definition: SGP4.h:87
double plo
Definition: SGP4.h:87
double t2cof
Definition: SGP4.h:80
double peo
Definition: SGP4.h:87
char method
Definition: SGP4.h:76
DT_DLL_vrfutil void cross(double vec1[3], double vec2[3], double outvec[3])
double gsto
Definition: SGP4.h:87
double del1
Definition: SGP4.h:87
int error
Definition: SGP4.h:74
double nodecf
Definition: SGP4.h:80
double xl4
Definition: SGP4.h:87
double ndot
Definition: SGP4.h:95
double inclo
Definition: SGP4.h:95
double del2
Definition: SGP4.h:87
double jdsatepoch
Definition: SGP4.h:95
int isimp
Definition: SGP4.h:79
char operationmode
Definition: SGP4.h:75
double xi2
Definition: SGP4.h:87
double cc4
Definition: SGP4.h:80
gravconsttype
-----------------------— structure declarations -------------------------—
Definition: SGP4.h:63
double domdt
Definition: SGP4.h:87
DT_DLL_vrfutil double asinh(double xval)
double im
Definition: SGP4.h:104
double cc1
Definition: SGP4.h:80
unsigned char active
Period in seconds.
Definition: SGP4.h:111
DT_DLL_vrfutil void newtonnu(double ecc, double nu, double &e0, double &m)
DT_DLL_vrfutil void days2mdhms(int year, double days, int &mon, int &day, int &hr, int &minute, double &sec)
double xi3
Definition: SGP4.h:87
int ephtype
Definition: SGP4.h:99
double t
Definition: SGP4.h:80
double rcs_m2
&quot;Orbiting S/C&quot; flag (0=n, 1=y)
Definition: SGP4.h:113
long int satnum
Definition: SGP4.h:72
DT_DLL_vrfutil double mag(double x[3])
double argpdot
Definition: SGP4.h:80
double del3
Definition: SGP4.h:87
double em
Definition: SGP4.h:104
int epochtynumrev
Definition: SGP4.h:73
double j4
Definition: SGP4.h:106
double con41
Definition: SGP4.h:80
#define DT_DLL_vrfutil
This file is used to determine how to build Disable inconsistent dll linkage warning Visual Studio 6...
Definition: vrfutilDefines.h:34
double xlamo
Definition: SGP4.h:87
double zmol
Definition: SGP4.h:87
double xli
Definition: SGP4.h:87
double nodeo
Definition: SGP4.h:95
double xgh2
Definition: SGP4.h:87
long revnum
Definition: SGP4.h:100
long elnum
Definition: SGP4.h:100
double delmo
Definition: SGP4.h:80
double ee2
Definition: SGP4.h:87
double ecco
Definition: SGP4.h:95
double dedt
Definition: SGP4.h:87
char intldesg[11]
Definition: SGP4.h:98
int irez
Definition: SGP4.h:86
double si2
Definition: SGP4.h:87
Definition: SGP4.h:66
double x7thm1
Definition: SGP4.h:80
double sinmao
Definition: SGP4.h:80
double rcse
Definition: SGP4.h:95
double d4
Definition: SGP4.h:80
double j3oj2
Definition: SGP4.h:106
Definition: SGP4.h:65
double d4422
Definition: SGP4.h:87
DT_DLL_vrfutil bool sgp4init(gravconsttype whichconst, char opsmode, const int satn, const double epoch, const double xbstar, const double xndot, const double xnddot, const double xecco, const double xargpo, const double xinclo, const double xmo, const double xno, const double xnodeo, elsetrec &satrec)
DT_DLL_vrfutil void rv2coe(double r[3], double v[3], const double mu, double &p, double &a, double &ecc, double &incl, double &omega, double &argp, double &nu, double &m, double &arglat, double &truelon, double &lonper)
double t5cof
Definition: SGP4.h:80
double sgh4
Definition: SGP4.h:87
DT_DLL_vrfutil double dot(double x[3], double y[3])
double xni
Definition: SGP4.h:87

Document ID: Generated on Thu Jun 1 17:58:13 EDT 2023 from SVN revision 255404
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)