VR-Vantage 3.1 API Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
List of all members | Classes | Public Member Functions | Private Member Functions | Private Attributes
ssAtmosphericTable Class Reference

Classes

struct  BNNLUTPARMS

Public Member Functions

 ssAtmosphericTable (ssSensor *sensor)
 constructor
 ~ssAtmosphericTable ()
 destructor
bool initializeAtm (METIN *metin, ssSensor *sensor)
void setATMflags (bool useSun, bool useBothSunMoon, double sensorAltitude, bool spectralMode, bool atmEnable, bool scatterEnable, bool multiScatterEnable, bool roundEarthEnable, bool useODLimit)
 Set all the table flags that are used.
void makeSensorAtmosphericData ()
 Updates the sensor atmospheric data tables for use as texture.
void makeSensorAtmosphericData2 ()
void makePolarATMLUTs ()
void makeLightSourceData ()
 Updates the sensor light source data tables for use as texture.
void makeBathymetryData ()
void makeAcousticPathData ()
void substituteRefractionRadiusRatio (bool constEratio)
void makeLightSourceDataSigSim ()
 Updates the sensor light source data tables for use as texture.
void makeLightSourceDataSigSim2 ()
void updateSunDiskRadiance ()
 updates the spectral radiance for the sun disk - used to render the sun disk at the appropriate radiance level.
void updateMoonDiskRadiance ()
 updates the spectral radiance for the moon disk - used to render the moon disk at the appropriate radiance level.
void updateManMadeLightData (bool forceUpdate=false)
 updates the spectral radiance for all the defined man-made light source - scaled by maxRadiance This is called by updateMaterialResponses when appropriate.
void getAtmospherics (double sensorAltitude, double objAltitude, double objRange, bool transOnly=false)
 get the array of atm data for the given positions
unsigned int getNumberWavelengths ()
 get number of sensor wavelengths
unsigned int getNumberMetinWavelengths ()
 get number of metin wavelengths
unsigned int getNumberLayers ()
 get number of atmospheric layers
void setNumberLayers (unsigned int layers)
 set number of atmospheric layers
unsigned int getNumberObjectAltitudes ()
 get number of object altitudes
void setNumberObjectAltitudes (unsigned int alts)
 set number of altitudes
unsigned int getNumberObjectAngles ()
 get number of object angles
void setNumberObjectAngles (unsigned int angles)
 set number of angles
unsigned int getNumberSensorAltitudes ()
 get number of altitudes
void setNumberSensorAltitudes (unsigned int alts)
 set number of altitudes
unsigned int getNumberSamplesPerLayer ()
 get number of samples per layer to use for scattering data
void setNumberSamplesPerLayer (unsigned int alts)
 set number of samples per layer to use for scattering data
unsigned int getNumberScatAngles ()
 get number of angles to use for scattering data
void setNumberScatAngles (unsigned int angles)
 set number of angles to use for scattering data
double getMaxAltitude ()
 get maximum altitude
void setMaxAltitude (double max)
 set maximum altitude
void setPowAltitude (double p)
 set power of i/(n-1) for altitude indexing.
double getPowAltitude ()
 get power of i/(n-1) for altitude indexing.
unsigned int getNumberTextureRanges ()
 get number of texture Ranges
void setNumberTextureRanges (unsigned int ranges)
 set number of texture Ranges
double getMaxRange ()
 get maximum Range
void setMaxRange (double max)
 set maximum Range
void setPowRange (double p)
 set power of i/(n-1) for range indexing.
double getPowRange ()
 get power of i/(n-1) for range indexing.
void setPowDensity (double p)
 set power of -log(density) in ATM LUT.
double getPowDensity ()
 get power of -log(density) in ATM LUT.
unsigned int getNumberComponents ()
 number of components
void setUseSun (bool flag)
 set flag to use the sun for the lighting and atmospheric calculations otherwise use the moon.
bool getUseSun ()
 returns true if using the sun for the lighting and atmospheric calculations otherwise returns false if using the moon.
void setUseBothSunMoon (bool flag)
 set flag to use the sun and moon for the lighting and atmospheric calculations otherwise use the sun or moon depending on the m_useSun flag
bool getUseBothSunMoon ()
 get flag to use the sun and moon for the lighting and atmospheric calculations otherwise use the sun or moon depending on the m_useSun flag
double getSensorAltitude ()
 get sensor altitude
void setSensorAltitude (double alt)
 Keeps track of bottom of current ENV/ATM LUT sensor altitude range [m].
bool getSpectralMode ()
 get spectral mode
bool getScatterEnable ()
 get scatter enable
bool getAtmEnable ()
 get atm enable
bool getMultiScatterEnable ()
 get multi scatter enable
bool getRoundEarth ()
 get multi scatter enable
bool getUseODLimit ()
 get use OD Limit
double getMaxRadiance ()
 get max radiance
void setMaxRadiance (double maxRadiance)
 get max radiance
JRMTIME getUpdateTime ()
 get time when lut was generated.
void setUpdateTime (JRMTIME time)
 set update time
bool timeChanged (JRMTIME time, double buffer_hrs=LOLIM)
 compare times
double * getAltitudePtr ()
 get the pointer to altitude array
double * getObjAltPtr ()
 get the pointer to object altitude array
double * getSensAltPtr ()
 get the pointer to sensor altitude array
double * getRangePtr ()
 get the pointer to range array
double * getScatAnglePtr ()
 get the pointer to scat angle array
void getMetinAtmosphericsData (double **Trans, double **AbsorbTrans, double **PathRad, double **ScatRad, double **MScatRad)
 get the pointers to m_metinX arrays
void getSensorAtmosphericsData (double **Trans, double **AbsorbTrans, double **PathRad, double **ScatRad, double **MScatRad)
 get the pointers to m_sensorX arrays
double * getObjectScatData ()
 get the pointer to m_objectScatData
double * getObjectAmbientUpwelling ()
 get the pointer to m_objAmbientUpwelling
double * getObjectAmbientDownwelling ()
 get the pointer to m_objAmbientDownwelling
float * getAtmosphericData (bool spectralMode)
 get the atmospheric data for rendering
void makeScatteringData (bool useSun=true, bool includeSky=true, bool includeEarth=true, bool includeStars=true)
 Updates the scattering data used in building the atm texture lut.
