1 #ifndef __SATLIB_H 2 #define __SATLIB_H 3 4 /* $Id: satlib.h,v 1.1 2000/09/25 17:21:25 ecdowney Exp $ */ 5 6 typedef struct _SatElem { 7 float se_XMO; 8 float se_XNODEO; 9 float se_OMEGAO; 10 float se_EO; 11 float se_XINCL; 12 float se_XNDD60; 13 float se_BSTAR; 14 float pad1; 15 double se_XNO; 16 double se_XNDT20; 17 double se_EPOCH; 18 struct { 19 unsigned int catno : 21; 20 unsigned int classif : 5; 21 unsigned int elnum : 10; 22 unsigned int year : 14; 23 unsigned int launch : 10; 24 unsigned int piece : 15; 25 unsigned int ephtype : 4; 26 unsigned int orbit : 17; 27 } se_id; 28 } SatElem; 29 30 #if 0 31 struct sat_loc { 32 double sl_X; 33 double sl_XDOT; 34 double sl_Y; 35 double sl_YDOT; 36 double sl_Z; 37 double sl_ZDOT; 38 }; 39 #endif 40 41 struct sgp4_data { 42 unsigned int sgp4_flags; 43 unsigned int pad; 44 double sgp4_AODP; 45 double sgp4_AYCOF; 46 double sgp4_C1; 47 double sgp4_C4; 48 double sgp4_C5; 49 double sgp4_COSIO; 50 double sgp4_D2; 51 double sgp4_D3; 52 double sgp4_D4; 53 double sgp4_DELMO; 54 double sgp4_ETA; 55 double sgp4_OMGCOF; 56 double sgp4_OMGDOT; 57 double sgp4_SINIO; 58 double sgp4_SINMO; 59 double sgp4_T2COF; 60 double sgp4_T3COF; 61 double sgp4_T4COF; 62 double sgp4_T5COF; 63 double sgp4_X1MTH2; 64 double sgp4_X3THM1; 65 double sgp4_X7THM1; 66 double sgp4_XLCOF; 67 double sgp4_XMCOF; 68 double sgp4_XMDOT; 69 double sgp4_XNODCF; 70 double sgp4_XNODOT; 71 double sgp4_XNODP; 72 }; 73 74 struct deep_data { 75 struct { 76 unsigned int IRESFL : 1; 77 unsigned int ISYNFL : 1; 78 } deep_flags; 79 double deep_s_SINIQ; 80 double deep_s_COSIQ; 81 double deep_s_OMGDT; 82 double deep_ATIME; 83 double deep_D2201; 84 double deep_D2211; 85 double deep_D3210; 86 double deep_D3222; 87 double deep_D4410; 88 double deep_D4422; 89 double deep_D5220; 90 double deep_D5232; 91 double deep_D5421; 92 double deep_D5433; 93 double deep_DEL1; 94 double deep_DEL2; 95 double deep_DEL3; 96 double deep_E3; 97 double deep_EE2; 98 double deep_FASX2; 99 double deep_FASX4; 100 double deep_FASX6; 101 double deep_OMEGAQ; 102 double deep_PE; 103 double deep_PINC; 104 double deep_PL; 105 double deep_SAVTSN; 106 double deep_SE2; 107 double deep_SE3; 108 double deep_SGH2; 109 double deep_SGH3; 110 double deep_SGH4; 111 double deep_SGHL; 112 double deep_SGHS; 113 double deep_SH2; 114 double deep_SH3; 115 double deep_SHS; 116 double deep_SHL; 117 double deep_SI2; 118 double deep_SI3; 119 double deep_SL2; 120 double deep_SL3; 121 double deep_SL4; 122 double deep_SSE; 123 double deep_SSG; 124 double deep_SSH; 125 double deep_SSI; 126 double deep_SSL; 127 double deep_STEP2; 128 double deep_STEPN; 129 double deep_STEPP; 130 double deep_THGR; 131 double deep_XFACT; 132 double deep_XGH2; 133 double deep_XGH3; 134 double deep_XGH4; 135 double deep_XH2; 136 double deep_XH3; 137 double deep_XI2; 138 double deep_XI3; 139 double deep_XL2; 140 double deep_XL3; 141 double deep_XL4; 142 double deep_XLAMO; 143 double deep_XLI; 144 double deep_XNI; 145 double deep_XNQ; 146 double deep_XQNCL; 147 double deep_ZMOL; 148 double deep_ZMOS; 149 }; 150 151 struct sdp4_data { 152 double sdp4_AODP; /* dpa */ 153 double sdp4_AYCOF; 154 double sdp4_BETAO; /* dpa */ 155 double sdp4_BETAO2; /* dpa */ 156 double sdp4_C1; 157 double sdp4_C4; 158 double sdp4_COSG; /* dpa */ 159 double sdp4_COSIO; /* dpa */ 160 double sdp4_EOSQ; /* dpa */ 161 double sdp4_OMGDOT; /* dpa */ 162 double sdp4_SING; /* dpa */ 163 double sdp4_SINIO; /* dpa */ 164 double sdp4_T2COF; 165 double sdp4_THETA2; /* dpa */ 166 double sdp4_X1MTH2; 167 double sdp4_X3THM1; 168 double sdp4_X7THM1; 169 double sdp4_XLCOF; 170 double sdp4_XMDOT; /* dpa */ 171 double sdp4_XNODCF; 172 double sdp4_XNODOT; /* dpa */ 173 double sdp4_XNODP; /* dpa */ 174 175 double sdp4_XMDF_seco; 176 double sdp4_OMGADF_seco; 177 double sdp4_XNODE_seco; 178 double sdp4_EM_seco; 179 double sdp4_XINC_seco; 180 double sdp4_XN_seco; 181 182 double sdp4_E_pero; 183 double sdp4_XINC_pero; 184 double sdp4_OMGADF_pero; 185 double sdp4_XNODE_pero; 186 double sdp4_XMAM_pero; 187 }; 188 189 typedef struct _SatData { 190 struct _SatElem *elem; 191 union { 192 struct sgp4_data *sgp4; 193 struct sdp4_data *sdp4; 194 } prop; 195 struct deep_data *deep; 196 } SatData; 197 198 void sgp4(SatData *sat, Vec3 *pos, Vec3 *dpos, double t); 199 200 void sdp4(SatData *sat, Vec3 *pos, Vec3 *dpos, double TSINCE); 201 202 #endif /* __SATLIB_H */ 203 204