![]() |
Earth Observation Mission CFI Software DataHandling Software User Manual |
![]() |
00001 //-------------------------------------------------------- 00002 // Earth Observation Mission CFI Software. Version 4.17 00003 //-------------------------------------------------------- 00004 00005 //-------------------------------------------------------------------- 00006 // CVS Info: $Id: DataHandlingData.h,v 1.35 2014-03-25 07:51:58 cavm Exp $ 00007 //-------------------------------------------------------------------- 00008 00010 // This file contais generic data that can be used as input/output in 00011 // the classes of EXPCFI DataHandling library 00013 00014 #ifndef __EECFI_DATAHANDLINGDATA__ 00015 #define __EECFI_DATAHANDLINGDATA__ 00016 00017 //--INCLUDE----------------------------------------------------------- 00018 #include <string> 00019 #include <vector> 00020 00021 #include "AttRec.h" 00022 #include "DataHandlingDllExport.h" 00023 #define MaxStationVertices 999 00024 00025 //--NAMESPACES-------------------------------------------------------- 00026 using namespace std; 00027 00028 00029 namespace EECFI 00030 { 00031 //------------------------------------------------------ 00032 // CONSTANT DATA 00033 //------------------------------------------------------ 00034 00035 //------------------------------------------------------ 00036 // DATA ENUMERATION 00037 //------------------------------------------------------ 00038 00040 typedef enum 00041 { 00042 XDCFI_ATT_QUATERNIONS = 0, 00043 XDCFI_ATT_ANGLES 00044 } AttitudeDataTypeEnum; 00045 00047 typedef enum 00048 { 00049 XDCFI_LINE_GEOM = 0, 00050 XDCFI_POINT_GEOM, 00051 XDCFI_LIMB_GEOM, 00052 XDCFI_DISTANCE_GEOM 00053 } GeomTypeEnum; 00054 00056 typedef enum 00057 { 00058 XDCFI_NO_ASAR = 0, 00059 XDCFI_NARROW_ASAR, 00060 XDCFI_WIDE_ASAR 00061 } AsarTypeEnum; 00062 00064 typedef enum 00065 { 00066 XDCFI_NO_REF = 0, 00067 XDCFI_STD_REF, 00068 XDCFI_USER_REF, 00069 XDCFI_PRED_REF, 00070 XDCFI_STD_REF_N = 10, 00071 XDCFI_USER_REF_N = 20, 00072 XDCFI_PRED_REF_N = 30, 00073 XDCFI_US76_REF = 300, 00074 XDCFI_TROPIC_REF, 00075 XDCFI_MID_SUM_REF, 00076 XDCFI_MID_WIN_REF, 00077 XDCFI_SUBAR_SUM_REF, 00078 XDCFI_SUBAR_WIN_REF, 00079 XDCFI_LUT_REF = 400, 00080 XDCFI_US76_REF_N = 3000, 00081 XDCFI_TROPIC_REF_N, 00082 XDCFI_MID_SUM_REF_N, 00083 XDCFI_MID_WIN_REF_N, 00084 XDCFI_SUBAR_SUM_REF_N, 00085 XDCFI_SUBAR_WIN_REF_N, 00086 XDCFI_LUT_REF_N = 4000 00087 } TargetRayEnum; 00088 00090 typedef enum 00091 { 00092 XDCFI_OPEN_SWATH, 00093 XDCFI_CLOSED_SWATH 00094 } SwathTypecEnum; 00095 00097 typedef enum 00098 { 00099 XDCFI_GEODETIC_SWATH_TYPE, 00100 XDCFI_INERTIAL_SWATH_TYPE 00101 } SwathPointTypeEnum; 00102 00104 typedef enum 00105 { 00106 XDCFI_SWATH_POINTING_GEOM = 0, /* Algorithms of calculation of Swaths */ 00107 XDCFI_SWATH_DISTANCE_GEOM, 00108 XDCFI_SWATH_LIMB_GEOM, 00109 XDCFI_SWATH_INERTIAL_GEOM, 00110 XDCFI_SWATH_SUBSATELLITE_GEOM, 00111 XDCFI_SWATH_ASAR_GEOM, 00112 XDCFI_SWATH_ASAR_GEOM_RANGERATE_ALGO, 00113 XDCFI_SWATH_INCIDENCE_ANGLE_GEOM // AN-665 00114 } SwathGeomEnum; 00115 00117 typedef enum 00118 { 00119 XDCFI_NOT_DEFINED = -1, 00120 XDCFI_POINT = 0, 00121 XDCFI_CIRCLE = 1, 00122 XDCFI_SEGMENT = 2, 00123 XDCFI_POLYGON = 3 00124 } ZoneTypeEnum; 00125 00127 typedef enum 00128 { 00129 XDCFI_SAT_ORBITAL_REF = 0, 00130 XDCFI_SAT_NOMINAL_ATT, 00131 XDCFI_SAT_ATT, 00132 XDCFI_INSTR_ATT 00133 } AttitudeFrameEnum; 00134 00136 typedef enum 00137 { 00138 XDCFI_BAR_MEAN_2000 = 1, 00139 XDCFI_HEL_MEAN_2000, 00140 XDCFI_GEO_MEAN_2000, 00141 XDCFI_MEAN_DATE, 00142 XDCFI_TRUE_DATE, 00143 XDCFI_PSEUDO_EARTH_FIXED, 00144 XDCFI_EARTH_FIXED, 00145 XDCFI_BAR_MEAN_1950, 00146 XDCFI_GALACTIC, 00147 XDCFI_SAT_ACT_REF, 00148 XDCFI_QUASI_MEAN_DATE, 00149 XDCFI_PSE_TRUE_DATE, 00150 XDCFI_TOPOCENTRIC, 00151 XDCFI_SAT_REF, 00152 XDCFI_SAT_REL_REF 00153 } CoordinateSystemsEnum; // Updated for AN-509 00154 00156 typedef enum 00157 { 00158 XDCFI_3_ADJUST_NOMI = 1, 00159 XDCFI_4_ADJUST_DMAN, 00160 XDCFI_5_INTERP_DGAP, 00161 XDCFI_6_EXTRAP_LT1D, 00162 XDCFI_7_EXTRAP_1D2D, 00163 XDCFI_8_EXTRAP_GT2D, 00164 XDCFI_8_EXTRAP_AMAN, 00165 XDCFI_Q_INDEX_MAX_ENUM 00166 } QualityIndexEnum; 00167 00169 typedef enum 00170 { 00171 XDCFI_SCF_DRAW_SOLID, 00172 XDCFI_SCF_DRAW_DASHED, 00173 XDCFI_SCF_DRAW_DOTTED, 00174 XDCFI_SCF_DRAW_TIMELINE 00175 } SCFDrawModesEnum; 00176 00178 typedef enum 00179 { 00180 XDCFI_SCF_FILL_SOLID, 00181 XDCFI_SCF_FILL_HOLLOW 00182 } SCFFillModesEnum; 00183 00185 typedef enum 00186 { 00187 XDCFI_SEL_FILE = 0, 00188 XDCFI_SEL_TIME, 00189 XDCFI_SEL_ORBIT, 00190 XDCFI_SEL_DEFAULT, 00191 XDCFI_SEL_NONE 00192 } TimeInitModeEnum; 00193 00195 typedef enum 00196 { 00197 XDCFI_TIME_UNDEF = -1, 00198 XDCFI_TIME_TAI, 00199 XDCFI_TIME_UTC, 00200 XDCFI_TIME_UT1, 00201 XDCFI_TIME_GPS 00202 } TimeRefDataHandlingEnum; 00203 00205 typedef enum 00206 { 00207 XDCFI_EXTEND_NUM_OSV = 0, 00208 XDCFI_EXTEND_TIME 00209 } ExtendTypeEnum; 00210 00212 typedef enum 00213 { 00214 XDCFI_TIME_REF_OF_TAI = XDCFI_TIME_TAI, 00215 XDCFI_TIME_REF_OF_UTC = XDCFI_TIME_UTC, 00216 XDCFI_TIME_REF_OF_UT1 = XDCFI_TIME_UT1, 00217 XDCFI_TIME_REF_OF_GPS = XDCFI_TIME_GPS 00218 } TimeRefOfDataHandlingEnum; 00219 00221 typedef enum 00222 { 00223 XDCFI_READ_DB = 0, 00224 XDCFI_GNOMONIC = 1, 00225 XDCFI_RECTANGULAR = 2 00226 } ProjectionEnum; 00227 00229 typedef enum 00230 { 00231 XDCFI_ATT_NONE = 0, 00232 XDCFI_ATT_AOCS, 00233 XDCFI_ATT_PARAM, 00234 XDCFI_ATT_HARMONIC, 00235 XDCFI_ATT_FILE, 00236 XDCFI_ATT_ANGLE, 00237 XDCFI_ATT_MATRIX 00238 } AttModelEnum; 00239 00241 typedef enum 00242 { 00243 XDCFI_ORBIT_FILE, 00244 XDCFI_OSF_FILE, 00245 XDCFI_DORIS_FILE, 00246 XDCFI_IERS_BULLETIN_FILE, 00247 XDCFI_USER_OSV_LIST, 00248 XDCFI_SP3_FILE, // AN-550 00249 XDCFI_POF_FILE, 00250 XDCFI_ROF_FILE, 00251 XDCFI_SDF_FILE, 00252 XDCFI_STF_FILE, 00253 XDCFI_ATTITUDE_FILE, 00254 XDCFI_DEM_CONF_FILE, 00255 XDCFI_DEM_FILE, 00256 XDCFI_ZONE_FILE, 00257 XDCFI_STATION_FILE, 00258 XDCFI_STAR_FILE, 00259 XDCFI_ATT_STAR_TRACKER_CONF_FILE, 00260 XDCFI_ATT_STAR_TRACKER_FILE, 00261 XDCFI_TLE_FILE, 00262 XDCFI_ATTITUDE_DEFINITION_FILE, //AN-469 00263 XDCFI_OEM_FILE, //AN-578 00264 XDCFI_FOV_CONSTRAINTS_FILE //AN-628 00265 } FileEnum; // Updated for AN-527, to have it alligned with XD_data_file_type_enum 00266 00268 typedef enum 00269 { 00270 XDCFI_UNKNOWN_TYPE = -1, 00271 XDCFI_AUTO, 00272 XDCFI_ORBIT_CHANGE, 00273 XDCFI_STATE_VECTOR, 00274 XDCFI_OSF_TYPE, 00275 XDCFI_POF_TYPE, 00276 XDCFI_ROF_TYPE, 00277 XDCFI_DORIS_TYPE, 00278 XDCFI_POF_N_DORIS_TYPE, 00279 XDCFI_OEF_OSF_TYPE, 00280 XDCFI_OEF_POF_TYPE, 00281 XDCFI_IERS_B_TYPE, 00282 XDCFI_TLE_TYPE, 00283 XDCFI_STF_TYPE, 00284 XDCFI_DORISPREC_TYPE, 00285 XDCFI_DORISPREM_TYPE, 00286 XDCFI_ATT_TYPE, 00287 XDCFI_SCF_TYPE, 00288 XDCFI_PRECISE_PROPAG_TYPE, 00289 XDCFI_DEMCFG_TYPE, 00290 XDCFI_SATCFG_TYPE, 00291 XDCFI_GND_DB_TYPE, 00292 XDCFI_SW_DEF_TYPE, 00293 XDCFI_ZON_DB_TYPE, 00294 XDCFI_STR1ATT_TYPE, 00295 XDCFI_IERS_A_TYPE, 00296 XDCFI_IERS_B_AND_A_TYPE, 00297 XDCFI_ATT_DEF_TYPE, 00298 XDCFI_USER_OSV_LIST_TYPE, 00299 XDCFI_SP3_TYPE, /* AN-550 */ 00300 XDCFI_OSF_POF_MODE, // AN-527 00301 XDCFI_OSF_ROF_MODE, // AN-527 00302 XDCFI_OSF_DORIS_MODE, // AN-527 00303 XDCFI_OEM_TYPE, // AN-578 00304 XDCFI_OSF_OEM_MODE, // AN-578 00305 XDCFI_FILE_TYPE_MAX_VALUE 00306 } FileTypeEnum; 00307 00309 typedef enum 00310 { 00311 XDCFI_DEM_ACE_MODEL = 0, 00312 XDCFI_DEM_GETASSE30_V1, 00313 XDCFI_DEM_GETASSE30_V2, 00314 XDCFI_DEM_ACE2_9SEC, 00315 XDCFI_DEM_GETASSE30_V3, /*AN-503*/ 00316 XDCFI_DEM_GDEM_V2, /*AN-504*/ 00317 XDCFI_DEM_ACE2_30SEC, /*AN-615*/ 00318 XDCFI_DEM_ACE2_3SEC, // AN-619 00319 XDCFI_DEM_ACE2_5MIN, // AN-726 00320 XDCFI_DEM_GENERIC, // AN-740 00321 XDCFI_DEM_NUM_MODELS 00322 } DemModelEnum; 00323 00325 typedef enum 00326 { 00327 XDCFI_DEM_GETASSE30_SOURCE_ACE, /* land-ice/snow */ 00328 XDCFI_DEM_GETASSE30_SOURCE_MSS, /* sea */ 00329 XDCFI_DEM_GETASSE30_SOURCE_EGM96, /* sea-ice */ 00330 XDCFI_DEM_GETASSE30_SOURCE_SRTM30 /* land */ 00331 } DemGetasseDataSourceEnum; 00332 00334 typedef enum 00335 { 00336 XDCFI_DEM_ACE2_SOURCE_SRTM0, /* Pure SRTM (above 60�N pure GLOBE data, below 60S pure ACE [original] data) */ 00337 XDCFI_DEM_ACE2_SOURCE_SRTM1, /* SRTM voids filled by interpolation and/or altimeter data */ 00338 XDCFI_DEM_ACE2_SOURCE_SRTM2, /* SRTM data warped using the ERS-1 Geodetic Mission */ 00339 XDCFI_DEM_ACE2_SOURCE_SRTM3, /* SRTM data warped using EnviSat & ERS-2 data */ 00340 XDCFI_DEM_ACE2_SOURCE_SRTM_LAKE, /* Mean lake level data derived from Altimetry */ 00341 XDCFI_DEM_ACE2_SOURCE_SRTM_GLOBE, /* GLOBE/ACE data warped using combined altimetry (only above 60�N) */ 00342 XDCFI_DEM_ACE2_SOURCE_SRTM_ALT /* Pure altimetry data (derived from ERS-1 Geodetic Mission, 00343 ERS-2 and EnviSat data using Delaunay Triangulation and Bilinear interpolation) */ 00344 } DemAce2DataSourceEnum; 00345 00347 typedef enum 00348 { 00349 XDCFI_DEM_GDEM_SOURCE_NO_SOURCE_FILE = -1, 00350 XDCFI_DEM_GDEM_SOURCE_SRTM3_V3 = 0, 00351 XDCFI_DEM_GDEM_SOURCE_SRTM3_V2, 00352 XDCFI_DEM_GDEM_SOURCE_NED, 00353 XDCFI_DEM_GDEM_SOURCE_CDED, 00354 XDCFI_DEM_GDEM_SOURCE_ALASKA_DEM 00355 } DemGdemV2DataSourceEnum; 00356 00358 typedef enum 00359 { 00360 XDCFI_DEM_CELL_CENTER, 00361 XDCFI_DEM_CELL_NORTHWEST, 00362 XDCFI_DEM_CELL_NORTHEAST, 00363 XDCFI_DEM_CELL_SOUTHEAST, 00364 XDCFI_DEM_CELL_SOUTHWEST, 00365 } DemCellLocationEnum; // AN-778 00366 00368 typedef enum 00369 { 00370 XDCFI_DEM_DATA_TYPE_INT16 = 0, 00371 XDCFI_DEM_DATA_TYPE_INT32, 00372 XDCFI_DEM_DATA_TYPE_INT64, 00373 XDCFI_DEM_DATA_TYPE_UINT16, 00374 XDCFI_DEM_DATA_TYPE_UINT32, 00375 XDCFI_DEM_DATA_TYPE_UINT64, 00376 XDCFI_DEM_DATA_TYPE_FLOAT32, 00377 XDCFI_DEM_DATA_TYPE_FLOAT64, 00378 XDCFI_DEM_DATA_TYPE_INT8, 00379 } DemDataTypesEnum; // AN-740 00380 00382 typedef enum 00383 { 00384 XDCFI_DEM_DATA_UNIT_METER = 0, 00385 XDCFI_DEM_DATA_UNIT_KILOMETER 00386 } DemDataUnitsEnum; // AN-740 00387 00389 typedef enum 00390 { 00391 XDCFI_DEM_DATA_REFERENCE_WGS84 = 0, 00392 XDCFI_DEM_DATA_REFERENCE_EGM96 00393 } DemDataReferencesEnum; // AN-740 00394 00396 typedef enum 00397 { 00398 XDCFI_CFI_READ_ATT_INIT_PARSER_ERR = 0, 00399 XDCFI_CFI_READ_ATT_READ_PARAM_ERR, 00400 XDCFI_CFI_READ_ATT_WRONG_FILE_TYPE_ERR, 00401 XDCFI_CFI_READ_XML_ATT_NAVIGATION_ERR, 00402 XDCFI_CFI_READ_ATT_WRONG_DATA_TYPE_ERR, 00403 XDCFI_CFI_READ_ATT_INCONSISTENT_DATA_TYPE_ERR, 00404 XDCFI_CFI_READ_ATT_XML_DATA_BLOCK_SIZE_ERR, 00405 XDCFI_CFI_READ_ATT_WRONG_REF_FRAME_ERR, 00406 XDCFI_CFI_READ_ATT_READ_LIST_ERR, 00407 XDCFI_CFI_READ_ATT_TIME_CONV_ERR, 00408 XDCFI_CFI_READ_ATT_MEMORY_ERR, 00409 XDCFI_CFI_READ_ATT_CLEANUP_PARSER_ERR, 00410 XDCFI_CFI_READ_ATT_WRONG_TIME_REF_ERR, 00411 XDCFI_CFI_READ_ATT_WRONG_QUATERNION_ERR, 00412 XDCFI_CFI_READ_ATT_WRONG_ANGLE_ERR, 00413 XDCFI_CFI_READ_ATT_MAX_GAP_ERR, 00414 XDCFI_CFI_READ_ATT_OBSOLETE_TAG_WARN //AN-516 00415 } ReadAttErrEnum; 00416 00418 typedef enum 00419 { 00420 XDCFI_DEFAULT_VALUES = 0, 00421 XDCFI_USER_VALUES = 1 00422 } PrecisePropagUserFlagEnum; 00423 00425 typedef enum 00426 { 00427 XDCFI_NOT_SELECT = 0, 00428 XDCFI_SELECT = 1 00429 } PrecisePropagSelectionFlagEnum; 00430 00432 typedef enum 00433 { 00434 XDCFI_SGA_USE_PARAMETERS = 0, 00435 XDCFI_SGA_READ_VALUES_FROM_FILE = 1 00436 } PrecisePropagSgaFlagEnum; 00437 00439 typedef enum 00440 { 00441 XDCFI_SAT_DEFAULT = 0, 00442 XDCFI_SAT_DEFAULT1 = 1, 00443 XDCFI_SAT_DEFAULT2 = 2, 00444 XDCFI_SAT_DEFAULT3 = 3, 00445 XDCFI_SAT_DEFAULT4 = 4, 00446 XDCFI_SAT_DEFAULT5 = 5, 00447 XDCFI_SAT_DEFAULT6 = 6, 00448 XDCFI_SAT_DEFAULT7 = 7, 00449 XDCFI_SAT_DEFAULT8 = 8, 00450 XDCFI_SAT_DEFAULT9 = 9, 00451 XDCFI_SAT_ERS1 = 11, 00452 XDCFI_SAT_ERS2 = 12, 00453 XDCFI_SAT_ENVISAT = 21, 00454 XDCFI_SAT_METOP1 = 31, 00455 XDCFI_SAT_METOP2 = 32, 00456 XDCFI_SAT_METOP3 = 33, 00457 XDCFI_SAT_CRYOSAT = 41, 00458 XDCFI_SAT_ADM = 51, 00459 XDCFI_SAT_GOCE = 61, 00460 XDCFI_SAT_SMOS = 71, 00461 XDCFI_SAT_TERRASAR = 81, 00462 XDCFI_SAT_EARTHCARE = 91, 00463 XDCFI_SAT_SWARM_A = 101, 00464 XDCFI_SAT_SWARM_B = 102, 00465 XDCFI_SAT_SWARM_C = 103, 00466 XDCFI_SAT_SENTINEL_1A = 110, 00467 XDCFI_SAT_SENTINEL_1B = 111, 00468 XDCFI_SAT_SENTINEL_2 = 112, 00469 XDCFI_SAT_SENTINEL_3 = 113, 00470 XDCFI_SAT_SEOSAT = 120, 00471 XDCFI_SAT_SENTINEL_1C = 125, 00472 XDCFI_SAT_SENTINEL_2A = 126, 00473 XDCFI_SAT_SENTINEL_2B = 127, 00474 XDCFI_SAT_SENTINEL_2C = 128, 00475 XDCFI_SAT_SENTINEL_3A = 129, 00476 XDCFI_SAT_SENTINEL_3B = 130, 00477 XDCFI_SAT_SENTINEL_3C = 131, 00478 XDCFI_SAT_JASON_CSA = 132, // AN-531 00479 XDCFI_SAT_JASON_CSB = 133, // AN-531 00480 XDCFI_SAT_METOP_SG_A1 = 134, // AN-530 00481 XDCFI_SAT_METOP_SG_A2 = 135, // AN-530 00482 XDCFI_SAT_METOP_SG_A3 = 136, // AN-530 00483 XDCFI_SAT_METOP_SG_B1 = 137, // AN-530 00484 XDCFI_SAT_METOP_SG_B2 = 138, // AN-530 00485 XDCFI_SAT_METOP_SG_B3 = 139, // AN-530 00486 XDCFI_SAT_SENTINEL_5P = 140, // AN-502 00487 XDCFI_SAT_BIOMASS = 141, // AN-601 00488 XDCFI_SAT_SENTINEL_5 = 142, // AN-639 00489 XDCFI_SAT_SAOCOM_CS = 143, // AN-640 00490 XDCFI_SAT_FLEX = 144, /* AN-683 */ 00491 XDCFI_SAT_GENERIC = 200, 00492 XDCFI_SAT_GENERIC_GEO = 300, 00493 XDCFI_SAT_MTG = 301, 00494 XDCFI_SAT_GENERIC_MEO = 400 // AN-550 00495 } XDSatIdEnum; 00496 00498 typedef enum 00499 { 00500 XDCFI_BULLETIN_A = 0, 00501 XDCFI_BULLETIN_B 00502 } XDBulletinTypeEnum; 00503 00505 typedef enum 00506 { 00507 XDCFI_NO_CACHE = 0, 00508 XDCFI_PRELOAD_CACHE, 00509 XDCFI_FIFO_CACHE 00510 } DemCacheTypeEnum; // Added for AN-487 00511 00513 typedef enum 00514 { 00515 XDCFI_DEM_GEOID_COMPUTATION_DISABLED = 0, 00516 XDCFI_DEM_GEOID_COMPUTATION_ENABLED = 1 00517 } DemGeoidFlagEnum; // AN-466 00518 00520 typedef enum 00521 { 00522 XDCFI_ATT_NONE_MODEL = 0, 00523 XDCFI_ATT_AOCS_MODEL, 00524 XDCFI_ATT_PARAMETER_MODEL, 00525 XDCFI_ATT_HARMONIC_MODEL, 00526 XDCFI_ATT_FILE_MODEL, 00527 XDCFI_ATT_ANGLE_MODEL, 00528 XDCFI_ATT_MATRIX_MODEL, 00529 XDCFI_ATT_QUATERNION_ANGLE_MODEL, 00530 XDCFI_ATT_QUATERNION_MATRIX_MODEL 00531 } AttDefModelEnum; // AN-469 00532 00534 typedef enum 00535 { 00536 XDCFI_SAT_NOMINAL_ATT_DEF = 0, 00537 XDCFI_SAT_ATT_DEF, 00538 XDCFI_INSTR_ATT_DEF 00539 } XDAttDefFrameEnum; // AN-469 00540 00542 typedef enum 00543 { 00544 XDCFI_AOCS_GPM = 0, 00545 XDCFI_AOCS_LNP, 00546 XDCFI_AOCS_YSM, 00547 XDCFI_AOCS_ZDOPPLER 00548 } XDSatNominalAttAocsModeEnum; // AN-469 00549 00551 typedef enum 00552 { 00553 XDCFI_MODEL_GENERIC = 0, 00554 XDCFI_MODEL_ENVISAT, 00555 XDCFI_MODEL_CRYOSAT, 00556 XDCFI_MODEL_ADM, 00557 XDCFI_MODEL_SENTINEL1, 00558 XDCFI_MODEL_SENTINEL2, 00559 XDCFI_MODEL_GEO, 00560 XDCFI_MODEL_METOPSG /* AN-666 */ 00561 } XDSatNominalAttModelEnum; // AN-469 00562 00564 typedef enum 00565 { 00566 XDCFI_ANGLE_TYPE_TRUE_LAT_TOD = 0, 00567 XDCFI_ANGLE_TYPE_TRUE_LAT_EF /* AN-508 */ 00568 } XDAngleTypeEnum; // AN-469 00569 00571 typedef enum 00572 { 00573 XDCFI_FIT_TLE = 0, /*Used for POF, not valid for OSV LIST*/ 00574 XDCFI_FIT_TLE_LIST, 00575 XDCFI_ONE_TLE_PER_OSV 00576 } XDTLEFitmodeEnum; 00577 00579 typedef enum 00580 { 00581 XDCFI_SP3_POSITION_TYPE, 00582 XDCFI_SP3_POSITION_PLUS_VELOCITY_TYPE 00583 } XDCFISP3FileTypeEnum; // AN-550 00584 00586 typedef enum 00587 { 00588 XDCFI_SP3_GPS = 0, 00589 XDCFI_SP3_MIXED, 00590 XDCFI_SP3_GLONASS, 00591 XDCFI_SP3_LEO, 00592 XDCFI_SP3_GALILEO, 00593 XDCFI_SP3_COMPASS, 00594 XDCFI_SP3_QZSS 00595 } XDCFISP3FileDescriptorEnum; // AN-550 00596 00598 typedef enum 00599 { 00600 XDCFI_SP3_TIME_GPS = 0, 00601 XDCFI_SP3_TIME_GLONASS, 00602 XDCFI_SP3_TIME_GALILEO, 00603 XDCFI_SP3_TIME_TAI, 00604 XDCFI_SP3_TIME_UTC, 00605 XDCFI_SP3_TIME_QZSS 00606 } XDCFISP3TimeSystemEnum; 00607 00609 typedef enum 00610 { 00611 XDCFI_SAT_GPS = 0, 00612 XDCFI_SAT_GLONASS, 00613 XDCFI_SAT_LEO, 00614 XDCFI_SAT_GALILEO, 00615 XDCFI_SAT_COMPASS, 00616 XDCFI_SAT_QZSS 00617 } XDCFISATSP3SatDescriptorEnum; 00618 00620 typedef enum 00621 { 00622 XDCFI_DORIS_CRYOSAT_TYPE, 00623 XDCFI_DORIS_SENTINEL3_TYPE, 00624 XDCFI_DORIS_JASON_TYPE, // AN-701 00625 XDCFI_DORIS_UNKNOWN_TYPE // AN-701 00626 } XDDORISFileTypeEnum; //AN-524 00627 00629 typedef enum 00630 { 00631 XDCFI_FOV_CONSTRAINTS_SC_LINK, 00632 XDCFI_FOV_CONSTRAINTS_CELESTIAL_BODY_LINK, // AN-677 00633 XDCFI_FOV_CONTRAINTS_MAX 00634 } XD_Fov_constraints_enum; // AN-628 00635 00637 typedef enum 00638 { 00639 XDCFI_FALSE = 0, 00640 XDCFI_TRUE = 1 00641 } XDCFI_Boolean; // AN-628 00642 00643 00644 /*ANR-638*/ 00645 typedef enum 00646 { 00647 XDCFI_FFS_DEFAULT = 0, 00648 XDCFI_FFS_V1, 00649 XDCFI_FFS_V2, 00650 XDCFI_FFS_V3, 00651 XDCFI_FFS_MAX, 00652 XD_FFS_ERROR 00653 } XDCFI_EOFFS_version; 00654 static const char file_format_standard_version[sizeof(XDCFI_EOFFS_version)+2][250] = {"DEFAULT", "1.0", "2.0", "3.0", "MAX", "ERROR"}; 00655 00656 //------------------------------------------------------ 00657 // DATA STRUCTURES 00658 //------------------------------------------------------ 00659 00663 class XD_DECL AngleModel 00664 { 00665 public: 00666 00667 //Attributes 00668 double angles[3]; 00669 double offsets[3]; 00670 00672 AngleModel(){}; 00673 00675 AngleModel( double *angle, double *offset) 00676 { 00677 for ( int i = 0 ; i < 3 ; ++i) 00678 { 00679 angles[i] = angle[i]; 00680 offsets[i] = offset[i]; 00681 }// end for i 00682 } 00683 }; 00684 00688 class XD_DECL Asar 00689 { 00690 public: 00691 //Attributes 00692 long asarType; 00693 double slantRangeLeft; 00694 double slantRangeRight; 00695 00697 Asar(){}; 00698 00703 Asar( const long asarTyp, double slantLeft, double slantRight) 00704 { 00705 asarType = asarTyp; 00706 slantRangeLeft = slantLeft; 00707 slantRangeRight = slantRight; 00708 } 00709 };//class Asar 00710 00711 00715 class XD_DECL BulbTable 00716 { 00717 public: 00718 double day; 00719 double ut1Utc; 00720 double ut1Tai; 00721 00723 BulbTable(){}; 00724 00726 BulbTable(double dayUtc, double diffUt1Utc, double diffUt1Tai) 00727 { 00728 day = dayUtc; 00729 ut1Utc = diffUt1Utc; 00730 ut1Tai = diffUt1Tai; 00731 } 00732 00733 }; 00734 00738 class XD_DECL DemPoint 00739 { 00740 public: 00741 00742 //Attributes 00743 double lon; 00744 double lat; 00745 double alt; 00746 00748 DemPoint(){}; 00749 00751 DemPoint( double longitude, double latitude, double altitude) 00752 { 00753 lon = longitude; 00754 lat = latitude; 00755 alt = altitude; 00756 } 00757 }; 00758 00762 class XD_DECL DorisHeader 00763 { 00764 public: 00765 //Atributtes 00766 string fileName; 00767 string sensingStart; // UTC 00768 string sensingStop; // UTC 00769 long relOrbit; 00770 long absOrbit; 00771 double deltaUt1; 00772 string leapUtc; 00773 int leapSign; 00774 int leapErr; 00775 long numDsd; 00776 long dsOffset; 00777 long numDsr; 00778 00779 // extra data: the following values are not read from the file. 00780 // but it must be provided for the writing function 00781 //MPH 00782 string procStageCode; 00783 string refDoc; 00784 string procTime; 00785 string softwareVersion; 00786 string phase; 00787 long cycle; 00788 string stateVectorTime; 00789 double xPosition; 00790 double yPosition; 00791 double zPosition; 00792 double xVelocity; 00793 double yVelocity; 00794 double zVelocity; 00795 string stateVectorSource; 00796 string productErr; 00797 long totSize; 00798 long numDataSets; 00799 00800 //SPH 00801 string sphDescriptor; 00802 string sensingStartTai; // TAI 00803 long absOrbitStart; 00804 double relTimeAscNodeStart; 00805 string sensingStopTai; // TAI 00806 long absOrbitStop; 00807 double relTimeAscNodeStop; 00808 string equatorCrossTime; 00809 long equatorCrossLong; 00810 string ascendingFlag; 00811 long startLat; 00812 long startLong; 00813 long stopLat; 00814 long stopLong; 00815 long numIsps; 00816 long numMissingIsps; 00817 long numErrorIsps; 00818 long numDiscardedIsps; 00819 long numRsIsps; 00820 long numRsCorrections; 00821 long dsrSize; 00822 00824 DorisHeader(); 00825 00827 DorisHeader(string fileNam, 00828 string senStart, 00829 string sensStop, 00830 long relOrbi, 00831 long absOrbi, 00832 double delta_Ut1, 00833 string leap_Utc, 00834 int leap_Sign, 00835 int leap_Err, 00836 long num_Dsd, 00837 long ds_Offset, 00838 long num_Dsr); 00839 00841 DorisHeader(string fileNam, 00842 string sensStart, 00843 string sensStop, 00844 long relOrbi, 00845 long absOrbi, 00846 double delta_Ut1, 00847 string leap_Utc, 00848 int leap_Sign, 00849 int leap_Err, 00850 long num_Dsd, 00851 long ds_Offset, 00852 long num_Dsr, 00853 string procStageCod, 00854 string ref_Doc, 00855 string procTim, 00856 string softVersion, 00857 string phaseIn, 00858 long cycleIn, 00859 string stateVectorTim, 00860 double xPos, 00861 double yPos, 00862 double zPos, 00863 double xVel, 00864 double yVel, 00865 double zVel, 00866 string stateVectSource, 00867 string prodErr, 00868 long tot_Size, 00869 long numDataSet, 00870 string sphDesc, 00871 string sensStartTai, 00872 long absOrbStart, 00873 double relTimAscNodeStart, 00874 string sensStopTai, 00875 long absOrbStop, 00876 double relTimAscNodeStop, 00877 string equator_CrossTime, 00878 long equator_CrossLong, 00879 string ascendFlag, 00880 long start_Lat, 00881 long start_Long, 00882 long stop_Lat, 00883 long stop_Long, 00884 long num_Isps, 00885 long numMissIsps, 00886 long numErrIsps, 00887 long numDiscardIsps, 00888 long num_RsIsps, 00889 long num_RsCorrections, 00890 long dsr_Size 00891 ); 00892 00893 }; 00894 00898 class XD_DECL FileModel 00899 { 00900 public: 00901 00902 //Attributes 00903 vector<string> files; 00904 string auxFile; 00905 long timeRef; 00906 double time0; 00907 double time1; 00908 00910 FileModel(){}; 00911 00913 FileModel( vector<string> &fileNames, 00914 const string auxiliaryFile, 00915 const long timeReference, 00916 const double timeZero, 00917 const double timeOne ) 00918 { 00919 files = fileNames; 00920 auxFile = auxiliaryFile; 00921 timeRef = timeReference; 00922 time0 = timeZero; 00923 time1 = timeOne; 00924 } 00925 00926 }; 00927 00931 class XD_DECL HarmonicData 00932 { 00933 public: 00934 00935 //Attributes 00936 vector<long> harmonicTypePitch; 00937 vector<long> harmonicTypeRoll; 00938 vector<long> harmonicTypeYaw; 00939 vector<double> harmonicCoeffPitch; 00940 vector<double> harmonicCoeffRoll; 00941 vector<double> harmonicCoeffYaw; 00942 00944 HarmonicData(){}; 00945 00947 HarmonicData( vector<long> &harmonicTypPitch, 00948 vector<long> &harmonicTypRoll, 00949 vector<long> &harmonicTypYaw, 00950 vector<double> &harmonicCoefPitch, 00951 vector<double> &harmonicCoefRoll, 00952 vector<double> &harmonicCoefYaw ) 00953 { 00954 harmonicTypePitch = harmonicTypPitch; 00955 harmonicTypeRoll = harmonicTypRoll; 00956 harmonicTypeYaw = harmonicTypYaw; 00957 harmonicCoeffPitch = harmonicCoefPitch; 00958 harmonicCoeffRoll = harmonicCoefRoll; 00959 harmonicCoeffYaw = harmonicCoefYaw; 00960 } 00961 00962 }; 00963 00967 class XD_DECL HarmonicModel 00968 { 00969 public: 00970 00971 //Attributes 00972 long angleType; 00973 HarmonicData harmonicData; 00974 double offsets[3]; 00975 00977 HarmonicModel(){}; 00978 00980 HarmonicModel( const long angleTyp, HarmonicData &harmonicDat, double *offset) 00981 { 00982 angleType = angleTyp; 00983 harmonicData = harmonicDat; 00984 00985 for ( int i = 0 ; i < 3 ; ++i ) 00986 { 00987 offsets[i] = offset[i]; 00988 } 00989 } 00990 }; 00991 00995 class XD_DECL MatrixModel 00996 { 00997 public: 00998 00999 //Attributes 01000 double attMatrix[3][3]; 01001 double offsets[3]; 01002 01004 MatrixModel(){}; 01005 01007 MatrixModel( double **matrix, double *offset ) 01008 { 01009 for ( int i = 0 ; i < 3 ; ++i) 01010 { 01011 for ( int j = 0 ; j < 3 ; ++j ) 01012 { 01013 attMatrix[i][j] = matrix[i][j]; 01014 }// end for j 01015 offsets[i] = offset[i]; 01016 }// end for i 01017 } 01018 }; 01019 01023 class XD_DECL MlstHarmonics 01024 { 01025 public: 01026 01027 //Attributes 01028 double refTime; 01029 double period; 01030 double sinAmplitude; 01031 double cosAmplitude; 01032 01034 MlstHarmonics() 01035 { 01036 refTime = 0.; 01037 period = 1.; 01038 sinAmplitude = 0.; 01039 cosAmplitude = 0.; 01040 }; 01041 01043 MlstHarmonics(double time_in, double period_in, 01044 double sinAmp_in, double cosAmp_in) 01045 { 01046 refTime = time_in; 01047 period = period_in; 01048 sinAmplitude = sinAmp_in; 01049 cosAmplitude = cosAmp_in; 01050 } 01051 }; 01052 01056 class XD_DECL MlstNonlinearDrift 01057 { 01058 public: 01059 01060 //Attributes 01061 long linearApproxValidity; 01062 double quadraticTerm; 01063 vector<MlstHarmonics> mlstHarmonics; 01064 01066 MlstNonlinearDrift() 01067 { 01068 long i; 01069 01070 linearApproxValidity = 99999; 01071 quadraticTerm = 0.; 01072 for (i = 0 ; i < 2 ; i ++ ) 01073 { 01074 mlstHarmonics.push_back(MlstHarmonics()); 01075 } 01076 }; 01077 01079 MlstNonlinearDrift(long linApprox, double quadratic, const vector<MlstHarmonics> &harmonics) 01080 { 01081 linearApproxValidity = linApprox; 01082 quadraticTerm = quadratic; 01083 mlstHarmonics = harmonics; 01084 } 01085 }; 01086 01090 class XD_DECL ParamModel 01091 { 01092 public: 01093 01094 //Attributes 01095 long model; 01096 vector<double> modelParam; 01097 01099 ParamModel(){}; 01100 01102 ParamModel( const long mod, vector<double> &modParam) 01103 { 01104 model = mod; 01105 modelParam = modParam; 01106 } 01107 }; 01108 01112 class XD_DECL SwathGeometry 01113 { 01114 public: 01115 01116 //Attributes 01117 long geometryType; 01118 double azimuth; 01119 double elevation; 01120 double altitude; 01121 double distance; 01122 double angle; 01123 01125 SwathGeometry(){}; 01126 01128 SwathGeometry( long geomType, double azim, double elevat, 01129 double alt, double dist, double ang) 01130 { 01131 geometryType = geomType; 01132 azimuth = azim; 01133 elevation = elevat; 01134 altitude = alt; 01135 distance = dist; 01136 angle = ang; // AN-665 01137 } 01138 }; 01139 01143 class XD_DECL TrackerLimits 01144 { 01145 public: 01146 01147 //Attributes 01148 double maxPenalty; 01149 double normThr; 01150 double maxGap; 01151 01153 TrackerLimits(){}; 01154 01156 TrackerLimits( double maxPenal,double normThreshold, double maximumGap) 01157 { 01158 maxPenalty = maxPenal; 01159 normThr = normThreshold; 01160 maxGap = maximumGap; 01161 } 01162 }; 01163 01167 class XD_DECL StfPt 01168 { 01169 public: 01170 01171 //Attributes 01172 double lon; 01173 double lat; 01174 01176 StfPt(){}; 01177 01179 StfPt( double longitude, double latitude ) 01180 { 01181 lon = longitude; 01182 lat = latitude; 01183 } 01184 }; 01185 01189 class XD_DECL StfVhr 01190 { 01191 public: 01192 01193 //Attributes 01194 string stfName; 01195 string ReferenceOSF; 01196 string ReferenceSDF; 01197 long swathType; 01198 long swathPointType; 01199 01200 double timeStep; 01201 long refractionMode; 01202 double frequency; 01203 01204 long numPoints; 01205 vector<double> altitude; 01206 01207 bool geometryFlag; 01208 01209 long repCycle; 01210 long cycleLength; 01211 double mlstDrift; 01212 01213 long absOrbit; 01214 long orbitStart; 01215 long orbitStop; 01216 01217 double position[3]; 01218 double velocity[3]; 01219 01221 StfVhr(); 01222 01224 StfVhr( string stfNam, 01225 string refOSF, 01226 string refSDF, 01227 long swathTyp, 01228 long swathPointTyp, 01229 double timStep, 01230 long refrMode, 01231 double freq, 01232 long numP, 01233 const vector<double> &alt, 01234 bool geomFlag, 01235 long repCycl, 01236 long cyclLength, 01237 double meanlstDrift, 01238 long absOrb, 01239 long orbit0, 01240 long orbit1, 01241 double *pos, 01242 double *vel 01243 ); 01244 01246 StfVhr( const StfVhr &stfVhr ); 01247 01249 ~StfVhr(); 01250 01252 void operator=( const StfVhr &stfVhr ); 01253 01254 };//class StfVhr 01255 01259 class XD_DECL ZonePoint 01260 { 01261 public: 01262 01263 //Attributes 01264 double ptLong; 01265 double ptLat; 01266 01268 ZonePoint(){}; 01269 01271 ZonePoint( double ptLongitude, double ptLatitude) 01272 { 01273 ptLong = ptLongitude; 01274 ptLat = ptLatitude; 01275 } 01276 }; 01277 01281 class XD_DECL AttitudeModel 01282 { 01283 public: 01284 //Attributes 01285 long attitudeModel; 01286 long AOCS; 01287 ParamModel *paramModel; 01288 HarmonicModel *harmonicModel; 01289 FileModel *fileModel; 01290 AngleModel *angleModel; 01291 MatrixModel *matrixModel; 01292 01294 AttitudeModel(); 01295 01297 AttitudeModel( long attModel, 01298 long AOCSModel, 01299 ParamModel &parMod, 01300 HarmonicModel &harmMod, 01301 FileModel &fileMod, 01302 AngleModel &angleMod, 01303 MatrixModel &matrixMod 01304 ); 01305 01307 AttitudeModel( const AttitudeModel &attModel ); 01308 01310 ~AttitudeModel(); 01311 01313 void operator=( const AttitudeModel &attModel ); 01314 01315 protected: 01316 01317 private: 01319 void eraseAttitude(); 01320 }; 01321 01325 class XD_DECL PolarMotionParams 01326 { 01327 public: 01328 //Attributes 01329 double x; 01330 double y; 01331 01333 PolarMotionParams() 01334 { 01335 x = 0.; 01336 y = 0.; 01337 } 01338 01340 PolarMotionParams( double x1, double y1 ) 01341 { 01342 x = x1; 01343 y = y1; 01344 } 01345 01346 }; 01347 01351 class XD_DECL IersBulletinBrec 01352 { 01353 public: 01354 double day; 01355 double ut1Utc; 01356 double ut1Tai; 01357 PolarMotionParams polarMotionParams; 01358 01360 IersBulletinBrec() 01361 { 01362 day = 0.; 01363 ut1Utc = 0.; 01364 ut1Tai = 0.; 01365 } 01366 01368 IersBulletinBrec(double dayUtc, double diffUt1Utc, double diffUt1Tai, 01369 PolarMotionParams polarMotion) 01370 { 01371 day = dayUtc; 01372 ut1Utc = diffUt1Utc; 01373 ut1Tai = diffUt1Tai; 01374 polarMotionParams = polarMotion; 01375 } 01376 01377 }; 01378 01382 class XD_DECL IersBulletinArec 01383 { 01384 public: 01385 double day; 01386 double ut1Utc; 01387 double ut1Tai; 01388 PolarMotionParams polarMotionParams; 01389 01391 IersBulletinArec() 01392 { 01393 day = 0.; 01394 ut1Utc = 0.; 01395 ut1Tai = 0.; 01396 } 01397 01399 IersBulletinArec(double dayUtc, double diffUt1Utc, double diffUt1Tai, 01400 PolarMotionParams polarMotion) 01401 { 01402 day = dayUtc; 01403 ut1Utc = diffUt1Utc; 01404 ut1Tai = diffUt1Tai; 01405 polarMotionParams = polarMotion; 01406 } 01407 01408 }; 01409 01413 class XD_DECL PolarMotionFormula 01414 { 01415 public: 01416 01417 double ax; 01418 double bx; 01419 double cx; 01420 double dx; 01421 double ex; 01422 01423 double ay; 01424 double by; 01425 double cy; 01426 double dy; 01427 double ey; 01428 01429 double Aref; 01430 double Adiv; 01431 double Cref; 01432 double Cdiv; 01433 01435 PolarMotionFormula() 01436 { 01437 ax = 0.; 01438 bx = 0.; 01439 cx = 0.; 01440 dx = 0.; 01441 ex = 0.; 01442 01443 ay = 0.; 01444 by = 0.; 01445 cy = 0.; 01446 dy = 0.; 01447 ey = 0.; 01448 01449 Aref = 0.; 01450 Adiv = 0.; 01451 Cref = 0.; 01452 Cdiv = 0.; 01453 } 01454 01456 PolarMotionFormula(double a1, double b1, double c1, double d1, double e1, 01457 double a2, double b2, double c2, double d2, double e2, 01458 double Ar, double Ad, double Cr, double Cd) 01459 { 01460 ax = a1; 01461 bx = b1; 01462 cx = c1; 01463 dx = d1; 01464 ex = e1; 01465 01466 ay = a2; 01467 by = b2; 01468 cy = c2; 01469 dy = d2; 01470 ey = e2; 01471 01472 Aref = Ar; 01473 Adiv = Ad; 01474 Cref = Cr; 01475 Cdiv = Cd; 01476 } 01477 01478 }; 01479 01483 class XD_DECL TimeCorrelationFormula 01484 { 01485 public: 01486 01487 double a; 01488 double b; 01489 double bRef; 01490 01492 TimeCorrelationFormula() 01493 { 01494 a = 0.; 01495 b = 0.; 01496 bRef = 0.; 01497 } 01498 01500 TimeCorrelationFormula(double a1, double b1, double br) 01501 { 01502 a = a1; 01503 b = b1; 01504 bRef = br; 01505 } 01506 }; 01507 01511 class XD_DECL IersBulletinBFile 01512 { 01513 public: 01514 01515 string bulletinId; 01516 vector<IersBulletinBrec> finalTable; 01517 vector<IersBulletinBrec> preliminaryTable; 01518 01520 IersBulletinBFile() 01521 { 01522 bulletinId = ""; 01523 } 01524 01526 IersBulletinBFile(string bulId, 01527 vector<IersBulletinBrec> &vecFinal, 01528 vector<IersBulletinBrec> &vecPrel) 01529 { 01530 bulletinId = bulId; 01531 finalTable = vecFinal; 01532 preliminaryTable = vecPrel; 01533 } 01534 01535 };//class IersBulletinBFile 01536 01540 class XD_DECL IersBulletinAFile 01541 { 01542 public: 01543 01544 string bulletinId; 01545 vector<IersBulletinArec> predictionTable; 01546 PolarMotionFormula polarMotionFormula; 01547 TimeCorrelationFormula timeCorrelationFormula; 01548 01550 IersBulletinAFile() 01551 { 01552 bulletinId = ""; 01553 } 01554 01556 IersBulletinAFile(string bulId, 01557 vector<IersBulletinArec> &vecPred, 01558 PolarMotionFormula &polarFormula, 01559 TimeCorrelationFormula &timeFormula) 01560 { 01561 bulletinId = bulId; 01562 predictionTable = vecPred; 01563 polarMotionFormula = polarFormula; 01564 timeCorrelationFormula = timeFormula; 01565 } 01566 01567 };//class IersBulletinAFile 01568 01572 class XD_DECL DemMiniTiles 01573 { 01574 public: 01575 string fileName; 01576 double lonSize; 01577 double latSize; 01578 01580 DemMiniTiles() 01581 { 01582 fileName = ""; 01583 lonSize = 0.; 01584 latSize = 0.; 01585 } 01586 01588 DemMiniTiles(string fileN, double lon, double lat) 01589 { 01590 fileName = fileN; 01591 lonSize = lon; 01592 latSize = lat; 01593 } 01594 }; // AN-492 01595 01599 class XD_DECL QuaternionPlusAngle 01600 { 01601 public: 01602 01603 //Attributes 01604 string quatDefFile; 01605 01606 long inertialFrame; 01607 vector<AttRec> quat; 01608 AngleModel angleModel; 01609 01611 QuaternionPlusAngle(){}; 01612 01614 QuaternionPlusAngle( string file, AngleModel &angModel ) 01615 { 01616 quatDefFile = file; 01617 angleModel = angModel; 01618 } 01619 01621 ~QuaternionPlusAngle() 01622 { 01623 // Nothing to be done 01624 } 01625 }; // AN-469 01626 01627 // 01630 class XD_DECL QuaternionPlusMatrix 01631 { 01632 public: 01633 01634 //Attributes 01635 string quatDefFile; 01636 MatrixModel matrixModel; 01637 01639 QuaternionPlusMatrix(){}; 01640 01642 QuaternionPlusMatrix( string file, MatrixModel &matModel ) 01643 { 01644 quatDefFile = file; 01645 matrixModel = matModel; 01646 } 01647 01649 ~QuaternionPlusMatrix() 01650 { 01651 // Nothing to be done 01652 } 01653 }; // AN-469 01654 01658 class XD_DECL AttitudeDefinitionModel 01659 { 01660 public: 01661 //Attributes 01662 long attitudeModel; 01663 long AOCS; 01664 ParamModel *paramModel; 01665 HarmonicModel *harmonicModel; 01666 FileModel *fileModel; 01667 AngleModel *angleModel; 01668 MatrixModel *matrixModel; 01669 QuaternionPlusAngle *quaternionAngleModel; 01670 QuaternionPlusMatrix * quaternionMatrixModel; 01671 01673 AttitudeDefinitionModel(); 01674 01676 AttitudeDefinitionModel( long attModel, 01677 long AOCSModel, 01678 ParamModel &parMod, 01679 HarmonicModel &harmMod, 01680 FileModel &fileMod, 01681 AngleModel &angleMod, 01682 MatrixModel &matrixMod, 01683 QuaternionPlusAngle &quatAngMod, 01684 QuaternionPlusMatrix &quatMatMod 01685 ); 01686 01688 AttitudeDefinitionModel( const AttitudeDefinitionModel &attModel ); 01689 01691 ~AttitudeDefinitionModel(); 01692 01694 void operator=( const AttitudeDefinitionModel &attModel ); 01695 01696 protected: 01697 01698 private: 01700 void eraseAttitude(); 01701 }; // AN-469 01702 01703 01705 class XD_DECL AzElMask 01706 { 01707 public: 01708 long numMaskPt; 01709 long status; 01710 01711 01712 01713 01714 01715 01716 01717 01718 01719 01720 01721 01722 double azimuth[MaxStationVertices]; 01723 double elevation[MaxStationVertices]; 01724 }; 01725 01727 class XD_DECL LinkMask 01728 { 01729 public: 01730 AzElMask inclMask; 01731 AzElMask exclMask; 01732 }; 01733 01735 class XD_DECL LinkData 01736 { 01737 public: 01738 LinkMask maskData; 01739 double minTgHeight; 01740 }; 01741 01743 union XD_DECL FovConstraintsUnion 01744 { 01745 public: 01746 LinkData SCLinkData; 01747 LinkData CelestialBodyLinkData; 01748 }; 01749 01750 }//end EECFI 01751 01752 #endif