Earth Observation Mission CFI Software Pointing Software User Manual |
00001 //-------------------------------------------------------- 00002 // Earth Observation Mission CFI Software. Version 4.6 00003 //-------------------------------------------------------- 00004 00005 //-------------------------------------------------------------------- 00006 // CVS Info: $Id: PointingData.h,v 1.29 2013-09-18 07:44:05 expcfi Exp $ 00007 //-------------------------------------------------------------------- 00008 00013 00014 #ifndef __EECFI_POINTINGDATA__ 00015 #define __EECFI_POINTINGDATA__ 00016 00017 //--INCLUDE----------------------------------------------------------- 00018 #include "DataHandlingData.h" 00019 #include "LibData.h" 00020 #include "StarTracker.h" 00021 #include "AttRec.h" 00022 #include "Coord.h" 00023 #include "StateVector.h" 00024 00025 //--NAMESPACES-------------------------------------------------------- 00026 using namespace std; 00027 00028 namespace EECFI 00029 { 00030 //------------------------------------------------------ 00031 // CONSTANT DATA 00032 //------------------------------------------------------ 00033 00034 //------------------------------------------------------ 00035 // DATA ENUMERATION 00036 // Enumeration values are defined in an equivalent way to the C library 00037 // except for the prefix that has been changed from XX_ to XXCFI_ 00038 //------------------------------------------------------ 00039 00041 typedef enum 00042 { 00043 XPCFI_AOCS_GPM = XDCFI_AOCS_GPM, 00044 XPCFI_AOCS_LNP = XDCFI_AOCS_LNP, 00045 XPCFI_AOCS_YSM = XDCFI_AOCS_YSM, 00046 XPCFI_AOCS_ZDOPPLER = XDCFI_AOCS_ZDOPPLER 00047 00048 } SatNominalAttAocsModeEnum; // AN-469 00049 00051 typedef enum 00052 { 00053 XPCFI_MODEL_GENERIC = XDCFI_MODEL_GENERIC, 00054 XPCFI_MODEL_ENVISAT = XDCFI_MODEL_ENVISAT, 00055 XPCFI_MODEL_CRYOSAT = XDCFI_MODEL_CRYOSAT, 00056 XPCFI_MODEL_ADM = XDCFI_MODEL_ADM, 00057 XPCFI_MODEL_SENTINEL1 = XDCFI_MODEL_SENTINEL1, 00058 XPCFI_MODEL_SENTINEL2 = XDCFI_MODEL_SENTINEL2, 00059 XPCFI_MODEL_GEO = XDCFI_MODEL_GEO 00060 } SatNominalAttModelEnum; // AN-469 00061 00063 typedef enum 00064 { 00065 XPCFI_ANGLE_TYPE_TRUE_LAT_TOD = XDCFI_ANGLE_TYPE_TRUE_LAT_TOD, 00066 XPCFI_ANGLE_TYPE_MEAN_LAT_TOD = XDCFI_ANGLE_TYPE_MEAN_LAT_TOD 00067 } XPAngleTypeEnum; // AN-469 00068 00070 typedef enum 00071 { 00072 XPCFI_SEL_FILE = 0, 00073 XPCFI_SEL_TIME, 00074 XPCFI_SEL_ORBIT, 00075 XPCFI_SEL_DEFAULT 00076 } PointingInitModeEnum; 00077 00079 typedef enum 00080 { 00081 XPCFI_SAT_NOMINAL_ATT_INIT_MODE = 0, 00082 XPCFI_SAT_NOMINAL_ATT_INIT_MODEL_MODE, 00083 XPCFI_SAT_NOMINAL_ATT_INIT_HARMONIC_MODE, 00084 XPCFI_SAT_NOMINAL_ATT_INIT_FILE_MODE 00085 00086 } SatNominalAttModeEnum; 00087 00089 typedef enum 00090 { 00091 XPCFI_SAT_ATT_ANGLE_INIT_MODE = 0, 00092 XPCFI_SAT_ATT_MATRIX_INIT_MODE, 00093 XPCFI_SAT_ATT_INIT_HARMONIC_MODE, 00094 XPCFI_SAT_ATT_INIT_FILE_MODE 00095 00096 } SatAttModeEnum; 00097 00099 typedef enum 00100 { 00101 XPCFI_INSTR_ATT_ANGLE_INIT_MODE = 0, 00102 XPCFI_INSTR_ATT_MATRIX_INIT_MODE, 00103 XPCFI_INSTR_ATT_INIT_HARMONIC_MODE, 00104 XPCFI_INSTR_ATT_INIT_FILE_MODE 00105 00106 } InstrAttModeEnum; 00107 00109 typedef enum 00110 { 00111 XPCFI_ATTITUDE_INIT_NO_DATA_MODE = 0, 00112 XPCFI_ATTITUDE_COMPUTE_MODE, 00113 XPCFI_ATTITUDE_USER_SET_MODE 00114 00115 } AttitudeModeEnum; 00116 00118 typedef enum 00119 { 00120 XPCFI_ATTITUDE_GENERIC_FILE_MODEL = 0, 00121 XPCFI_ATTITUDE_STAR_TRACKER_FILE_MODEL, 00122 XPCFI_ATTITUDE_QUATERNION_NO_FILE_MODEL 00123 00124 } AttitudeFileModelEnum; 00125 00127 typedef enum 00128 { 00129 XPCFI_BM2000 = 1, 00130 XPCFI_HM2000 , 00131 XPCFI_GM2000, 00132 XPCFI_MOD, 00133 XPCFI_TOD, 00134 XPCFI_PEF, 00135 XPCFI_EF, 00136 XPCFI_BM1950, 00137 XPCFI_GALACTIC 00138 } CsRlEnum; 00139 00141 typedef enum 00142 { 00143 XPCFI_NONE_ATTITUDE = -1, /* AN-468 */ 00144 XPCFI_SAT_ORBITAL_REF = 0, 00145 XPCFI_SAT_NOMINAL_ATT = 1, 00146 XPCFI_SAT_ATT = 2, 00147 XPCFI_INSTR_ATT = 3 00148 } AttFrEnum; 00149 00151 typedef enum 00152 { 00153 XPCFI_FRAME_FLAG_EXT = 0, 00154 XPCFI_FRAME_FLAG_SAT 00155 } FrameFlagEnum; 00156 00158 typedef enum 00159 { 00160 XPCFI_NO_INTER = 0, 00161 XPCFI_INTER_1ST, 00162 XPCFI_INTER_2ND 00163 } InterModeEnum; 00164 00166 typedef enum 00167 { 00168 XPCFI_SOURCE_STAR, 00169 XPCFI_SOURCE_SUN, 00170 XPCFI_SOURCE_MOON, 00171 XPCFI_SOURCE_GENERIC 00172 } SourceTypeEnum; 00173 00175 typedef enum 00176 { 00177 XPCFI_USER_TARGET_TYPE = 0, 00178 XPCFI_LOS_TARGET_TYPE, 00179 XPCFI_DEM_TARGET_TYPE 00180 } TargetTypeEnum; 00181 00183 typedef enum 00184 { 00185 XPCFI_X_AXIS = 0, 00186 XPCFI_NEG_X_AXIS, 00187 XPCFI_Y_AXIS, 00188 XPCFI_NEG_Y_AXIS, 00189 XPCFI_Z_AXIS, 00190 XPCFI_NEG_Z_AXIS 00191 } PointingAxisEnum; 00192 00194 typedef enum 00195 { 00196 XPCFI_SUN_VEC = 0, 00197 XPCFI_MOON_VEC, 00198 XPCFI_EARTH_VEC, 00199 XPCFI_NADIR_VEC, 00200 XPCFI_INERTIAL_VEL_VEC, 00201 XPCFI_EF_VEL_VEC, 00202 XPCFI_INERTIAL_TARGET_VEC, 00203 XPCFI_EF_TARGET_VEC, 00204 XPCFI_SC_EF_VEL_VEC, 00205 XPCFI_ORBIT_POLE, 00206 XPCFI_INERTIAL_POS_VEC_CORRECTED, 00207 XPCFI_INERTIAL_VEL_VEC_ROTATED, 00208 XPCFI_EF_NORTH, // AN-353 00209 XPCFI_EF_SOUTH // AN-353 00210 } AxisTargetEnum; 00211 00213 // Changed for AN-407 (Enumeration TargetPointingRayEnum was removed) 00214 typedef enum 00215 { 00216 XPCFI_NO_REF_INIT = XDCFI_NO_REF, 00217 XPCFI_STD_INIT = XDCFI_STD_REF, 00218 XPCFI_USER_INIT = XDCFI_USER_REF, 00219 XPCFI_PRED_INIT = XDCFI_PRED_REF, 00220 XPCFI_STD_INIT_N = XDCFI_STD_REF_N, 00221 XPCFI_USER_INIT_N = XDCFI_USER_REF_N, 00222 XPCFI_PRED_INIT_N = XDCFI_PRED_REF_N, 00223 XPCFI_US76_INIT = XDCFI_US76_REF, 00224 XPCFI_TROPIC_INIT = XDCFI_TROPIC_REF, 00225 XPCFI_MID_SUM_INIT = XDCFI_MID_SUM_REF, 00226 XPCFI_MID_WIN_INIT = XDCFI_MID_WIN_REF, 00227 XPCFI_SUBAR_SUM_INIT = XDCFI_SUBAR_SUM_REF, 00228 XPCFI_SUBAR_WIN_INIT = XDCFI_SUBAR_WIN_REF, 00229 XPCFI_LUT_INIT = XDCFI_LUT_REF, 00230 XPCFI_US76_INIT_N = XDCFI_US76_REF_N, 00231 XPCFI_TROPIC_INIT_N = XDCFI_TROPIC_REF_N, 00232 XPCFI_MID_SUM_INIT_N = XDCFI_MID_SUM_REF_N, 00233 XPCFI_MID_WIN_INIT_N = XDCFI_MID_WIN_REF_N, 00234 XPCFI_SUBAR_SUM_INIT_N = XDCFI_SUBAR_SUM_REF_N, 00235 XPCFI_SUBAR_WIN_INIT_N = XDCFI_SUBAR_WIN_REF_N, 00236 XPCFI_LUT_INIT_N = XDCFI_LUT_REF_N 00237 } AtmosModeEnum; 00238 00240 typedef enum 00241 { 00242 XPCFI_TARG_EXTRA_AUX_DIST_NAD_TARG_GT = 1, 00243 XPCFI_TARG_EXTRA_AUX_RAD_CUR = 2, 00244 XPCFI_TARG_EXTRA_AUX_DIST_NAD_TARG_GT_D = 4, 00245 XPCFI_TARG_EXTRA_AUX_DIST_NAD_TARG_GT_2D = 8, 00246 XPCFI_TARG_EXTRA_AUX_RAD_CUR_D = 16, 00247 XPCFI_TARG_EXTRA_AUX_RAD_CUR_2D = 32, 00248 XPCFI_TARG_EXTRA_AUX_TARGET_NADIR_VEL = 64, 00249 XPCFI_TARG_EXTRA_AUX_MLST = 128, 00250 XPCFI_TARG_EXTRA_AUX_TLST = 256, 00251 XPCFI_TARG_EXTRA_AUX_DIST_NAD_TARG_SAT_NAD = 512, 00252 XPCFI_TARG_EXTRA_AUX_DIST_NAD_TARG_SAT_NAD_D = 1024, 00253 XPCFI_TARG_EXTRA_AUX_DIST_NAD_TARG_SAT_NAD_2D = 2048, 00254 XPCFI_TARG_EXTRA_AUX_LOOK_DIR = 4096, 00255 XPCFI_TARG_EXTRA_AUX_DIST_SSP_MIN_DIST_GT = 8192, 00256 XPCFI_TARG_EXTRA_AUX_DIST_SSP_MIN_DIST_GT_D= 16384, 00257 XPCFI_TARG_EXTRA_AUX_DIST_SSP_MIN_DIST_GT_2D = 32768, 00258 XPCFI_TARG_EXTRA_AUX_ALL = XPCFI_TARG_EXTRA_AUX_DIST_NAD_TARG_GT + XPCFI_TARG_EXTRA_AUX_RAD_CUR + \ 00259 XPCFI_TARG_EXTRA_AUX_DIST_NAD_TARG_GT_D + XPCFI_TARG_EXTRA_AUX_DIST_NAD_TARG_GT_2D +\ 00260 XPCFI_TARG_EXTRA_AUX_RAD_CUR_D + XPCFI_TARG_EXTRA_AUX_RAD_CUR_2D + XPCFI_TARG_EXTRA_AUX_TARGET_NADIR_VEL + \ 00261 XPCFI_TARG_EXTRA_AUX_MLST + XPCFI_TARG_EXTRA_AUX_TLST + \ 00262 XPCFI_TARG_EXTRA_AUX_DIST_NAD_TARG_SAT_NAD + XPCFI_TARG_EXTRA_AUX_DIST_NAD_TARG_SAT_NAD_D + \ 00263 XPCFI_TARG_EXTRA_AUX_DIST_NAD_TARG_SAT_NAD_2D + XPCFI_TARG_EXTRA_AUX_LOOK_DIR +\ 00264 XPCFI_TARG_EXTRA_AUX_DIST_SSP_MIN_DIST_GT + XPCFI_TARG_EXTRA_AUX_DIST_SSP_MIN_DIST_GT_D + \ 00265 XPCFI_TARG_EXTRA_AUX_DIST_SSP_MIN_DIST_GT_2D 00266 00267 } TargetResAuxNameEnum; 00268 00270 typedef enum 00271 { 00272 XPCFI_TARG_EXTRA_MAIN_GEO = 1, 00273 XPCFI_TARG_EXTRA_MAIN_GEO_D = 2, 00274 XPCFI_TARG_EXTRA_MAIN_GEO_2D = 4, 00275 XPCFI_TARG_EXTRA_MAIN_TARG2SAT_TOP = 8, 00276 XPCFI_TARG_EXTRA_MAIN_TARG2SAT_TOP_D = 16, 00277 XPCFI_TARG_EXTRA_MAIN_TARG2SAT_TOP_2D = 32, 00278 XPCFI_TARG_EXTRA_MAIN_SAT2TARG_TOP = 64, 00279 XPCFI_TARG_EXTRA_MAIN_SAT2TARG_TOP_D = 128, 00280 XPCFI_TARG_EXTRA_MAIN_SAT2TARG_TOP_2D = 256, 00281 XPCFI_TARG_EXTRA_MAIN_SAT2TARG_ATTITUDE = 512, 00282 XPCFI_TARG_EXTRA_MAIN_SAT2TARG_ATTITUDE_D = 1024, 00283 XPCFI_TARG_EXTRA_MAIN_SAT2TARG_ATTITUDE_2D= 2048, 00284 XPCFI_TARG_EXTRA_MAIN_TARG2SAT_ATTITUDE = 4096, /* AN-353 */ 00285 XPCFI_TARG_EXTRA_MAIN_TARG2SAT_ATTITUDE_D = 8192, /* AN-353 */ 00286 XPCFI_TARG_EXTRA_MAIN_TARG2SAT_ATTITUDE_2D=16384, /* AN-353 */ 00287 XPCFI_TARG_EXTRA_MAIN_ALL = XPCFI_TARG_EXTRA_MAIN_GEO + XPCFI_TARG_EXTRA_MAIN_GEO_D + XPCFI_TARG_EXTRA_MAIN_GEO_2D +\ 00288 XPCFI_TARG_EXTRA_MAIN_TARG2SAT_TOP + XPCFI_TARG_EXTRA_MAIN_TARG2SAT_TOP_D + XPCFI_TARG_EXTRA_MAIN_TARG2SAT_TOP_2D + \ 00289 XPCFI_TARG_EXTRA_MAIN_SAT2TARG_TOP + XPCFI_TARG_EXTRA_MAIN_SAT2TARG_TOP_D + XPCFI_TARG_EXTRA_MAIN_SAT2TARG_TOP_2D + \ 00290 XPCFI_TARG_EXTRA_MAIN_SAT2TARG_ATTITUDE + XPCFI_TARG_EXTRA_MAIN_SAT2TARG_ATTITUDE_D + XPCFI_TARG_EXTRA_MAIN_SAT2TARG_ATTITUDE_2D + \ 00291 XPCFI_TARG_EXTRA_MAIN_TARG2SAT_ATTITUDE + XPCFI_TARG_EXTRA_MAIN_TARG2SAT_ATTITUDE_D + XPCFI_TARG_EXTRA_MAIN_TARG2SAT_ATTITUDE_2D 00292 00293 }TargetResMainNameEnum; /* CAREFUL: variables holding these values MUST be declared as long !!! */ 00294 00296 typedef enum 00297 { 00298 XPCFI_SAT_DEFAULT = XLCFI_SAT_DEFAULT, 00299 XPCFI_SAT_DEFAULT1 = XLCFI_SAT_DEFAULT1, 00300 XPCFI_SAT_DEFAULT2 = XLCFI_SAT_DEFAULT2, 00301 XPCFI_SAT_DEFAULT3 = XLCFI_SAT_DEFAULT3, 00302 XPCFI_SAT_DEFAULT4 = XLCFI_SAT_DEFAULT4, 00303 XPCFI_SAT_DEFAULT5 = XLCFI_SAT_DEFAULT5, 00304 XPCFI_SAT_DEFAULT6 = XLCFI_SAT_DEFAULT6, 00305 XPCFI_SAT_DEFAULT7 = XLCFI_SAT_DEFAULT7, 00306 XPCFI_SAT_DEFAULT8 = XLCFI_SAT_DEFAULT8, 00307 XPCFI_SAT_DEFAULT9 = XLCFI_SAT_DEFAULT9, 00308 XPCFI_SAT_ERS1 = XLCFI_SAT_ERS1, 00309 XPCFI_SAT_ERS2 = XLCFI_SAT_ERS2, 00310 XPCFI_SAT_ENVISAT = XLCFI_SAT_ENVISAT, 00311 XPCFI_SAT_METOP1 = XLCFI_SAT_METOP1, 00312 XPCFI_SAT_METOP2 = XLCFI_SAT_METOP2, 00313 XPCFI_SAT_METOP3 = XLCFI_SAT_METOP3, 00314 XPCFI_SAT_CRYOSAT = XLCFI_SAT_CRYOSAT, 00315 XPCFI_SAT_ADM = XLCFI_SAT_ADM, 00316 XPCFI_SAT_GOCE = XLCFI_SAT_GOCE, 00317 XPCFI_SAT_SMOS = XLCFI_SAT_SMOS, 00318 XPCFI_SAT_TERRASAR = XLCFI_SAT_TERRASAR, 00319 XPCFI_SAT_EARTHCARE = XLCFI_SAT_EARTHCARE, 00320 XPCFI_SAT_SWARM_A = XLCFI_SAT_SWARM_A, 00321 XPCFI_SAT_SWARM_B = XLCFI_SAT_SWARM_B, 00322 XPCFI_SAT_SWARM_C = XLCFI_SAT_SWARM_C, 00323 XPCFI_SAT_SENTINEL_1A = XLCFI_SAT_SENTINEL_1A, 00324 XPCFI_SAT_SENTINEL_1B = XLCFI_SAT_SENTINEL_1B, 00325 XPCFI_SAT_SENTINEL_2 = XLCFI_SAT_SENTINEL_2, 00326 XPCFI_SAT_SENTINEL_3 = XLCFI_SAT_SENTINEL_3, 00327 XPCFI_SAT_SEOSAT = XLCFI_SAT_SEOSAT, 00328 XPCFI_SAT_SENTINEL_1C = XLCFI_SAT_SENTINEL_1C, 00329 XPCFI_SAT_SENTINEL_2A = XLCFI_SAT_SENTINEL_2A, 00330 XPCFI_SAT_SENTINEL_2B = XLCFI_SAT_SENTINEL_2B, 00331 XPCFI_SAT_SENTINEL_2C = XLCFI_SAT_SENTINEL_2C, 00332 XPCFI_SAT_SENTINEL_3A = XLCFI_SAT_SENTINEL_3A, 00333 XPCFI_SAT_SENTINEL_3B = XLCFI_SAT_SENTINEL_3B, 00334 XPCFI_SAT_SENTINEL_3C = XLCFI_SAT_SENTINEL_3C, 00335 XPCFI_SAT_GENERIC = XLCFI_SAT_GENERIC, 00336 // AN-353 00337 XPCFI_SAT_GENERIC_GEO = XLCFI_SAT_GENERIC_GEO, 00338 XPCFI_SAT_MTG = XLCFI_SAT_MTG 00339 // END AN-353 00340 } SatIdPointingEnum; 00341 00343 typedef enum // Flag to indicate the grade of a derivative 00344 { 00345 XPCFI_NO_DER = XLCFI_NO_DER, 00346 XPCFI_DER_1ST = XLCFI_DER_1ST, 00347 XPCFI_DER_2ND = XLCFI_DER_2ND 00348 } DerivPointingEnum; 00349 00350 00352 typedef enum 00353 { 00354 XPCFI_TIME_UNDEF = XLCFI_TIME_UNDEF, 00355 XPCFI_TIME_TAI = XLCFI_TIME_TAI, 00356 XPCFI_TIME_UTC = XLCFI_TIME_UTC, 00357 XPCFI_TIME_UT1 = XLCFI_TIME_UT1, 00358 XPCFI_TIME_GPS = XLCFI_TIME_GPS 00359 } TimeRefPointingEnum; 00360 00362 typedef enum 00363 { 00364 XPCFI_MODE_FLAG_LOCATION = XLCFI_MODE_FLAG_LOCATION, 00365 XPCFI_MODE_FLAG_DIRECTION = XLCFI_MODE_FLAG_DIRECTION 00366 } ModeFlagPointingEnum; 00367 00369 typedef enum 00370 { 00371 XPCFI_DEM_ACE_MODEL = XDCFI_DEM_ACE_MODEL 00372 } DemModelPointingEnum; 00373 00375 typedef enum 00376 { 00377 XPCFI_LOAD_TILE_SET, 00378 XPCFI_CLEAR_CACHE, 00379 XPCFI_FREE_CACHE, 00380 XPCFI_SET_MAX_SIZE 00381 } DemConfigEnum; // AN-487 00382 00384 typedef enum 00385 { 00386 XPCFI_AZ_EL_LIST, 00387 XPCFI_AZ_EL_STRIP, 00388 XPCFI_AZ_EL_GRID 00389 } AzElTypeEnum; // AN-470 00390 00392 typedef enum 00393 { 00394 XPCFI_TARGET_LIST_INTER_ID 00395 } TargetListMethodEnum; // AN-471 00396 00398 typedef enum 00399 { 00400 XPCFI_ALL_DEM, 00401 XPCFI_DEM_SET 00402 } DemSetEnum; 00403 00405 typedef enum 00406 { 00407 XPCFI_AUTOMATIC_FLIP_MODE = 0, 00408 XPCFI_WINTER_MODE = 1, 00409 XPCFI_SUMMER_MODE = 2 00410 } YawFlipEnum; // AN-353 00411 00412 //------------------------------------------------------ 00413 // DATA STRUCTURES 00414 //------------------------------------------------------ 00415 00417 class AttDataRec 00418 { 00419 public: 00420 long timeRef; 00421 double time; 00422 double quaternion[4]; 00423 double angles[3]; 00424 00426 AttDataRec() 00427 { 00428 timeRef = 0; 00429 time = 0.; 00430 for ( int i = 0 ; i < 4 ; i++ ) 00431 { 00432 quaternion[i] = 0.; 00433 if ( i < 3 ) 00434 angles[i] = 0.; 00435 } 00436 } 00437 00439 AttDataRec( long timeReference, double timeIn, 00440 double *quaternions, double *angle ) 00441 { 00442 timeRef = timeReference; 00443 time = timeIn; 00444 00445 quaternion[0] = quaternions[0]; 00446 quaternion[1] = quaternions[1]; 00447 quaternion[2] = quaternions[2]; 00448 quaternion[3] = quaternions[3]; 00449 00450 angles[0] = angle[0]; 00451 angles[1] = angle[1]; 00452 angles[2] = angle[2]; 00453 } 00454 }; 00455 00457 class AttFileModel 00458 { 00459 public: 00460 long fileModel; 00461 double valTime0; 00462 double valTime1; 00463 long dataType; 00464 long inertialFrame; 00465 double maxGap; 00466 vector<AttDataRec> attData; 00467 }; 00468 00470 class StarTrackerAux 00471 { 00472 public: 00473 long starTrId; 00474 long aberrCorrection; 00475 double strAttRot[3][3]; 00476 }; 00477 00479 class SatAttFileModel 00480 { 00481 public: 00482 long fileModel; 00483 double valTime0; 00484 double valTime1; 00485 long dataType; 00486 long inertialFrame; 00487 double maxGap; 00488 vector<AttDataRec> attData; 00489 StarTrackerAux auxData; 00490 vector<StarTracker> tmData; 00491 }; 00492 00494 class QuatPlusMatrixModel 00495 { 00496 public: 00497 long inertialFrame; 00498 vector<AttRec> quat; 00499 double rotMatrix[3][3]; 00500 }; 00501 00503 class QuatPlusAnglesModel 00504 { 00505 public: 00506 long inertialFrame; 00507 vector<AttRec> quat; 00508 double angles[3]; 00509 }; 00510 00512 class AtmosIdData 00513 { 00514 public: 00515 double atmMaxAltStd; 00516 double atmMaxAltUser; 00517 }; 00518 00520 class AzElDefinition 00521 { 00522 public: 00523 long az0Axis; 00524 long az90Axis; 00525 long el90Axis; 00526 }; 00527 00529 class CsTra 00530 { 00531 public: 00532 bool azelFlag; 00533 AzElDefinition azelDef; 00534 CsRlEnum refi; 00535 AttFrEnum reff; 00536 bool ambFlag; 00537 DerivPointingEnum deriv; 00538 double v[3]; 00539 double vd[3]; 00540 double v2d[3]; 00541 double m[3][3]; 00542 double md[3][3]; 00543 double m2d[3][3]; 00544 }; 00545 00547 class AttitudeData 00548 { 00549 public: 00550 long model; 00551 StateVector satVector; 00552 long sourceFrame; 00553 long targetFrame; 00554 CsTra satMat; 00555 double offset[3]; 00556 CsTra attitudeEF; 00557 }; 00558 00560 class ParDer 00561 { 00562 public: 00563 DerivPointingEnum deriv; 00564 double p; 00565 double pd; 00566 double p2d; 00567 }; 00568 00570 class GenericTargetData 00571 { 00572 public: 00573 long timeRef; 00574 double time; 00575 Coord satVector; 00576 long iray; 00577 double freq; 00578 long deriv; 00579 }; 00580 00582 class TargetData 00583 { 00584 public: 00585 long targetNumber; // AN-470. 00586 Coord tarVector; 00587 ParDer zTan; 00588 ParDer range; 00589 ParDer time; 00590 Coord tarSatVector; 00591 Coord satTarVector; 00592 00593 TargetData const &operator=(TargetData const &tarDat) 00594 { 00595 return tarDat; 00596 } 00597 }; 00598 00600 class TargetIdData 00601 { 00602 public: 00603 GenericTargetData genericData; 00604 long earthCrossed; 00605 long atmCrossed; 00606 vector<TargetData> user; 00607 vector<TargetData> los; 00608 bool earthFlag; 00609 TargetData earth; 00610 Coord exitAtmVector; 00611 }; 00612 00614 class LatLonArea 00615 { 00616 public: 00617 double lonMin; 00618 double lonMax; 00619 double latMin; 00620 double latMax; 00621 }; // AN-487 00622 00624 class DemIdConfig 00625 { 00626 public: 00627 long command; 00628 long maxCacheSize; 00629 LatLonArea area; 00630 00631 }; // AN-487 00632 00634 class AzimuthElevation 00635 { 00636 public: 00637 double azimuth; 00638 double elevation; 00639 double azimuthRate; 00640 double elevationRate; 00641 }; // AN-470 00642 00644 class AzimuthElevationList 00645 { 00646 public: 00647 vector<AzimuthElevation> azElList; 00648 }; // AN-470 00649 00651 class AzimuthElevationStrip 00652 { 00653 public: 00654 double azimuth; 00655 double minElevation; 00656 double maxElevation; 00657 double stepElevation; 00658 }; // AN-470 00659 00661 class AzimuthElevationGrid 00662 { 00663 public: 00664 double minAzimuth; 00665 double maxAzimuth; 00666 double stepAzimuth; 00667 double minElevation; 00668 double maxElevation; 00669 double stepElevation; 00670 }; // AN-470 00671 00673 class InstrumentData 00674 { 00675 public: 00676 long type; 00677 AzimuthElevationList azimuthElevationList; 00678 AzimuthElevationStrip azimuthElevationStrip; 00679 AzimuthElevationGrid azimuthElevationGrid; 00680 double signalFrequency; 00681 }; // AN-470 00682 00684 class TargetOutput 00685 { 00686 public: 00687 long numUserTarget; 00688 vector<long> numLosTarget; 00689 }; // AN-470 00690 00692 class TargetListInputInfo 00693 { 00694 public: 00695 long inputType; 00696 double azimuth; 00697 double elevation; 00698 long azimuthIdx; 00699 long elevationIdx; 00700 }; // AN-471 00701 00703 class TargetInputInfo 00704 { 00705 public: 00706 long targetFunction; 00707 TargetListInputInfo targetListInputInfo; 00708 }; // AN-471 00709 00711 class TargetExtraResults 00712 { 00713 public: 00714 long status; 00715 TargetInputInfo targetInputInfo; 00716 vector<double> results; 00717 vector<double> resultsRate; 00718 vector<double> resultsRateRate; 00719 }; // AN-471 00720 00722 class TargetExtraResultsList 00723 { 00724 public: 00725 vector<TargetExtraResults> extraResults; 00726 }; // AN-471 00727 00729 class GenDemAltFromEllipsoidInputs 00730 { 00731 public: 00732 long setType; 00733 double lonMin; 00734 double lonMax; 00735 double latMin; 00736 double latMax; 00737 long verbose; 00738 }; // AN-466 00739 } // closing namespace 00740 00741 #endif