int makeScatteringDataSigSim (bool useSun=true, bool includeStars=true)
 Updates the scattering data used in building the atm texture lut.
double * getAmbientLightSourceData (unsigned int altitude=0)
 get the ambient light source data at a specific altitude index
double * getDownwellLightSourceData (unsigned int altitude=0)
 get the downwelling diffuse light source data at a specific altitude index
double * getUpwellLightSourceData (unsigned int altitude=0)
 get the upwelling diffuse light source data at a specific altitude index
double * getDirectLightSourceData (unsigned int altitude=0)
 get the directional data at a specific altitude index
float * getLightSourceData ()
 get the response data for rendering
float * getSunDiskRadiance ()
 gets the spectral radiance for the sun disk at the top of atmosphere used to render the sun disk at the appropriate radiance level.
float * getMoonDiskRadiance ()
 gets the spectral radiance for the moon disk at the top of atmosphere used to render the moon disk at the appropriate radiance level.
int getNumberManMadeLights ()
float * getManMadeLightData ()
 gets the spectral radiance for all the defined man-made light source scaled by maxRadiance
void getIrradiance (double altitude, double *downwellIrradiance, double *upwellIrradiance, double *directIrradiance, bool useSun=true, bool includeSky=true, bool includeEarth=true, bool includeAmbient=true)
 get the directional and ambient irradiance array for a sensor
void computeDiffuseIrradiance (double altitude, bool includeSky, bool includeSunMoon, bool includeEarthshine)
 get the diffuse irradiance array for a sensor
void computeDiffuseSolarLunar (double altitude)
 get the ambient irradiance array for a sensor
void computeDiffuseLightSigSim (double altitude, bool includeSun, bool includeMoon, bool includeSky, bool includeEarth, long startindex, long endindex)
void computeDiffuseEarthshine (double altitude)
 get the diffuse Earthshine at given altitude
void computeDiffuseSky (double altitude)
 get the diffuse sky at given altitude
void setAtmExtinctionScale (float scale)
 set the atm extinction scale factor
float getAtmExtinctionScale ()
 get the atm extinction scale factor
void setAtmAmbientLightScale (float scale)
 set the atm Ambient Light scale factor
float getAtmAmbientLightScale ()
 get the atm Ambient Light scale factor
void setAtmSkyScale (float scale)
 set the atm sky scale factor to adjust the IR sky temperature
float getAtmSkyScale ()
 get the atm sky scale factor to adjust the IR sky temperature
void getRefractiveProfile (double &n0, double &h0)
 get the refractive index base (n0 [1]) and exponent (h0 [km])
bool isDirty ()
 returns true if the atmosphere lut needs to be updated
void setDirty ()
 indicate that atmosphere lut needs to be updated
void clrDirty ()
 indicates that atmosphere texture luts have been updated
ssSensorgetSensorPtr ()
 gets the ssSensor pointer associated with this table
void setOriginalCode (bool onoff)
 Reproduces code as of Sept.
bool getOriginalCode ()
 Find out whether to reproduce code as of Sept.
void setModRad (bool onoff)
 Use Modtran/Radtran directly to fill LUTs (slow!!)
bool getModRad ()
 Use Modtran/Radtran directly to fill LUTs (slow!!)
int writeATMLUT (char *cacheDirectory, char *statefile)
int readATMLUT (char *cacheDirectory, char *statefile)
int rescaleATMLUT (double oldMaxRad, double newMaxRad)
int writeENVLUT (char *cacheDirectory, char *statefile)
int readENVLUT (char *cacheDirectory, char *statefile)
int rescaleENVLUT (double oldMaxRad, double newMaxRad)
double getLUTTODInterval ()
 get time interval inside which 2 LUTs for the same sensor & environment are considered sufficiently the same.
