VR-Vantage 3.1 API Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
ssEnvironment.h
Go to the documentation of this file.
1 
3 // Copyright JRM Enterprises, Inc. 2004
4 // All rights reserved.
5 //
6 // This code is the intellectual property of JRM Enterprises, Inc.
7 // It may not be used or released as source or compiled binary form
8 // without the prior written consent of JRM Enterprises, Inc.
9 //
10 // Original Author: Eric Olson Date: May 2004
12 
13 #ifndef _ssEnvironment_
14 #define _ssEnvironment_
15 
16 #include "ssdllexport.h"
17 
18 #include "ssSensor.h"
19 #include "ssAtmosphericTable.h"
20 #include "SSModRadStruct.h"
21 
22 
23 class SigSimRT;
24 
26 // ssEnvironment
31 {
32 public:
33 
36  {
37  Tropical = 1,
38  MidLatitudeSummer = 2,
39  MidLatitudeWinter = 3,
40  SubArcticSummer = 4,
41  SubArcticWinter = 5,
42  USStandard = 6,
43  UserDefinedAtm = 7,
44  };
45 
48  {
49  NoAerosol = -1, // but might have clouds
50  NoHaze = 0, // no aerosol or clouds
51  Rural_23km = 1,
52  Rural_5km = 2,
53  NavyMaritime = 3,
54  Maritime_32km = 4,
55  Urban_5km = 5,
56  Tropospheric_50km = 6,
57  UserDefine = 7, // uses the atm state file for definition
58  Fog_200m = 8,
59  Fog_500m = 9,
60  Desert = 10,
61  };
62 
65  {
66  AutoSelect = 0, // use summer for models 0,1,2,4,6,7
67  Summer = 1,
68  Winter = 2,
69  };
70 
73  {
74  NoClouds = 0,
75  Cumulus = 1,
76  Altostratus = 2,
77  Stratus = 3,
78  Stratocumulus = 4,
79  Nimbostratus = 5,
80  Stratus_Drizzle = 6,
81  Nimbostratus_Light = 7,
82  Nimbostratus_Moderate = 8,
83  Cumulus_Heavy = 9,
84  Cumulus_Extreme = 10,
85  Standard_Cirrus = 18,
86  Subvisual_Cirrus = 19,
87  };
88 
90  typedef struct
91  {
92  int numSensors;
94  float* ranges;
96 
97 
99  // ssEnvironment
103  ssEnvironment();
104 
106  //ssEnvironment
110  ~ssEnvironment();
111 
112 
114  //setLUTSizeDefaults
115  //
116  void setLUTSizeDefaults();
117 
118 
120  //updateAtmospherics
135  bool updateAtmospherics(ssSensor* sensor, double sensorAltitude = 1.0, bool checkReload = true, bool setLUTSize = true);
136 
137 
139  // ssEnvironment::getLightSourceData
140  //
141  // description: gets the maxRadiance-scaled environmental pseudoradiances (irradiance/PI/maxRadiance) for a particular sensor
142  //
143  // parameter: sensor - the sensor
144  // Nx - Wavelengths
145  // Ny - Object Altitudes
146  // Nc - Components - fixed at 5 currently : {Ambient, Mie coef, Specular/Direct, Upwelling, Downwelling}
147  //
148  // Index as: (y * Nx + x) * Nc + c
149  //
150  // return: float pointer to source irradiance data
151  //
152  float *getLightSourceData(ssSensor *sensor, unsigned int &Nx, unsigned int &Ny, unsigned int &Nc);
153 
155  // getSensorAtmosphericTablePointer
163  ssAtmosphericTable* getSensorAtmosphericTablePointer(ssSensor* sensor);
164 
166  //*getSensorAtmosphericData
191  float* getSensorAtmosphericData(ssSensor* sensor,
192  unsigned int &Nx, unsigned int &Ny, unsigned int &Nz,
193  unsigned int &bins, unsigned int &comps);
194 
196  //getSunDiskRadiance
204  float* getSunDiskRadiance(ssSensor* sensor, unsigned int& bins);
205 
207  //getMoonDiskRadiance
215  float* getMoonDiskRadiance(ssSensor* sensor, unsigned int& bins);
216 
218  //getManMadeLightData
229  float* getManMadeLightData(ssSensor* sensor,
230  unsigned int& numLights, unsigned int& bins);
231 
233  //getManMadeLightData
240  MANMADE_LIGHTSOURCE_TABLE* getManMadeLightProperties(unsigned int& numLights);
241 
243  //getNumberManMadeLights
248  int getNumberManMadeLights();
249 
251  //getManMadeLightRadiance
259  double getManMadeLightRadiance(ssSensor* sensor, int lightNum);
260 
261 
263  //setDate
270  void setDate(unsigned int day, unsigned int month, unsigned int year);
271 
273  //getDate
280  void getDate(unsigned int& day, unsigned int& month, unsigned int& year);
281 
283  //setTimeOfDay
288  void setTimeOfDay(double tod);
289 
291  //getTimeOfDay
296  double getTimeOfDay();
297 
299  //getJRMTimeOfDay
304  JRMTIME getJRMTimeOfDay();
305 
307  //setJRMTimeOfDay
312  void setJRMTimeOfDay(JRMTIME time);
313 
315  //setSimulationTime
320  void setSimulationTime(double simTime);
321 
323  //getSimulationTime
328  double getSimulationTime(void);
329 
331  //getSensorAltitudeIndex
336  int getSensorAltitudeIndex(double alt);
337 
339  //setAtmosphereStateFile
344  void setAtmosphereStateFile(const char* name);
345 
347  //getAtmosphereStateFile
352  char* getAtmosphereStateFile();
353 
355  //getAtmosphericTableChanged
360  bool getAtmosphericTableChanged() const
361  {
362  return m_AtmTableChanged;
363  }
364 
366  //setAtmosphericTableChanged
371  void setAtmosphericTableChanged(bool state)
372  {
373  m_AtmTableChanged = state;
374  }
375 
377  //setNightSkyTableFile
383  void setNightSkyTableFile(char* name);
384 
386  //getNightSkyTableFile
392  char* getNightSkyTableFile();
393 
395  //setBathymetryTableFile
401  void setBathymetryTableFile(char* name);
402 
404  //getBathymetryTableFile
410  char* getBathymetryTableFile();
411 
413  //setMMLSTableFile
419  void setMMLSTableFile(char* name);
420 
422  //getMMLSTableFile
428  char* getMMLSTableFile();
429 
431  //setAirGroundTempCalcMode
438  void setAirGroundTempCalcMode(bool Calc_Ta_Tback);
439 
441  //getAirGroundTempCalcMode
448  bool getAirGroundTempCalcMode();
449 
451  //setMaxDiurnalTemperature
456  void setMaxDiurnalTemperature(double tempMax);
457 
459  //setMinDiurnalTemperature
464  void setMinDiurnalTemperature(double tempMin);
465 
467  //getMaxDiurnalTemperature
472  double getMaxDiurnalTemperature();
473 
475  //getMinDiurnalTemperature
480  double getMinDiurnalTemperature();
481 
483  //setCurrentAirTemperature
488  void setCurrentAirTemperature(double Ta);
489 
491  //getCurrentAirTemperature
496  double getCurrentAirTemperature();
497 
499  //setAirModelOption
510  void setAirModelOption(int air_model_option);
511 
513  //setUserDefinedAirTemperatures
529  int setUserDefinedAirTemperatures(int numberIntervals, double* airTemperature);
530 
532  //setUserDefinedAirTemperatures
546  int setUserDefinedAirTemperatures(int numberIntervals, double* airTemperature, double* timeOfDays);
547 
549  // isUserDefinedAirTemperature
554  bool isUserDefinedAirTemperature();
555 
557  // disableUserDefinedAirTemperature
561  void disableUserDefinedAirTemperature();
562 
564  //setModtranAtmModel
569  void setModtranAtmModel(const ModtranAtmModel model);
570 
572  //getModtranAtmModel
577  ModtranAtmModel getModtranAtmModel();
578 
580  //setModtranHazeModel
585  void setModtranHazeModel(const ModtranHazeModel haze);
586 
588  //getModtranHazeModel
593  ModtranHazeModel getModtranHazeModel();
594 
596  //setModtranAirMassCharacter
601  void setModtranAirMassCharacter(int coastalinfluence);
602 
604  //getModtranAirMassCharacter
609  int getModtranAirMassCharacter();
610 
612  //setModtranSeason
617  void setModtranSeason(const ModtranSeason season);
618 
620  //getModtranSeason
625  ModtranSeason getModtranSeason();
626 
628  //setModtranVisibility
633  void setModtranVisibility(double vis);
634 
636  //getModtranVisibility
641  double getModtranVisibility();
642 
644  //setWindVelocity
649  void setWindVelocity(double windVelocity);
650 
652  //getWindVelocity
657  double getWindVelocity();
658 
660  //setWindDirection
665  void setWindDirection(double EofN);
666 
668  //getWindDirection
673  double getWindDirection();
674 
676  //setRelativeHumidity
681  void setRelativeHumidity(double relative_humidity);
682 
684  //getRelativeHumidity
689  double getRelativeHumidity();
690 
692  //setGroundTemperature
697  void setGroundTemperature(double Tbackground);
698 
700  //getGroundTemperature
705  double getGroundTemperature();
706 
708  //setAtmosphericPressure
713  void setAtmosphericPressure(double Pressure);
714 
716  //getAtmosphericPressure
721  double getAtmosphericPressure();
722 
724  //setModtranClouds
729  void setModtranClouds(const ModtranClouds clouds);
730 
732  //setCloudParameters
746  void setCloudParameters(int numCloudLayers, float thickness, float baseAltitude, float extinctionScale, float waterDensity);
747 
749  //setCloudLayerParameters
763  void setCloudLayerParameters(int layer, float altitude, float waterDensity, float iceDensity, float rainRate);
765  //setCloudLayerParameters
774  void setCloudLayerParameters(int layer, float altitude, float visibility);
776  //getModtranClouds
781  ModtranClouds getModtranClouds();
782 
784  //getCloudParameters
792  void getCloudParameters(int& numCloudLayers, float& thickness, float& baseAltitude, float& extinctionScale, float& waterDensity);
793 
795  //getCloudLayerParameters
804  void getCloudLayerParameters(int layer, float& altitude, float& waterDensity, float& iceDensity, float& rainRate);
805 
807  //setGeodeticOrigin
813  void setGeodeticOrigin(double lat, double lon);
814 
816  //getGeodeticOrigin
822  void getGeodeticOrigin(double& lat, double& lon);
823 
824 
826  //setUpdateTime
831  void setUpdateTime();
832 
833 
835  //getUpdateTime
839  JRMTIME getUpdateTime();
840 
842  //isDayTime
847  bool isDayTime();
848 
850  //setUseSun
857  void setUseSun(bool flag);
858 
860  //isUsingSun
867  bool isUsingSun();
868 
870  //setUseBothSunMoon
876  void setUseBothSunMoon(bool flag);
877 
879  //getUseBothSunMoon
885  bool getUseBothSunMoon();
886 
888  // getNightTimeConstant
893  double getNightTimeConstant();
894 
896  // getSkyAngleFactor
901  double getSkyAngleFactor();
902 
904  //getSunMaxPosition
911  void getSunMaxPosition(double& i, double& j, double& k);
912 
914  // getSunPlaneVectorENU
922  void getSunPlaneVectorENU(double& i, double& j, double& k);
923 
925  //getSunPosition
932  void getSunPosition(double& i, double& j, double& k);
933 
935  //getMoonPosition
942  void getMoonPosition(double& i, double& j, double& k);
943 
945  //getSunMoonPosition
954  bool getSunMoonPosition(double& i, double& j, double& k);
955 
957  //getMoonPhase
963  double getMoonPhase();
964 
966  //getStarPosition
977  void getStarPosition(int starNum, double& i, double& j, double& k,
978  double& temperature, double& attenuation);
979 
981  //getStarPositionRadiance
992  void getStarPositionRadiance(ssSensor* sensor, int starNum, double& i, double& j, double& k, double& radiance);
993 
995  // initMaxStarParameters
1000  void initMaxStarParameters(ssSensor* sensor, double maxSize = 5.0, int starNum = -1);
1001 
1003  // ssEnvironment::getMaxStarRadiance
1008  double getMaxStarRadiance();
1009 
1011  // ssEnvironment::getStarPositionRadiance
1012  //
1025  void getStarPositionRadiance(ssSensor* sensor, int starNum, double& i, double& j, double& k, double& radiance, double& size);
1026 
1028  //ssEnvironment
1033  unsigned int getNumberStars();
1034 
1036  //getNumberWavelengths
1041  unsigned int getNumberWavelengths();
1042 
1044  //*getWavelengthsArray
1050  double* getWavelengthsArray();
1051 
1053  //getJulianDate
1058  long getJulianDate();
1059 
1061  //setUpdateBuffer
1067  void setUpdateBuffer(double hours);
1068 
1070  //getUpdateBuffer
1075  double getUpdateBuffer();
1076 
1078  //setSpectralMode
1089  void setSpectralMode(bool flag);
1090 
1092  //isAnySpectralMode
1097  bool isSpectralMode();
1098 
1100  //setAtmEnable
1107  void setAtmEnable(bool flag);
1108 
1110  //isAtmEnable
1115  bool isAtmEnable();
1116 
1118  //setScatterEnable
1125  void setScatterEnable(bool flag);
1126 
1128  //isScatterEnable
1133  bool isScatterEnable();
1134 
1136  //setMultiScatterEnable
1143  void setMultiScatterEnable(bool flag);
1144 
1146  //isMultiScatterEnable
1151  bool isMultiScatterEnable();
1152 
1154  //setRoundEarth
1162  void setRoundEarth(bool flag);
1163 
1165  //isRoundEarth
1170  bool isRoundEarth();
1171 
1173  //setUseODLimit
1178  void setUseODLimit(bool flag);
1179 
1181  //getUseODLimit
1186  bool getUseODLimit();
1187 
1189  //setAtmExtinctionScale
1197  void setAtmExtinctionScale(float scale);
1198 
1200  //getAtmExtinctionScale
1205  float getAtmExtinctionScale();
1206 
1208  //setAtmAmbientLightScale
1214  void setAtmAmbientLightScale(float scale);
1215 
1217  //getAtmAmbientLightScale
1222  float getAtmAmbientLightScale();
1223 
1225  //setAtmSkyScale
1230  void setAtmSkyScale(float scale);
1231 
1233  //getAtmSkyScale
1238  float getAtmSkyScale();
1239 
1241  //setNumberRanges
1246  void setNumberRanges(unsigned int ranges);
1247 
1249  //getNumberRanges
1254  unsigned int getNumberRanges();
1255 
1257  //setNumberObjectAltitudes
1263  void setNumberObjectAltitudes(unsigned int alts);
1264 
1266  //getNumberObjectAltitudes
1271  unsigned int getNumberObjectAltitudes();
1272 
1274  //getNumberObjectAngles
1279  unsigned getNumberObjectAngles();
1280 
1282  //setNumberObjectAngles
1287  void setNumberObjectAngles(unsigned int angles);
1288 
1289 
1291  //getNumberScatAngles
1296  unsigned int getNumberScatAngles();
1297 
1299  //setNumberScatAngles
1304  void setNumberScatAngles(unsigned int angles);
1305 
1307  //setNumberSensorAltitudes
1313  void setNumberSensorAltitudes(unsigned int alts);
1314 
1316  //getNumberSensorAltitudes
1321  unsigned int getNumberSensorAltitudes();
1322 
1324  //setMaxRange
1330  void setMaxRange(double range);
1331 
1333  //getMaxRange
1338  double getMaxRange();
1339 
1341  //setPowRange
1346  void setPowRange(double p);
1347 
1349  //getPowRange
1354  double getPowRange();
1355 
1357  //setPowDensity
1362  void setPowDensity(double p);
1363 
1365  //getPowDensity
1370  double getPowDensity();
1371 
1372 
1374  //setMaxAltitude
1380  void setMaxAltitude(double maximum);
1381 
1383  //getMaxAltitude
1389  double getMaxAltitude();
1390 
1392  //setPowAltitude
1397  void setPowAltitude(double p);
1398 
1400  //getPowAltitude
1405  double getPowAltitude();
1406 
1408  //getRangeScale
1413  double getRangeScale();
1414 
1416  //getObjectAltitudeScale
1421  double getObjectAltitudeScale();
1422 
1424  //getRainRate
1430  double getRainRate();
1431 
1433  //setRainRate
1439  void setRainRate(double rate);
1440 
1442  //getRainTemp
1447  double getRainTemp();
1448 
1450  //setRainTemp
1455  void setRainTemp(double temp);
1456 
1458  //getSensorAltitudeScale
1463  double getSensorAltitudeScale();
1464 
1466  //setUpdateInterval
1471  void setUpdateInterval(double deltaHours);
1472 
1474  //getUpdateInterval
1479  double getUpdateInterval();
1480 
1482  //setLUTPrecomputationRange
1489  void setLUTPrecomputationRange(bool lut_precomp_enable, double lut_tod_start, double lut_tod_end, double lut_tod_interval = 0.25);
1490 
1492  //getLUTPrecomputationRange
1499  void getLUTPrecomputationRange(bool& lut_precomp_enable, double& lut_tod_start, double& lut_tod_end, double& lut_tod_interval);
1500 
1501 
1502  /* ------------------------------------- BEGIN MODIFIED BRUNETON & NEYRET ATM LUT CODE ------------------------------ */
1503 
1505  // getSensorPolarATMLUTData
1519  // return: float pointers to sensor atmospheric data
1520  //
1521  void getSensorPolarATMLUTData(ssSensor* sensor, unsigned int& numSensAlts, unsigned int& numObjAngles, unsigned int& numScatAngles, unsigned int& numBins,
1522  float** xmitData, float** pradData, float** sradData, float** mradData);
1523 
1525  // getSensorMaxOptDepth
1533  void getSensorMaxOptDepth(ssSensor* sensor, unsigned int& numBins, float** maxOptDepth);
1534 
1536  // isMBNATM
1544  bool isMBNATM(ssSensor* sensor);
1545 
1547  //setMBNATM
1551  void setMBNATM(bool onoff);
1552 
1554  //getMBNATM
1558  bool getMBNATM();
1559 
1560  /* ------------------------------------- END MODIFIED BRUNETON & NEYRET ATM LUT CODE ------------------------------ */
1561 
1563  //setOriginalCode
1567  void setOriginalCode(bool onoff);
1568 
1570  //getOriginalCode
1574  bool getOriginalCode();
1575 
1577  //setModRad
1581  void setModRad(bool onoff);
1582 
1584  //getModRad
1588  bool getModRad();
1589 
1590 #ifdef _LOS_Prop_
1591 
1593  //getTransmission
1605  void getTransmission(ssSensor* sensor,
1606  double sensorGeoC[3], double sensorOrient[3], double entityGeoC[3],
1607  double** transmission, double** pathRadiance, double** scatterRadiance);
1608 
1610  //getTransmission
1621  void getTransmission(ssSensor* sensor, double objectAlt, double objectRange,
1622  double** transmission, double** pathRadiance, double** scatterRadiance);
1623 
1625  //saveRangeTransCompare
1634  double saveRangeTransCompare(ssSensor* sensor, double objectAlt);
1635 #endif // _LOS_Prop_
1636 
1638  // ssEnvironment::getAtmTableTransmission
1639  //
1640  // description: Gets the transmission properties of a LOS between a sensor and an object from the
1641  // sensor's atmospheric table.
1642  //
1643  // param: sensor - the sensor
1644  // sensorAlt - altitude of the sensor [m]
1645  // objectAlt - altitude of the object [m]
1646  // objectRange - ground range [m] between sensor and object
1647  //
1648  // returns: transmission - passband transmission from sensor to object
1649  // pathRadiance - passband path radiance from sensor to object
1650  //
1651  void getAtmTableTransmission(ssSensor* sensor, double sensorAlt, double objectAlt, double objectRange, double& transmission, double& pathRadiance);
1652 
1654  // getLightSourceTableIrradiances
1655  //
1664  void getLightSourceTableIrradiances(ssSensor* sensor, double objectAlt,
1665  double& ambientIrradiance, double& directIrradiance);
1666 
1668  //setGenerateFastDiurnalCache
1674  void setGenerateFastDiurnalCache(bool flag);
1675 
1677  //isGenerateFastDiurnalCache
1682  bool isGenerateFastDiurnalCache();
1683 
1685  //setWaterVaporPartialPressureScaleFactor
1690  void setWaterVaporPartialPressureScaleFactor(double wvpp);
1691 
1693  //getWaterVaporPartialPressureForCurrentTimeOfDay
1698  double getWaterVaporPartialPressureForCurrentTimeOfDay();
1699 
1701  //findClosestDefaultWaterVaporPartialPressure
1708  double findClosestDefaultWaterVaporPartialPressure(char* sigsim_data_dir, double wvpp);
1709 
1710 
1712  //setSeasonBasedOnLocation
1716  void setSeasonBasedOnLocation();
1717 
1719  //useModcardParamsToGenerateCorrespondingATMState
1729  int useModcardParamsToGenerateCorrespondingATMState(char* sigsim_data_dir, char* sigsim_cache_dir, char* outfilebasename);
1730 
1731 
1733  // getEnvIrradianceRatios
1741  bool getEnvIrradianceRatios(double& EsundirRatio, double& EsundifRatio, double& EskyRatio, double& EearthRatio);
1742 
1744  // getEnvIrradianceAverageRatios
1752  bool getEnvIrradianceAverageRatios(double& EsundirAveRatio, double& EsundifAveRatio, double& EskyAveRatio, double& EearthAveRatio);
1753 
1755  //*getMetinPtr
1765  METIN* getMetinPtr();
1766 
1768  //isAtmosphereDirty
1773  bool isAtmosphereDirty();
1774 
1776  //setAtmosphereDirty
1780  void setAtmosphereDirty();
1781 
1783  //deferAtmosphericUpdates
1788  void deferAtmosphericUpdates(bool flag);
1789 
1791  //isAtmosphericUpdateDeferred
1795  bool isAtmosphericUpdateDeferred();
1796 
1798  //setUpdateAtmospherics
1802  void setUpdateAtmospherics(bool flag);
1803 
1805  //isAtmosphericsUpdated
1809  bool isAtmosphericsUpdated();
1810 
1812  //setConstEratio
1816  void setConstEratio(bool flag);
1817 
1819  //isConstEratio
1823  bool isConstEratio();
1824 
1826  //getRefractionProfile
1830  void getRefractionProfile(ssSensor* sensor, double& n0, double& h0, ellipsoid& E);
1831 
1833  // setVisibilityRangeEnable
1837  void setVisibilityRangeEnable(bool state);
1838 
1840  //initVisibilityRange
1845  void initVisibilityRange(SigSimRT* ss);
1846 
1848  //releaseVisibilityRange
1852  void releaseVisibilityRange();
1853 
1855  // getVisibilityRange
1859  bool getVisibilityRange(float visibleRange, ssSensor* sensor, float& sensorRange,
1860  float cloudCoverage, bool isGroundFog, float& visiblityEmissionFactor);
1861 
1863  // getCloudPropertiesProto
1867  void getCloudProperties(ssSensor* sensor, float& humidity, float& extinction, float& lightResponse,
1868  float& ambientLightResponse, float& secondaryLightResponse, float& density);
1869 
1871  //getMeanWaveHeight
1872  /* Translates wind speed into average wave height. */
1873  double getMeanWaveHeight();
1874 
1876  //computeSkyAngleExponent
1877  /* // Returns the exponent n in the fitted function Lsky(theta) = Lsky(zenith) + (Lsky(horizon)-Lsky(zenith) * pow((Range(theta)/Range(horizon)), n). */
1878  double computeSkyAngleExponent();
1879 
1881  // sigsimUpdateEnvironment
1882  //
1883  // description: Direct call to SigSim's UpdateEnvironment routine.
1884  //
1885  // parameter:
1886  //
1887  // return: SigSim UpdateEnvironment error codes.
1888  //
1889  int sigsimUpdateEnvironment(double alt_m);
1890 
1892  //queryIrradianceCache
1898  bool queryIrradianceCache(char* cacheDirectory);
1899 
1901  //saveIrradianceCache
1906  void saveIrradianceCache(char* cacheDirectory);
1907 
1908  //int TestRunModTranPath(); // TEMPORARY!
1909 
1911  //isAtmosphereLutForSensorDirty
1915  bool isAtmosphereLutForSensorDirty(ssSensor* sensor) const;
1916 
1917 private:
1918  void interpolateFour(double fraction[2], double input1[4], double input2[4], double* output1, double* output2);
1919  void interpolateEight(double fraction[3], double input1[8], double input2[8], double* output1, double* output2);
1920 
1921 
1922 
1923 
1925  //setAutoLightLevel
1930  void setAutoLightLevel(ssSensor* sensor);
1931 
1933  //generateDiurnalCache
1939  bool generateDiurnalCache();
1940 
1942  //loadDefaults
1946  void loadDefaults();
1947 
1949  //insertSensorAtmosphericTable
1955  bool insertSensorAtmosphericTable(ssSensor* sensor);
1956 
1958  //setJulianDate
1963  void setJulianDate(long julian);
1964 
1966  //timeHasChangedSinceLastUpdate
1973  double timeHasChangedSinceLastUpdate();
1974 
1976  //clrAtmosphereDirty
1980  void clrAtmosphereDirty();
1981 
1982 
1984  //setAtmosphereLutsDirty
1988  void setAtmosphereLutsDirty();
1989 
1991  //checkSensorTimesChanged
1996  void checkSensorTimesChanged(bool explicitTimeChanged);
1997 
1998 
2000  unsigned int m_day;
2001  unsigned int m_month;
2002  unsigned int m_year;
2003 
2006 
2008 
2009  double m_simTime; // Simulation time (from start), currently independent of physical time.
2010 
2012 
2015 
2017  char m_nightSkyTableFile[SIGSIM_STRING_SIZE];
2018 
2020  char m_mmlsTableFile[SIGSIM_STRING_SIZE];
2021 
2023  char m_bathymetryTableFile[SIGSIM_STRING_SIZE];
2024 
2026  char m_atmosphereStateFile[SIGSIM_STRING_SIZE];
2027 
2031  double m_powAltitude; // [1]
2032 
2034  double m_maxRange;
2036  double m_powRange; // [1]
2037 
2039  double m_powDensity; // [1]
2040 
2041  // SigSim Structures
2042 
2045 
2047  bool m_useSun;
2063  bool m_MBNATM;
2066 
2067  bool m_OriginalCode; // Reproduces code as of Sept. 2012
2068  bool m_ModRad; // Use Modtran/Radtran directly to fill ENV/ATM LUTs
2069 
2071  bool m_dirty;
2074 
2077 
2080  double m_lut_tod_start, m_lut_tod_end, m_lut_tod_interval;
2081 
2083  unsigned int m_numberRanges;
2085  unsigned int m_numObjectAltitudes;
2087  unsigned int m_numObjectAngles;
2089  unsigned int m_numSensorAltitudes;
2091  unsigned int m_numScatAngles;
2098 
2101 
2102  //indicates whether to defer atmospheric updates, or the old way without deferring
2104  //flag indicates when the atmospherics is updated.
2106 
2107  friend class SigSimRT;
2108  friend class ssMaterialSet;
2109 
2112 
2115 
2116  struct Implementation;
2117  Implementation* m_impl;
2118 
2119 };
2120 #endif // _ssEnvironment_
2121 


Copyright © 2005-2024 MAK Technologies. All Rights Reserved (www.mak.com)