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

Public Member Functions

 ssAtmosphericTable ()
 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)
 Set all the table flags that are used.
void makeSensorAtmosphericData ()
 Updates the sensor atmospheric data tables for use as texture.
void makeLightSourceData ()
 Updates the sensor light source data tables for use as texture.
void makeLightSourceDataSigSim ()
 Updates the sensor light source data tables for use as texture.
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 ()
 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 atmospheric layers
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
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
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)
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
double getMaxRadiance ()
 get max radiance
JRMTIME getUpdateTime ()
 get time when lut was generated.
void setUpdateTime (JRMTIME time)
 set update time
bool timeChanged (JRMTIME time)
 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 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 * getDiffuseLightSourceData (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)
 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 computeDiffuseSky (double altitude)
 get the diffuse sky
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
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
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)
double BNgetUmus (double mu_s)
double BNgetMus (double Umus)
double BNgetUv (double v, double n)
double BNgetV (double Uv, double n)
VECTOR BNgetLook (VECTOR source, double viewdotsource, double viewdotup)
void makePolarATMLUTs ()
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
void setOriginalCode (bool onoff)
 Reproduces code as of Sept.
bool getOriginalCode ()
 Find out whether to reproduce code as of Sept.
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.

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.
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, double rangeFactor, double sourceRange, double sourceAlt, 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[].

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_maxRange
 maximum range 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.
ssBuffer< 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_diffuseLightSource
ssBuffer< float > m_lightSourceData
 compact response data for rendering use : index = [objaltindex * m_numSensorWavelengths + wavelengthindex]*4 + componentindex
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
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
ssBuffer< 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
bool m_dirty
 flag to determine if this atmospheric texture data needs to be updated.
bool m_OriginalCode
bool m_MBNATM

Constructor & Destructor Documentation

ssAtmosphericTable::ssAtmosphericTable ( )

constructor

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 
)

Set all the table flags that are used.

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

Updates the sensor atmospheric data tables for use as texture.

void ssAtmosphericTable::makeLightSourceData ( )

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

void ssAtmosphericTable::makeLightSourceDataSigSim ( )

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

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 ( )

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 atmospheric layers

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
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
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
void ssAtmosphericTable::setSensorAltitude ( double  alt)
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
double ssAtmosphericTable::getMaxRadiance ( )

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)

compare times

Parameters
JRMTIMEtime
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  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::getDiffuseLightSourceData ( 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 
)

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::computeDiffuseSky ( double  altitude)

get the diffuse sky

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
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

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 
)
double ssAtmosphericTable::BNgetUmus ( double  mu_s)
double ssAtmosphericTable::BNgetMus ( double  Umus)
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::makePolarATMLUTs ( )
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::setOriginalCode ( bool  onoff)

Reproduces code as of Sept.

2012

bool ssAtmosphericTable::getOriginalCode ( )

Find out whether to reproduce code as of Sept.

2012

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.

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

determines which layer contains the altitude passed in

Parameters
doublealt
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
void ssAtmosphericTable::getDataIndex ( double  alt,
int  layer,
unsigned int index 
)
private

determines what the data index is for the altitude passed in

Parameters
doublealt
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
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,
double  rangeFactor,
double  sourceRange,
double  sourceAlt,
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

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_maxRange
private

maximum range 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.

ssBuffer<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_diffuseLightSource
private
ssBuffer<float> ssAtmosphericTable::m_lightSourceData
private

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

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

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

ssBuffer<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
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_MBNATM
private

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


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