void setLUTTODInterval (double lut_tod_interval)
 /** set time interval inside which 2 LUTs for the same sensor & environment are considered sufficiently the same.
void PreconditionZeniths (double Rg_m, double alt_m, double *mu, double *muh, double *mus)
double BNgetUr (double alt_m, double n)
double BNgetAlt (double Ur, double n)
double BNgetUmu (double alt_m, double mu, double n)
double BNgetMu (double alt_m, double Umu, double n)
void ReturnMuSegments (double V[BNN_NMUSEGS], BNNLUTPARMS bnn, double muh, double mus)
double MuSamplingDensityLinear (BNNLUTPARMS bnn, double mu, double muh, double mus)
double BNgetUmuLinear (double mu, double muh, double mus, BNNLUTPARMS bnn)
double BNgetMuLinear (double Umu, double muh, double mus, BNNLUTPARMS bnn)
double MuSamplingDensityIntegralExponential (double mu, double mux, double devx)
double MuSamplingDensityExponential (BNNLUTPARMS bnn, double mu, double muh, double mus)
double BNgetUmuExponential (double mu, double muh, double mus, BNNLUTPARMS bnn)
double BNgetMuExponential (double Umu, double muh, double mus, BNNLUTPARMS bnn)
double BNgetUmus (double mu_s)
double BNgetMus (double Umus)
double BNgetUv (double v, double mu, double mus, double n)
double BNgetV (double Uv, double mu, double mus, double n)
VECTOR BNgetLook (VECTOR source, double viewdotsource, double viewdotup)
double BNgetUv (double v, double n)
double BNgetV (double Uv, double n)
VECTOR BNgetLook (VECTOR source, double viewdotsource, double viewdotup)
void setMBNATM (bool onoff)
 if(m_OriginalCode==false), this flag turns on the Modified B&N atmospheric LUT processing.
bool getMBNATM ()
 if(m_OriginalCode==false), this flag turns on the Modified B&N atmospheric LUT processing.
BNNLUTPARMS GetBNNLUTPARMS (void)
float * getXmitData ()
 get the atmospheric transmission data for rendering
float * getPradData ()
 get the atmospheric pathrad data for rendering
float * getSradData ()
 get the atmospheric single scatter data for rendering
float * getMradData ()
 get the atmospheric multiple scatter data for rendering
float * getMaxOptDepth ()
 get the atmospheric max optical depth for rendering

Private Member Functions

void FreeArrays ()
int getLayer (double alt)
 determines which layer contains the altitude passed in
double getAltitudeSample (int layer, int sample)
 gets the altitude for a particular sample within a layer.
double getAltitudeDelta (int layer, int sample)
 gets the altitude difference between a particular layer sample and the one immediately above it.
void getDataIndex (double alt, int layer, unsigned int &index)
 determines what the data index is for the altitude passed in
void getDataIndexFract (double alt, int layer, unsigned int &index, double &fract)
 determines what the data index is for the altitude passed in
void makeSensorAltAtmData (double sensorAlt, float *AtmData, double *polarData)
 creates a table of data for a sensor altitude
void initAtmosphericData ()
 init the atmospheric data arrays - this happens at the beginning of a line of sight.
void convertMetinToSensor ()
 convert the metin data arrays to sensor data arrays
void getSingleScattering (double objAltitude, double *sourceTOA, double *scatData)
 get the data for scattering at a certain altitude SigSim routine: PhaseFunction
void fillMultipleScattering (VECTOR source, double *sourceTOA, bool includeSky, bool includeEarth, bool includeStars)
void getAmbientScattering (double objAltitude, VECTOR source, double *objMultiScatData, double *metinAmbientDownwelling, double *metinAmbientUpwelling)
 Add to the arrays of ambient light due to multiple scattering, given point-to-TOA path data objMultiScatData[].
void getAmbientScattering2 (Datapoint *objMultiScatData, double *metinAmbientDownwelling, double *metinAmbientUpwelling, bool includeSky)

Private Attributes

unsigned int m_numSensorWaveLengths
 number of sensor wavelength bins, depends on sensor
unsigned int m_numMetinWaveLengths
 number of metin wavelength bins
unsigned int m_numberLayers
 number of layers to use
unsigned int m_numSamplesPerLayer
 number of layers to use
unsigned int m_numObjectAngles
 number of object angles to use
unsigned int m_numObjectAltitudes
 number of object altitudes to use
unsigned int m_numSensorAltitudes
 number of sensor altitudes to use
unsigned int m_numberTextureRanges
 number of ranges to use for the texture table
unsigned int m_numberScatAngles
 number of scattering angles to use for the texture table
double m_maxAltitude
 maximum altitude in the texture map.
double m_powAltitude
 power of i/(n-1) for altitude indexing.
double m_maxRange
 maximum range in the texture map.
double m_powRange
 power of i/(n-1) for range indexing.
double m_powDensity
 power of -log(density) in the texture map.
float * m_spectralAtmosphericData
 compact atmospheric data for rendering use in spectral mode : index = m_numberComponents * (rangeindex + m_numberTextureRanges * (wavelengthindex + m_numSensorWaveLengths * objaltindex)) + componentindex.
float * m_passbandAtmosphericData
 compact atmospheric data for rendering use in (fast) passband mode : index = m_numberComponents * (rangeindex + m_numberTextureRanges * (objaltindex + m_numObjectAltitudes * sensaltindex)) + componentindex.
double * m_ambientLightSource
 spectral arrays for the combined source irradiances at each wavebin at the sensor resolution
double * m_downwellLightSource
double * m_upwellLightSource
double * m_directLightSource
float * m_lightSourceData
 compact response data for rendering use : index = [objaltindex * m_numSensorWavelengths + wavelengthindex]*4 + componentindex
unsigned int m_numberComponents
 number of components in the ATM texture map.
float * m_xmitData
float * m_pradData
float * m_sradData
float * m_mradData
float * m_maxOptDepth
double * m_objAlt
 explicit altitude & range arrays (used with MixedSigSimRT)
double * m_sensAlt
double * m_range
bool m_useSun
 use the sun for the lighting/atm calculations.
bool m_useBothSunMoon
 use the both the sun and moon for the lighting/atm calculations.
double m_sensorAltitude
 sensor altitude that was used to generate the spectral data
bool m_spectralMode
 true if spectral mode was last used to generate the table
bool m_atmEnable
 atm enable state that was used to generate the table
bool m_scatterEnable
 scatter enable state that was used to generate the table
bool m_multiScatterEnable
 multi scatter enable state that was used to generate the table
bool m_roundEarth
 round earth enable state that was used to generate the table
bool m_useODLimit
 switch to use optical depth restriction on max pathlength
double m_maxRadiance
 max radiance that was used to generate the table
JRMTIME m_updateTime
 time that was used to generate the table
METINm_metin
 pointer to the SigSim metin structure
ssSensorm_sensor
 pointer to the sensor associated with this table.
double * m_metinTrans
 spectral arrays for the combined sensor Atmospherics at each wavebin : index < m_numMetinWaveLengths or exceptions below:
double * m_metinAbsorbTrans
double * m_metinPathRad
double * m_metinScatter
double * m_metinMultiScat
double * m_sensorTrans
double * m_sensorAbsorbTrans
double * m_sensorPathRad
double * m_sensorScatter
double * m_sensorMultiScat
double * m_altitude
 array giving altitude for each layer : index < m_numberLayers
double * m_scatAngles
 array holding the cosine of the angles used for the scattering lut : index < m_numberScatAngles
double * m_objectScatData
 array holding scattering data for all object altitudes of the lut : index < m_numSamplesPerLayer * m_numberLayers * m_numMetinWaveLengths * m_numberScatAngles
double * m_objAmbientUpwelling
 array holding ambient light per object altitude generated from the multiple scattering data for fog color. : index < m_numSamplesPerLayer * m_numberLayers * m_numMetinWaveLengths
double * m_objAmbientDownwelling
 array holding ambient light per object altitude generated from the multiple scattering data for fog color. : index < m_numSamplesPerLayer * m_numberLayers * m_numMetinWaveLengths
float * m_mmLightData
 array of man-made light radiances : index < m_numSensorWaveLengths * m_metin->num_mm_lsources
float * m_sunDiskData
 array of sun disk radiances : index < m_numSensorWaveLengths
float * m_moonDiskData
 array of moon disk radiances : index < m_numSensorWaveLengths
int m_startIndex
 start index into the metin array for this sensor
int m_endIndex
 end index into the metin array for this sensor
double m_ax
 start wavelength for this sensor
double m_bx
 end wavelength for this sensor
float m_atmExtinctionScale
 scale factor to increase/decrease the extinction coefficients (fog)
float m_atmAmbientLightScale
 scale factor to increase/decrease the Ambient Light (fog color)
float m_atmSkyScale
 scale factor to increase/decrease tm sky scale factor to adjust the IR sky temperature
double m_fogRatio
 ratio to scale the path radiance to adjust the sky temperature to match the air temperature
bool m_incremental
double m_lut_tod_interval
double m_n0
double m_h0
bool m_dirty
 flag to determine if this atmospheric texture data needs to be updated.
bool m_OriginalCode
bool m_ModRad
bool m_MBNATM

Constructor & Destructor Documentation

ssAtmosphericTable::ssAtmosphericTable ( ssSensor sensor)

constructor

Parameters
ssSensor*sensor
ssAtmosphericTable::~ssAtmosphericTable ( )

destructor

Member Function Documentation

bool ssAtmosphericTable::initializeAtm ( METIN metin,
ssSensor sensor 
)
Parameters
METIN*metin
ssSensor*sensor
Returns
bool
void ssAtmosphericTable::setATMflags ( bool  useSun,
bool  useBothSunMoon,
double  sensorAltitude,
bool  spectralMode,
bool  atmEnable,
bool  scatterEnable,
bool  multiScatterEnable,
bool  roundEarthEnable,
bool  useODLimit 
)

Set all the table flags that are used.

Parameters
booluseSun
booluseBothSunMoon
doublesensorAltitude
boolspectralMode
boolatmEnable
boolscatterEnable
boolmultiScatterEnable
boolroundEarthEnable
booluseODLimit
void ssAtmosphericTable::makeSensorAtmosphericData ( )

Updates the sensor atmospheric data tables for use as texture.

void ssAtmosphericTable::makeSensorAtmosphericData2 ( )
void ssAtmosphericTable::makePolarATMLUTs ( )
void ssAtmosphericTable::makeLightSourceData ( )

Updates the sensor light source data tables for use as texture.

void ssAtmosphericTable::makeBathymetryData ( )
void ssAtmosphericTable::makeAcousticPathData ( )
void ssAtmosphericTable::substituteRefractionRadiusRatio ( bool  constEratio)
void ssAtmosphericTable::makeLightSourceDataSigSim ( )

Updates the sensor light source data tables for use as texture.

void ssAtmosphericTable::makeLightSourceDataSigSim2 ( )
void ssAtmosphericTable::updateSunDiskRadiance ( )

updates the spectral radiance for the sun disk - used to render the sun disk at the appropriate radiance level.

void ssAtmosphericTable::updateMoonDiskRadiance ( )

updates the spectral radiance for the moon disk - used to render the moon disk at the appropriate radiance level.

void ssAtmosphericTable::updateManMadeLightData ( bool  forceUpdate = false)

updates the spectral radiance for all the defined man-made light source - scaled by maxRadiance This is called by updateMaterialResponses when appropriate.

SigSim call - mmlsource_irradiation

void ssAtmosphericTable::getAtmospherics ( double  sensorAltitude,
double  objAltitude,
double  objRange,
bool  transOnly = false 
)

get the array of atm data for the given positions

Parameters
doublesensorAltitude
doubleobjAltitude
doubleobjRange
booltransOnly
unsigned int ssAtmosphericTable::getNumberWavelengths ( )

get number of sensor wavelengths

Returns
unsigned int
unsigned int ssAtmosphericTable::getNumberMetinWavelengths ( )

get number of metin wavelengths

Returns
unsigned int
unsigned int ssAtmosphericTable::getNumberLayers ( )

get number of atmospheric layers

Returns
unsigned int
void ssAtmosphericTable::setNumberLayers ( unsigned int  layers)

set number of atmospheric layers

Parameters
unsignedint layers
unsigned int ssAtmosphericTable::getNumberObjectAltitudes ( )

get number of object altitudes

Returns
unsigned int
void ssAtmosphericTable::setNumberObjectAltitudes ( unsigned int  alts)

set number of altitudes

Parameters
unsignedint alts
unsigned int ssAtmosphericTable::getNumberObjectAngles ( )

get number of object angles

Returns
unsigned int
void ssAtmosphericTable::setNumberObjectAngles ( unsigned int  angles)

set number of angles

Parameters
unsignedint angles
unsigned int ssAtmosphericTable::getNumberSensorAltitudes ( )

get number of altitudes

Returns
unsigned int
void ssAtmosphericTable::setNumberSensorAltitudes ( unsigned int  alts)

set number of altitudes

Parameters
unsignedint alts
unsigned int ssAtmosphericTable::getNumberSamplesPerLayer ( )

get number of samples per layer to use for scattering data

Returns
unsigned int
void ssAtmosphericTable::setNumberSamplesPerLayer ( unsigned int  alts)

set number of samples per layer to use for scattering data

Parameters
unsignedint alts
unsigned int ssAtmosphericTable::getNumberScatAngles ( )

get number of angles to use for scattering data

Returns
unsigned int
void ssAtmosphericTable::setNumberScatAngles ( unsigned int  angles)

set number of angles to use for scattering data

Returns
void
double ssAtmosphericTable::getMaxAltitude ( )

get maximum altitude

Returns
double
void ssAtmosphericTable::setMaxAltitude ( double  max)

set maximum altitude

Parameters
doublemax
void ssAtmosphericTable::setPowAltitude ( double  p)

set power of i/(n-1) for altitude indexing.

Parameters
doublepower
double ssAtmosphericTable::getPowAltitude ( )

get power of i/(n-1) for altitude indexing.

Returns
double
unsigned int ssAtmosphericTable::getNumberTextureRanges ( )

get number of texture Ranges

Returns
unsigned int
void ssAtmosphericTable::setNumberTextureRanges ( unsigned int  ranges)

set number of texture Ranges

Parameters
unsignedint ranges
double ssAtmosphericTable::getMaxRange ( )

get maximum Range

Returns
double
void ssAtmosphericTable::setMaxRange ( double  max)

set maximum Range

Parameters
doublemax
void ssAtmosphericTable::setPowRange ( double  p)

set power of i/(n-1) for range indexing.

Parameters
doublepower
double ssAtmosphericTable::getPowRange ( )

get power of i/(n-1) for range indexing.

Returns
double
void ssAtmosphericTable::setPowDensity ( double  p)

set power of -log(density) in ATM LUT.

Parameters
doublepower
double ssAtmosphericTable::getPowDensity ( )

get power of -log(density) in ATM LUT.

Returns
double
unsigned int ssAtmosphericTable::getNumberComponents ( )

number of components

Returns
unsigned int
void ssAtmosphericTable::setUseSun ( bool  flag)

set flag to use the sun for the lighting and atmospheric calculations otherwise use the moon.

Usually this would be set to isDayTime(). This is over-ridden by the m_useBothSunMoon flag.

Parameters
boolflag
bool ssAtmosphericTable::getUseSun ( )

returns true if using the sun for the lighting and atmospheric calculations otherwise returns false if using the moon.

This is over-ridden by the m_useBothSunMoon flag.

Returns
bool
void ssAtmosphericTable::setUseBothSunMoon ( bool  flag)

set flag to use the sun and moon for the lighting and atmospheric calculations otherwise use the sun or moon depending on the m_useSun flag

Parameters
boolflag
bool ssAtmosphericTable::getUseBothSunMoon ( )

get flag to use the sun and moon for the lighting and atmospheric calculations otherwise use the sun or moon depending on the m_useSun flag

Returns
bool
double ssAtmosphericTable::getSensorAltitude ( )

get sensor altitude

Returns
double : bottom of current ENV/ATM LUT sensor altitude range [m]
void ssAtmosphericTable::setSensorAltitude ( double  alt)

Keeps track of bottom of current ENV/ATM LUT sensor altitude range [m].

Parameters
alt
Returns
bool
bool ssAtmosphericTable::getSpectralMode ( )

get spectral mode

Returns
bool
bool ssAtmosphericTable::getScatterEnable ( )

get scatter enable

Returns
bool
bool ssAtmosphericTable::getAtmEnable ( )

get atm enable

Returns
bool
bool ssAtmosphericTable::getMultiScatterEnable ( )

get multi scatter enable

Returns
bool
bool ssAtmosphericTable::getRoundEarth ( )

get multi scatter enable

Returns
bool
bool ssAtmosphericTable::getUseODLimit ( )

get use OD Limit

Returns
bool
double ssAtmosphericTable::getMaxRadiance ( )

get max radiance

Returns
double
void ssAtmosphericTable::setMaxRadiance ( double  maxRadiance)

get max radiance

Returns
double
JRMTIME ssAtmosphericTable::getUpdateTime ( )

get time when lut was generated.

Returns
JRMTIME
void ssAtmosphericTable::setUpdateTime ( JRMTIME  time)

set update time

Parameters
JRMTIMEtime
bool ssAtmosphericTable::timeChanged ( JRMTIME  time,
double  buffer_hrs = LOLIM 
)

compare times

Parameters
JRMTIMEtime
doublebuffer_hrs
Returns
bool
double* ssAtmosphericTable::getAltitudePtr ( )

get the pointer to altitude array

Returns
double
double* ssAtmosphericTable::getObjAltPtr ( )

get the pointer to object altitude array

Returns
double
double* ssAtmosphericTable::getSensAltPtr ( )

get the pointer to sensor altitude array

Returns
double
double* ssAtmosphericTable::getRangePtr ( )

get the pointer to range array

Returns
double
double* ssAtmosphericTable::getScatAnglePtr ( )

get the pointer to scat angle array

Returns
double pointer
void ssAtmosphericTable::getMetinAtmosphericsData ( double **  Trans,
double **  AbsorbTrans,
double **  PathRad,
double **  ScatRad,
double **  MScatRad 
)

get the pointers to m_metinX arrays

Returns
double array pointers
void ssAtmosphericTable::getSensorAtmosphericsData ( double **  Trans,
double **  AbsorbTrans,
double **  PathRad,
double **  ScatRad,
double **  MScatRad 
)

get the pointers to m_sensorX arrays

Returns
double array pointers
double* ssAtmosphericTable::getObjectScatData ( )

get the pointer to m_objectScatData

Returns
double pointer
double* ssAtmosphericTable::getObjectAmbientUpwelling ( )

get the pointer to m_objAmbientUpwelling

Returns
double pointer
double* ssAtmosphericTable::getObjectAmbientDownwelling ( )

get the pointer to m_objAmbientDownwelling

Returns
double pointer
float* ssAtmosphericTable::getAtmosphericData ( bool  spectralMode)

get the atmospheric data for rendering

Parameters
boolspectralMode
Returns
float
void ssAtmosphericTable::makeScatteringData ( bool  useSun = true,
bool  includeSky = true,
bool  includeEarth = true,
bool  includeStars = true 
)

Updates the scattering data used in building the atm texture lut.

int ssAtmosphericTable::makeScatteringDataSigSim ( bool  useSun = true,
bool  includeStars = true 
)

Updates the scattering data used in building the atm texture lut.

double* ssAtmosphericTable::getAmbientLightSourceData ( unsigned int  altitude = 0)

get the ambient light source data at a specific altitude index

Parameters
unsignedint altitude
Returns
double
double* ssAtmosphericTable::getDownwellLightSourceData ( unsigned int  altitude = 0)

get the downwelling diffuse light source data at a specific altitude index

Parameters
unsignedint altitude
Returns
double
double* ssAtmosphericTable::getUpwellLightSourceData ( unsigned int  altitude = 0)

get the upwelling diffuse light source data at a specific altitude index

Parameters
unsignedint altitude
Returns
double
double* ssAtmosphericTable::getDirectLightSourceData ( unsigned int  altitude = 0)

get the directional data at a specific altitude index

Parameters
unsignedint altitude
Returns
double
float* ssAtmosphericTable::getLightSourceData ( )

get the response data for rendering

Returns
float
float* ssAtmosphericTable::getSunDiskRadiance ( )

gets the spectral radiance for the sun disk at the top of atmosphere used to render the sun disk at the appropriate radiance level.

Returns
float *[unitless - irradiance W/cm2 scaled by PI and maxRadiance]
float* ssAtmosphericTable::getMoonDiskRadiance ( )

gets the spectral radiance for the moon disk at the top of atmosphere used to render the moon disk at the appropriate radiance level.

Returns
float *[unitless - irradiance W/cm2 scaled by PI and maxRadiance]
int ssAtmosphericTable::getNumberManMadeLights ( )
float* ssAtmosphericTable::getManMadeLightData ( )

gets the spectral radiance for all the defined man-made light source scaled by maxRadiance

table is organized as float lightData[numLights][bins] - single component

Returns
*float [unitless - radiance W/cm2/sr scaled by maxRadiance]
void ssAtmosphericTable::getIrradiance ( double  altitude,
double *  downwellIrradiance,
double *  upwellIrradiance,
double *  directIrradiance,
bool  useSun = true,
bool  includeSky = true,
bool  includeEarth = true,
bool  includeAmbient = true 
)

get the directional and ambient irradiance array for a sensor

Parameters
doublealtitude
double*ambientIrradiance
double*directIrradiance
void ssAtmosphericTable::computeDiffuseIrradiance ( double  altitude,
bool  includeSky,
bool  includeSunMoon,
bool  includeEarthshine 
)

get the diffuse irradiance array for a sensor

Parameters
doublealtitude
void ssAtmosphericTable::computeDiffuseSolarLunar ( double  altitude)

get the ambient irradiance array for a sensor

Parameters
doublealtitude
void ssAtmosphericTable::computeDiffuseLightSigSim ( double  altitude,
bool  includeSun,
bool  includeMoon,
bool  includeSky,
bool  includeEarth,
long  startindex,
long  endindex 
)
void ssAtmosphericTable::computeDiffuseEarthshine ( double  altitude)

get the diffuse Earthshine at given altitude

Parameters
doublealtitude
void ssAtmosphericTable::computeDiffuseSky ( double  altitude)

get the diffuse sky at given altitude

Parameters
doublealtitude
void ssAtmosphericTable::setAtmExtinctionScale ( float  scale)

set the atm extinction scale factor

Parameters
floatscale
float ssAtmosphericTable::getAtmExtinctionScale ( )

get the atm extinction scale factor

Returns
float
void ssAtmosphericTable::setAtmAmbientLightScale ( float  scale)

set the atm Ambient Light scale factor

Parameters
floatscale
float ssAtmosphericTable::getAtmAmbientLightScale ( )

get the atm Ambient Light scale factor

Returns
float
void ssAtmosphericTable::setAtmSkyScale ( float  scale)

set the atm sky scale factor to adjust the IR sky temperature

Parameters
floatscale
float ssAtmosphericTable::getAtmSkyScale ( )

get the atm sky scale factor to adjust the IR sky temperature

Returns
float
void ssAtmosphericTable::getRefractiveProfile ( double &  n0,
double &  h0 
)

get the refractive index base (n0 [1]) and exponent (h0 [km])

Returns
float
bool ssAtmosphericTable::isDirty ( )

returns true if the atmosphere lut needs to be updated

Returns
bool
void ssAtmosphericTable::setDirty ( )

indicate that atmosphere lut needs to be updated

void ssAtmosphericTable::clrDirty ( )

indicates that atmosphere texture luts have been updated

ssSensor* ssAtmosphericTable::getSensorPtr ( )

gets the ssSensor pointer associated with this table

void ssAtmosphericTable::setOriginalCode ( bool  onoff)

Reproduces code as of Sept.

2012

bool ssAtmosphericTable::getOriginalCode ( )

Find out whether to reproduce code as of Sept.

2012

void ssAtmosphericTable::setModRad ( bool  onoff)

Use Modtran/Radtran directly to fill LUTs (slow!!)

bool ssAtmosphericTable::getModRad ( )

Use Modtran/Radtran directly to fill LUTs (slow!!)

int ssAtmosphericTable::writeATMLUT ( char *  cacheDirectory,
char *  statefile 
)
int ssAtmosphericTable::readATMLUT ( char *  cacheDirectory,
char *  statefile 
)
int ssAtmosphericTable::rescaleATMLUT ( double  oldMaxRad,
double  newMaxRad 
)
int ssAtmosphericTable::writeENVLUT ( char *  cacheDirectory,
char *  statefile 
)
int ssAtmosphericTable::readENVLUT ( char *  cacheDirectory,
char *  statefile 
)
int ssAtmosphericTable::rescaleENVLUT ( double  oldMaxRad,
double  newMaxRad 
)
double ssAtmosphericTable::getLUTTODInterval ( )

get time interval inside which 2 LUTs for the same sensor & environment are considered sufficiently the same.

Returns
double : time interval [hrs]
void ssAtmosphericTable::setLUTTODInterval ( double  lut_tod_interval)

/** set time interval inside which 2 LUTs for the same sensor & environment are considered sufficiently the same.

Returns
double : time interval [hrs]
void ssAtmosphericTable::PreconditionZeniths ( double  Rg_m,
double  alt_m,
double *  mu,
double *  muh,
double *  mus 
)
double ssAtmosphericTable::BNgetUr ( double  alt_m,
double  n 
)
double ssAtmosphericTable::BNgetAlt ( double  Ur,
double  n 
)
double ssAtmosphericTable::BNgetUmu ( double  alt_m,
double  mu,
double  n 
)
double ssAtmosphericTable::BNgetMu ( double  alt_m,
double  Umu,
double  n 
)
void ssAtmosphericTable::ReturnMuSegments ( double  V[BNN_NMUSEGS],
BNNLUTPARMS  bnn,
double  muh,
double  mus 
)
double ssAtmosphericTable::MuSamplingDensityLinear ( BNNLUTPARMS  bnn,
double  mu,
double  muh,
double  mus 
)
double ssAtmosphericTable::BNgetUmuLinear ( double  mu,
double  muh,
double  mus,
BNNLUTPARMS  bnn 
)
double ssAtmosphericTable::BNgetMuLinear ( double  Umu,
double  muh,
double  mus,
BNNLUTPARMS  bnn 
)
double ssAtmosphericTable::MuSamplingDensityIntegralExponential ( double  mu,
double  mux,
double  devx 
)
double ssAtmosphericTable::MuSamplingDensityExponential ( BNNLUTPARMS  bnn,
double  mu,
double  muh,
double  mus 
)
double ssAtmosphericTable::BNgetUmuExponential ( double  mu,
double  muh,
double  mus,
BNNLUTPARMS  bnn 
)
double ssAtmosphericTable::BNgetMuExponential ( double  Umu,
double  muh,
double  mus,
BNNLUTPARMS  bnn 
)
double ssAtmosphericTable::BNgetUmus ( double  mu_s)
double ssAtmosphericTable::BNgetMus ( double  Umus)
double ssAtmosphericTable::BNgetUv ( double  v,
double  mu,
double  mus,
double  n 
)
double ssAtmosphericTable::BNgetV ( double  Uv,
double  mu,
double  mus,
double  n 
)
VECTOR ssAtmosphericTable::BNgetLook ( VECTOR  source,
double  viewdotsource,
double  viewdotup 
)
double ssAtmosphericTable::BNgetUv ( double  v,
double  n 
)
double ssAtmosphericTable::BNgetV ( double  Uv,
double  n 
)
VECTOR ssAtmosphericTable::BNgetLook ( VECTOR  source,
double  viewdotsource,
double  viewdotup 
)
void ssAtmosphericTable::setMBNATM ( bool  onoff)

if(m_OriginalCode==false), this flag turns on the Modified B&N atmospheric LUT processing.

bool ssAtmosphericTable::getMBNATM ( )

if(m_OriginalCode==false), this flag turns on the Modified B&N atmospheric LUT processing.

BNNLUTPARMS ssAtmosphericTable::GetBNNLUTPARMS ( void  )
float* ssAtmosphericTable::getXmitData ( )

get the atmospheric transmission data for rendering

Returns
float
float* ssAtmosphericTable::getPradData ( )

get the atmospheric pathrad data for rendering

Returns
float
float* ssAtmosphericTable::getSradData ( )

get the atmospheric single scatter data for rendering

Returns
float
float* ssAtmosphericTable::getMradData ( )

get the atmospheric multiple scatter data for rendering

Returns
float
float* ssAtmosphericTable::getMaxOptDepth ( )

get the atmospheric max optical depth for rendering

Returns
float
void ssAtmosphericTable::FreeArrays ( )
private
int ssAtmosphericTable::getLayer ( double  alt)
private

determines which layer contains the altitude passed in

Parameters
doublealt [m]
Returns
int
double ssAtmosphericTable::getAltitudeSample ( int  layer,
int  sample 
)
private

gets the altitude for a particular sample within a layer.

Parameters
intlayer
intsample
Returns
double - altitude [m]
double ssAtmosphericTable::getAltitudeDelta ( int  layer,
int  sample 
)
private

gets the altitude difference between a particular layer sample and the one immediately above it.

Parameters
intlayer
intsample
Returns
double - altitude delta [m]
void ssAtmosphericTable::getDataIndex ( double  alt,
int  layer,
unsigned int index 
)
private

determines what the data index is for the altitude passed in

Parameters
doublealt [m]
intlayer
unsignedint &index
void ssAtmosphericTable::getDataIndexFract ( double  alt,
int  layer,
unsigned int index,
double &  fract 
)
private

determines what the data index is for the altitude passed in

Parameters
doublealt [m]
intlayer
unsignedint &index
double&fract
void ssAtmosphericTable::makeSensorAltAtmData ( double  sensorAlt,
float *  AtmData,
double *  polarData 
)
private

creates a table of data for a sensor altitude

Parameters
doublesensorAlt
float*AtmData
double*polarData
void ssAtmosphericTable::initAtmosphericData ( )
private

init the atmospheric data arrays - this happens at the beginning of a line of sight.

void ssAtmosphericTable::convertMetinToSensor ( )
private

convert the metin data arrays to sensor data arrays

void ssAtmosphericTable::getSingleScattering ( double  objAltitude,
double *  sourceTOA,
double *  scatData 
)
private

get the data for scattering at a certain altitude SigSim routine: PhaseFunction

Parameters
doubleobjAltitude
double*sourceTOA
double*scatData
void ssAtmosphericTable::fillMultipleScattering ( VECTOR  source,
double *  sourceTOA,
bool  includeSky,
bool  includeEarth,
bool  includeStars 
)
private
void ssAtmosphericTable::getAmbientScattering ( double  objAltitude,
VECTOR  source,
double *  objMultiScatData,
double *  metinAmbientDownwelling,
double *  metinAmbientUpwelling 
)
private

Add to the arrays of ambient light due to multiple scattering, given point-to-TOA path data objMultiScatData[].

Parameters
doubleobjAltitude
VECTORsource
double*objMultiScatData
double*metinAmbientDownwelling
double*metinAmbientUpwelling
void ssAtmosphericTable::getAmbientScattering2 ( Datapoint objMultiScatData,
double *  metinAmbientDownwelling,
double *  metinAmbientUpwelling,
bool  includeSky 
)
private

Member Data Documentation

unsigned int ssAtmosphericTable::m_numSensorWaveLengths
private

number of sensor wavelength bins, depends on sensor

unsigned int ssAtmosphericTable::m_numMetinWaveLengths
private

number of metin wavelength bins

unsigned int ssAtmosphericTable::m_numberLayers
private

number of layers to use

unsigned int ssAtmosphericTable::m_numSamplesPerLayer
private

number of layers to use

unsigned int ssAtmosphericTable::m_numObjectAngles
private

number of object angles to use

unsigned int ssAtmosphericTable::m_numObjectAltitudes
private

number of object altitudes to use

unsigned int ssAtmosphericTable::m_numSensorAltitudes
private

number of sensor altitudes to use

unsigned int ssAtmosphericTable::m_numberTextureRanges
private

number of ranges to use for the texture table

unsigned int ssAtmosphericTable::m_numberScatAngles
private

number of scattering angles to use for the texture table

double ssAtmosphericTable::m_maxAltitude
private

maximum altitude in the texture map.

double ssAtmosphericTable::m_powAltitude
private

power of i/(n-1) for altitude indexing.

double ssAtmosphericTable::m_maxRange
private

maximum range in the texture map.

double ssAtmosphericTable::m_powRange
private

power of i/(n-1) for range indexing.

double ssAtmosphericTable::m_powDensity
private

power of -log(density) in the texture map.

float* ssAtmosphericTable::m_spectralAtmosphericData
private

compact atmospheric data for rendering use in spectral mode : index = m_numberComponents * (rangeindex + m_numberTextureRanges * (wavelengthindex + m_numSensorWaveLengths * objaltindex)) + componentindex.

float* ssAtmosphericTable::m_passbandAtmosphericData
private

compact atmospheric data for rendering use in (fast) passband mode : index = m_numberComponents * (rangeindex + m_numberTextureRanges * (objaltindex + m_numObjectAltitudes * sensaltindex)) + componentindex.

double* ssAtmosphericTable::m_ambientLightSource
private

spectral arrays for the combined source irradiances at each wavebin at the sensor resolution

double* ssAtmosphericTable::m_downwellLightSource
private
double* ssAtmosphericTable::m_upwellLightSource
private
double* ssAtmosphericTable::m_directLightSource
private
float* ssAtmosphericTable::m_lightSourceData
private

compact response data for rendering use : index = [objaltindex * m_numSensorWavelengths + wavelengthindex]*4 + componentindex

unsigned int ssAtmosphericTable::m_numberComponents
private

number of components in the ATM texture map.

float* ssAtmosphericTable::m_xmitData
private
float* ssAtmosphericTable::m_pradData
private
float* ssAtmosphericTable::m_sradData
private
float* ssAtmosphericTable::m_mradData
private
float* ssAtmosphericTable::m_maxOptDepth
private
double* ssAtmosphericTable::m_objAlt
private

explicit altitude & range arrays (used with MixedSigSimRT)

double* ssAtmosphericTable::m_sensAlt
private
double* ssAtmosphericTable::m_range
private
bool ssAtmosphericTable::m_useSun
private

use the sun for the lighting/atm calculations.

bool ssAtmosphericTable::m_useBothSunMoon
private

use the both the sun and moon for the lighting/atm calculations.

double ssAtmosphericTable::m_sensorAltitude
private

sensor altitude that was used to generate the spectral data

bool ssAtmosphericTable::m_spectralMode
private

true if spectral mode was last used to generate the table

bool ssAtmosphericTable::m_atmEnable
private

atm enable state that was used to generate the table

bool ssAtmosphericTable::m_scatterEnable
private

scatter enable state that was used to generate the table

bool ssAtmosphericTable::m_multiScatterEnable
private

multi scatter enable state that was used to generate the table

bool ssAtmosphericTable::m_roundEarth
private

round earth enable state that was used to generate the table

bool ssAtmosphericTable::m_useODLimit
private

switch to use optical depth restriction on max pathlength

double ssAtmosphericTable::m_maxRadiance
private

max radiance that was used to generate the table

JRMTIME ssAtmosphericTable::m_updateTime
private

time that was used to generate the table

METIN* ssAtmosphericTable::m_metin
private

pointer to the SigSim metin structure

ssSensor* ssAtmosphericTable::m_sensor
private

pointer to the sensor associated with this table.

double* ssAtmosphericTable::m_metinTrans
private

spectral arrays for the combined sensor Atmospherics at each wavebin : index < m_numMetinWaveLengths or exceptions below:

double* ssAtmosphericTable::m_metinAbsorbTrans
private
double* ssAtmosphericTable::m_metinPathRad
private
double* ssAtmosphericTable::m_metinScatter
private
double* ssAtmosphericTable::m_metinMultiScat
private
double* ssAtmosphericTable::m_sensorTrans
private
double* ssAtmosphericTable::m_sensorAbsorbTrans
private
double* ssAtmosphericTable::m_sensorPathRad
private
double* ssAtmosphericTable::m_sensorScatter
private
double* ssAtmosphericTable::m_sensorMultiScat
private
double* ssAtmosphericTable::m_altitude
private

array giving altitude for each layer : index < m_numberLayers

double* ssAtmosphericTable::m_scatAngles
private

array holding the cosine of the angles used for the scattering lut : index < m_numberScatAngles

double* ssAtmosphericTable::m_objectScatData
private

array holding scattering data for all object altitudes of the lut : index < m_numSamplesPerLayer * m_numberLayers * m_numMetinWaveLengths * m_numberScatAngles

double* ssAtmosphericTable::m_objAmbientUpwelling
private

array holding ambient light per object altitude generated from the multiple scattering data for fog color. : index < m_numSamplesPerLayer * m_numberLayers * m_numMetinWaveLengths

double* ssAtmosphericTable::m_objAmbientDownwelling
private

array holding ambient light per object altitude generated from the multiple scattering data for fog color. : index < m_numSamplesPerLayer * m_numberLayers * m_numMetinWaveLengths

float* ssAtmosphericTable::m_mmLightData
private

array of man-made light radiances : index < m_numSensorWaveLengths * m_metin->num_mm_lsources

float* ssAtmosphericTable::m_sunDiskData
private

array of sun disk radiances : index < m_numSensorWaveLengths

float* ssAtmosphericTable::m_moonDiskData
private

array of moon disk radiances : index < m_numSensorWaveLengths

int ssAtmosphericTable::m_startIndex
private

start index into the metin array for this sensor

int ssAtmosphericTable::m_endIndex
private

end index into the metin array for this sensor

double ssAtmosphericTable::m_ax
private

start wavelength for this sensor

double ssAtmosphericTable::m_bx
private

end wavelength for this sensor

float ssAtmosphericTable::m_atmExtinctionScale
private

scale factor to increase/decrease the extinction coefficients (fog)

float ssAtmosphericTable::m_atmAmbientLightScale
private

scale factor to increase/decrease the Ambient Light (fog color)

float ssAtmosphericTable::m_atmSkyScale
private

scale factor to increase/decrease tm sky scale factor to adjust the IR sky temperature

double ssAtmosphericTable::m_fogRatio
private

ratio to scale the path radiance to adjust the sky temperature to match the air temperature

bool ssAtmosphericTable::m_incremental
private
double ssAtmosphericTable::m_lut_tod_interval
private
double ssAtmosphericTable::m_n0
private
double ssAtmosphericTable::m_h0
private
bool ssAtmosphericTable::m_dirty
private

flag to determine if this atmospheric texture data needs to be updated.

bool ssAtmosphericTable::m_OriginalCode
private
bool ssAtmosphericTable::m_ModRad
private
bool ssAtmosphericTable::m_MBNATM
private

The documentation for this class was generated from the following file:


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