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