13 #ifndef _ssEnvironment_
14 #define _ssEnvironment_
38 MidLatitudeSummer = 2,
39 MidLatitudeWinter = 3,
56 Tropospheric_50km = 6,
81 Nimbostratus_Light = 7,
82 Nimbostratus_Moderate = 8,
86 Subvisual_Cirrus = 19,
127 bool updateAtmospherics(
ssSensor *sensor,
double sensorAltitude = 500.0,
bool checkReload =
true);
147 float *getLightSourceData(
ssSensor *sensor,
unsigned int &
x,
unsigned int &
y,
unsigned int &
c);
181 float *getSensorAtmosphericData(
ssSensor *sensor,
182 unsigned int &
x,
unsigned int &
y,
unsigned int &
z,
183 unsigned int &bins,
unsigned int &comp);
194 float *getSunDiskRadiance(
ssSensor *sensor,
unsigned int &bins);
205 float *getMoonDiskRadiance(
ssSensor *sensor,
unsigned int &bins);
219 float *getManMadeLightData(
ssSensor *sensor,
220 unsigned int &numLights,
unsigned int &bins);
228 int getNumberManMadeLights();
239 double getManMadeLightRadiance(
ssSensor *sensor,
int lightNum);
250 void setDate(
unsigned int day,
unsigned int month,
unsigned int year);
260 void getDate(
unsigned int &day,
unsigned int &month,
unsigned int &year);
268 void setTimeOfDay(
double tod);
276 double getTimeOfDay();
292 void setJRMTimeOfDay(
JRMTIME time);
300 void setAtmosphereStateFile(
const char *
name);
308 char *getAtmosphereStateFile();
317 void setNightSkyTableFile(
char *
name);
326 char *getNightSkyTableFile();
336 void setAirGroundTempCalcMode(
bool Calc_Ta_Tback);
346 bool getAirGroundTempCalcMode();
354 void setMaxDiurnalTemperature(
double tempMax);
362 void setMinDiurnalTemperature(
double tempMin);
370 double getMaxDiurnalTemperature();
378 double getMinDiurnalTemperature();
386 void setCurrentAirTemperature(
double Ta);
394 double getCurrentAirTemperature();
408 void setAirModelOption(
int air_model_option);
427 int setUserDefinedAirTemperatures(
int numberIntervals,
double *airTemperature);
444 int setUserDefinedAirTemperatures(
int numberIntervals,
double *airTemperature,
double *timeOfDays);
452 bool isUserDefinedAirTemperature();
459 void disableUserDefinedAirTemperature();
515 void setModtranVisibility(
double vis);
523 double getModtranVisibility();
531 void setWindVelocity(
double windVelocity);
539 double getWindVelocity();
547 void setWindDirection(
double EofN);
555 double getWindDirection();
563 void setRelativeHumidity(
double relative_humidity);
571 double getRelativeHumidity();
579 void setGroundTemperature(
double Tbackground);
587 double getGroundTemperature();
595 void setAtmosphericPressure(
double Pressure);
603 double getAtmosphericPressure();
628 void setCloudParameters(
int numCloudLayers,
float thickness,
float baseAltitude,
float extinctionScale,
float waterDensity);
645 void setCloudLayerParameters(
int layer,
float altitude,
float waterDensity,
float iceDensity,
float rainRate);
656 void setCloudLayerParameters(
int layer,
float altitude,
float visibility);
674 void getCloudParameters(
int &numCloudLayers,
float &thickness,
float &baseAltitude,
float &extinctionScale,
float &waterDensity);
686 void getCloudLayerParameters(
int layer,
float &altitude,
float &waterDensity,
float &iceDensity,
float &rainRate);
695 void setGeodeticOrigin(
double lat,
double lon);
704 void getGeodeticOrigin(
double &lat,
double &lon);
713 void setUpdateTime();
731 void setUseSun(
bool flag) ;
750 void setUseBothSunMoon(
bool flag) ;
759 bool getUseBothSunMoon();
767 double getNightTimeConstant ();
775 double getSkyAngleFactor ();
785 void getSunMaxPosition (
double &i,
double &j,
double &k);
796 void getSunPlaneVectorENU(
double &i,
double &j,
double &k);
806 void getSunPosition (
double &i,
double &j,
double &k);
816 void getMoonPosition (
double &i,
double &j,
double &k);
828 bool getSunMoonPosition (
double &i,
double &j,
double &k);
837 double getMoonPhase ();
851 void getStarPosition (
int starNum,
double &i,
double &j,
double &k,
852 double &temperature,
double &attenuation);
866 void getStarPositionRadiance (
ssSensor *sensor,
int starNum,
double &i,
double &j,
double &k,
double &radiance);
874 void initMaxStarParameters (
ssSensor *sensor,
double maxSize = 5.0,
int starNum = -1);
882 double getMaxStarRadiance ();
899 void getStarPositionRadiance (
ssSensor *sensor,
int starNum,
double &i,
double &j,
double &k,
double &radiance,
double &
size);
907 unsigned int getNumberStars ();
915 unsigned int getNumberWavelengths();
924 double *getWavelengthsArray();
932 long getJulianDate();
941 void setUpdateBuffer(
double hours);
949 double getUpdateBuffer();
963 void setSpectralMode(
bool flag);
971 bool isSpectralMode();
981 void setAtmEnable(
bool flag);
999 void setScatterEnable(
bool flag);
1007 bool isScatterEnable();
1017 void setMultiScatterEnable(
bool flag);
1025 bool isMultiScatterEnable();
1036 void setRoundEarth(
bool flag);
1044 bool isRoundEarth();
1055 void setAtmExtinctionScale(
float scale);
1063 float getAtmExtinctionScale();
1072 void setAtmAmbientLightScale(
float scale);
1080 float getAtmAmbientLightScale();
1088 void setAtmSkyScale(
float scale);
1096 float getAtmSkyScale();
1104 void setNumberRanges(
unsigned int ranges);
1112 unsigned int getNumberRanges();
1121 void setNumberObjectAltitudes(
unsigned int alts);
1129 unsigned int getNumberObjectAltitudes();
1137 unsigned getNumberObjectAngles();
1145 void setNumberObjectAngles(
unsigned int angles);
1154 unsigned int getNumberScatAngles();
1162 void setNumberScatAngles(
unsigned int angles);
1171 void setNumberSensorAltitudes(
unsigned int alts);
1179 unsigned int getNumberSensorAltitudes();
1188 void setMaxRange(
double range);
1196 double getMaxRange();
1205 void setMaxAltitude(
double maximum);
1214 double getMaxAltitude();
1222 double getRangeScale();
1230 double getObjectAltitudeScale();
1238 double getRainRate();
1247 void setRainRate(
double rate);
1255 double getRainTemp();
1263 void setRainTemp(
double temp);
1271 double getSensorAltitudeScale();
1279 void setUpdateInterval(
double deltaHours);
1287 double getUpdateInterval();
1308 void getSensorPolarATMLUTData(
ssSensor *sensor,
unsigned int &numSensAlts,
unsigned int &numObjAngles,
unsigned int &numScatAngles,
unsigned int &numBins,
1309 float **xmitData,
float **pradData,
float **sradData,
float **mradData);
1320 void getSensorMaxOptDepth(
ssSensor *sensor,
unsigned int &numBins,
float **maxOptDepth);
1349 void getTransmission(
ssSensor *sensor,
1350 double sensorGeoC[3],
double sensorOrient[3],
double entityGeoC[3],
1351 double **transmission,
double **pathRadiance,
double **scatterRadiance);
1365 void getTransmission(
ssSensor *sensor,
double objectAlt,
double objectRange,
1366 double **transmission,
double **pathRadiance,
double **scatterRadiance);
1379 void getAtmTableTransmission(
ssSensor *sensor,
double objectAlt,
double objectRange,
1380 double &transmission,
double &pathRadiance);
1393 void getLightSourceTableIrradiances(
ssSensor *sensor,
double objectAlt,
1394 double &ambientIrradiance,
double &diffuseIrradiance);
1407 double saveRangeTransCompare(
ssSensor *sensor,
double objectAlt);
1416 void setGenerateFastDiurnalCache(
bool flag);
1424 bool isGenerateFastDiurnalCache();
1432 void setWaterVaporPartialPressureScaleFactor(
double wvpp);
1440 double getWaterVaporPartialPressureForCurrentTimeOfDay();
1450 double findClosestDefaultWaterVaporPartialPressure(
char *sigsim_data_dir,
double wvpp);
1458 void setSeasonBasedOnLocation();
1471 int useModcardParamsToGenerateCorrespondingATMState(
char *sigsim_data_dir,
char *outfilebasename);
1483 bool getEnvIrradianceRatios(
double &EsundirRatio,
double &EsundifRatio,
double &EskyRatio,
double &EearthRatio);
1494 bool getEnvIrradianceAverageRatios(
double &EsundirAveRatio,
double &EsundifAveRatio,
double &EskyAveRatio,
double &EearthAveRatio);
1507 METIN *getMetinPtr();
1515 bool isAtmosphereDirty();
1522 void setAtmosphereDirty();
1529 void setUseUpdateButton(
bool flag);
1536 bool isUseUpdateButton();
1543 void setUpdateButtonPressed(
bool flag);
1550 bool isUpdateButtonPressed();
1557 void setVisibilityRangeEnable(
bool state);
1565 void initVisibilityRange(
SigSimRT *ss);
1572 void releaseVisibilityRange();
1579 bool getVisibilityRange(
float visibleRange,
ssSensor *sensor,
float &sensorRange,
1580 float cloudCoverage,
bool isGroundFog,
float &visiblityEmissionFactor);
1587 void getCloudProperties(
ssSensor *sensor,
float &humidity,
float &extinction,
float &lightResponse,
1588 float &ambientLightResponse,
float &secondaryLightResponse,
float &density);
1591 void interpolateEight(
double fraction[3],
double input1[8],
double input2[8],
double *output1,
double *output2);
1602 void setAutoLightLevel(
ssSensor *sensor);
1611 bool generateDiurnalCache();
1618 void loadDefaults();
1627 bool insertSensorAtmosphericTable(
ssSensor *sensor);
1635 void setJulianDate(
long julian);
1645 double timeHasChangedSinceLastUpdate();
1652 void clrAtmosphereDirty();
1660 void setAtmosphereLutsDirty();
1756 struct Implementation;
1760 #endif // _ssEnvironment_