VR-Vantage 2.7 API Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
ssSensor.h
Go to the documentation of this file.
1 
2 // Copyright JRM Enterprises, Inc. 2004 - 2011
3 // All rights reserved.
4 //
5 // This code is the intellectual property of JRM Enterprises, Inc.
6 // It may not be used or released as source or compiled binary form
7 // without the prior written consent of JRM Enterprises, Inc.
8 //
9 // Original Author: Eric Olson Date: May 2004
11 
12 #ifndef _ssSensor_
13 #define _ssSensor_
14 
15 #include "ssdllexport.h"
16 
17 #include "SigSimStructs.h"
19 // class: ssSensor
26 {
27 public:
28 
30  //ssSensor
34  ssSensor();
35 
37  //~ssSensor
42  virtual ~ssSensor();
43 
45  //setBand
58  bool setBand(double lower, double upper, int numBins);
59 
61  //getBand
69  bool getBand(double &lower, double &upper, int &numBins);
70 
72  //getMinRadiance
82  double getMinRadiance() const;
83 
85  //getMaxRadiance
94  double getMaxRadiance() const;
95 
97  // getMinRange
106  double getMinRange() const;
107 
109  // getMaxRange
118  double getMaxRange() const;
119 
121  // getDisplayRange
125  double getDisplayRange();
126 
128  // ssSensor::setDisplayRange
132  void setDisplayRange(double range);
133 
135  // getMinWedgeExtent
142  double getMinWedgeExtent() { return m_minWedgeExtent; }
143 
145  // setMinWedgeExtent
153  void setMinWedgeExtent( double angle )
154  {
155  if( angle >= -360.0 && angle < m_maxWedgeExtent && angle < 360.0 )
156  m_minWedgeExtent = angle;
157  }
158 
160  // getMaxWedgeExtent
167  double getMaxWedgeExtent() { return m_maxWedgeExtent; }
168 
170  // setMaxWedgeExtent
176  void setMaxWedgeExtent( double angle)
177  {
178  if( angle > -360.0 && angle > m_minWedgeExtent && angle <= 360.0 )
179  m_maxWedgeExtent = angle;
180  }
181 
183  // getBacksweepState
188  bool getBacksweepState( ){ return m_enableBacksweep; }
189 
191  // setBacksweepState
196  void setBacksweepState( bool backsweep ){ m_enableBacksweep = backsweep; }
197 
199  // getOtwViewState
204  bool getOtwViewState(){ return m_showOtwView ;}
205 
207  // setOtwViewState
212  void setOtwViewState( bool show ){ m_showOtwView = show; }
213 
215  // getHeadingOffset
223  double getHeadingOffset(){ return m_headingOffset ;}
224 
226  // setHeadingOffset
235  void setHeadingOffset( double offset ){ m_headingOffset = offset; }
236 
238  //getMinVelocity
243  double getMinVelocity() const;
244 
246  //getMaxVelocity
251  double getMaxVelocity() const;
252 
253 
255  // getDownRangeResolution
262  double getDownrangeResolution() const;
263 
265  // getCrossrangeResolution
271  double getCrossrangeResolution();
272 
274  // setTerrainSlantRange
280  void setTerrainSlantRange(double slantRange);
281 
283  // getTerrainSlantRange
289  double getTerrainSlantRange();
290 
291 
293  //setMinMaxTemp
301  bool setMinMaxTemp(double minTemp, double maxTemp);
302 
304  //getMinTemp
310  double getMinTemp();
311 
313  //getMaxTemp
319  double getMaxTemp();
320 
322  //setMaxLightLevel
328  void setMaxLightLevel(double maxLightLevel);
329 
331  //getMaxLightLevel
337  const double getMaxLightLevel();
338 
339 
341  //getMaxPower
347  const double getMaxPower();
348 
349 
351  //getNumberWavelengths
356  unsigned int getNumberWavelengths();
357 
359  //*getWavelengthsArray
367  double *getWavelengthsArray();
368 
370  //getWavelength
376  double getWavelength(int i);
377 
379  //setBandpass
393  bool setBandpass(double ax, double bx, double dx);
394 
396  //getBandpass
403  bool getBandpass(double &ax, double &bx, double &dx);
404 
406  //setPemitterW
411  bool setPemitterW(double PemitterW);
412 
414  //getPemitterW
419  double getPemitterW();
420 
422  //setTransmitterGain
427  bool setTransmitterGain(double AntGain);
428 
430  //getTransmitterGain
435  double getTransmitterGain();
436 
438  //setReceiverGain
443  bool setReceiverGain(double AntGain);
444 
446  //getReceiverGain
451  double getReceiverGain();
452 
454  //setSysTempK
459  bool setSysTempK(double degK);
460 
462  //getSysTempK
467  double getSysTempK();
468 
470  //setFCemitterHz
475  bool setFCemitterHz(double FCemitterHz);
476 
477 
479  //setFCemitterWavelength
484  bool setFCemitterWavelength(double wavelength); // [m]
485 
487  //getFCemitterHz
492  double getFCemitterHz();
493 
495  //getFCemitterWavelength
500  double getFCemitterWavelength(); // [m]
501 
503  //getBWemitterHz
508  double getBWemitterHz() const;
509 
511  //setChannelResolutionHz
516  bool setChannelResolutionHz(double ChannelResolutionHz);
517 
519  //getChannelResolutionHz
524  double getChannelResolutionHz();
525 
527  //setPulseWidth
532  bool setPulseWidth(double PulseWidth);
533 
535  //getPulseWidth
540  double getPulseWidth();
541 
543  //setPRF
548  bool setPRF(double PRF);
549 
551  //getPRF
556  double getPRF();
557 
559  //setNFPRF
564  bool setNFPRF(double PRF);
565 
567  //getNFPRF
572  double getNFPRF();
573 
575  //setTransmitterPolarizationAngle
580  bool setTransmitterPolarizationAngle(double PolarizationAngle_deg);
581 
583  //getTransmitterPolarizationAngle
588  double getTransmitterPolarizationAngle();
589 
591  //setReceiverPolarizationAngle
596  bool setReceiverPolarizationAngle(double PolarizationAngle_deg);
597 
599  //getReceiverPolarizationAngle
604  double getReceiverPolarizationAngle();
605 
607  //setBeamWidth
612  bool setBeamWidth(double mrad);
613 
615  //getBeamWidth
620  double getBeamWidth();
621 
623  //setGainPattern
628  void setGainPattern(int pattern);
629 
631  //getGainPattern
636  const int getGainPattern();
637 
639  //setDisplayType
644  void setDisplayType(int type);
645 
647  //getDisplayType
652  const int getDisplayType();
653 
654 
656  // setTAprops
668  bool setTAprops(double ThreshDetect, double ThreshClassify, double ThreshRecognize, double ThreshIdentify, double PersistenceTime);
669 
671  // getTAprops
683  bool getTAprops(double &ThreshDetect, double &ThreshClassify, double &ThreshRecognize, double &ThreshIdentify, double &PersistenceTime);
684 
686  // ssSensor::setSaturationRatio
692  void setSaturationRatio(double satRatio);
693 
695  // ssSensor::getSaturationRatio
699  double getSaturationRatio();
700 
702  // ssSensor::getRadarIFOVNoisePower
706  double getRadarIFOVNoisePower();
707 
709  // ssSensor::getRadarReceiverArea()
713  double getRadarReceiverArea();
714 
715  // ssSensor::getRadarIFOVNominalReturnPower
722  double getRadarIFOVNominalReturnPower();
723 
725  //isVisualBand
730  bool isVisualBand();
731 
733  //isNearIRBand
739  bool isNearIRBand();
740 
742  //isLongWaveBand
747  bool isLongWaveBand();
748 
750  //isRadarBand
756  bool isRadarBand();
757 
759  //isLadar
764  bool isLadar();
765 
766 
768  //getSensorSelect
773  void getSensorSelect(float &w1, float &w2, float &w3, float &visSensor);
774 
776  //setNumberSamples
782  void setNumberSamples(unsigned int hsamples, unsigned int vsamples);
783 
785  //setNumberHorizontalSamples
790  void setNumberHorizontalSamples(unsigned int hsamples);
791 
793  //getNumberHorizontalSamples
798  unsigned int getNumberHorizontalSamples();
799 
801  //setNumberVerticalSamples
806  void setNumberVerticalSamples(unsigned int vsamples);
807 
809  //getNumberVerticalSamples
814  unsigned int getNumberVerticalSamples();
815 
817  //setFOV
823  void setFOV(double horizontalFOV, double verticalFOV);
824 
826  //getFOV
832  void getFOV(double &horizontalFOV, double &verticalFOV);
833 
835  //getType
856  int getType();
857 
859  //getUniqueID
865  int getUniqueID();
866 
868  //setUniqueID
876  void setUniqueID(int id);
877 
879  //*getPlanckIntegralTable
888  float *getPlanckIntegralTable();
889 
891  //setMaximumPlanckTableTemperature
896  void setMaximumPlanckTableTemperature(int max);
897 
899  //getMaximumPlanckTableTemperature
904  int getMaximumPlanckTableTemperature();
905 
907  //setNumberPlanckTableTemperatures
912  void setNumberPlanckTableTemperatures(unsigned int num);
913 
915  //getNumberPlanckTableTemperatures
920  unsigned int getNumberPlanckTableTemperatures();
921 
923  //getAutoMaxTemperature
928  double getAutoMaxTemperature();
929 
931  //getAutoMinTemperature
936  double getAutoMinTemperature();
937 
939  //getAutoMaxDiurnalLight
945  double getAutoMaxDiurnalLight();
946 
948  //getAutoMinDiurnalLight
954  double getAutoMinDiurnalLight();
955 
957  //isAutoRadianceScale
962  bool isAutoRadianceScale();
963 
965  //setAutoRadianceScale
970  void setAutoRadianceScale(bool flag);
971 
973  //isDirty
979  bool isDirty();
980 
982  //isTimeChanged
987  bool isTimeChanged();
988 
990  //setGeocentricLocation
997  void setGeocentricLocation(
998  double x,
999  double y,
1000  double z);
1001 
1003  //getGeocentricLocation
1010  void getGeocentricLocation(
1011  double &x,
1012  double &y,
1013  double &z);
1014 
1016  //setGeodeticLocation
1023  void setGeodeticLocation(
1024  double lat,
1025  double lon,
1026  double alt);
1027 
1029  //getGeodeticLocation
1036  void getGeodeticLocation(
1037  double &lat,
1038  double &lon,
1039  double &alt);
1040 
1042  //setOrientation
1049  void setOrientation(
1050  double h,
1051  double p,
1052  double r);
1053 
1055  //getOrientation
1062  void getOrientation(
1063  double &h,
1064  double &p,
1065  double &r);
1066 
1067 
1069  //setLinearVelocity
1076  void setLinearVelocity(double e,
1077  double n,
1078  double u);
1079 
1081  //getLinearVelocity
1088  void getLinearVelocity(double &e,
1089  double &n,
1090  double &u);
1091 
1093  //setLinearAcceleration
1100  void setLinearAcceleration(double e,
1101  double n,
1102  double u);
1103 
1105  //getLinearAcceleration
1112  void getLinearAcceleration(double &e,
1113  double &n,
1114  double &u);
1115 
1117  //setAngularVelocity
1125  void setAngularVelocity(double e,
1126  double n,
1127  double u);
1128 
1130  //getAngularVelocity
1138  void getAngularVelocity(double &e,
1139  double &n,
1140  double &u);
1141 
1144 
1150  void setFRDAngularVelocity(double y,
1151  double p,
1152  double r);
1153 
1156 
1162  void getFRDAngularVelocity(double &y,
1163  double &p,
1164  double &r);
1165 
1167  // setSpotfile
1172  void setSpotfile(char *filename);
1173 
1174 
1176  // getSpotfile
1181  char *getSpotfile();
1182 
1184  //setAngularAcceleration
1192  void setAngularAcceleration(double e,
1193  double n,
1194  double u);
1195 
1197  //getAngularAcceleration
1205  void getAngularAcceleration(double &e,
1206  double &n,
1207  double &u);
1208 
1210  //convertRUB2NED
1218  void convertRUB2NED(int hpix, int vpix, float range, float *vector);
1219 
1221  // setTrack
1227  void setTrack(TRACK *track, int numTracks);
1228 
1230  // setTrackfileUpdate
1236  void setTrackfileUpdate(double simTime, ::ellipsoid *ellipsoid);
1237 
1239  //computePlanckIntegral
1249  double computePlanckIntegral (double lowerWaveLength,
1250  double upperWaveLength,
1251  double temperature);
1252 
1254  //computePlanckIntegral
1262  double computePlanckIntegral (double temperature);
1263 
1265  //getGain
1270  double getGain();
1271 
1273  //getLevel
1278  double getLevel();
1279 
1281  //setGain
1286  void setGain(double gain);
1287 
1289  //setLevel
1294  void setLevel(double level);
1295 
1296 
1298  //*getName
1303  char *getName();
1304 
1305 
1307  //setName
1312  void setName(const char *name);
1313 
1315  //*getSensorPtr
1325  SENSOR *getSensorPtr();
1326 
1328  //setSensorPtr
1333  void setSensorPtr(SENSOR *sensorPtr);
1334 
1336  //setWorldLocation
1344  void setWorldLocation(double x, double y, double z);
1345 
1347  //getWorldLocation
1355  void getWorldLocation(double& x, double& y, double& z);
1356 
1358  //setSarReprojection
1363  void setSarReprojection(bool flag);
1364 
1366  //getSarReprojection
1371  bool getSarReprojection();
1372 
1374  //isSar
1379  bool isSar();
1380 
1382  //isIsar
1387  bool isIsar();
1388 
1390  //isPpi
1395  bool isPpi();
1396 
1398  //isDopplerColoring
1402  bool isDopplerColoring();
1403 
1405  //setDopplerColoring
1409  void setDopplerColoring(bool state);
1410 
1412  //isDopplerSpatialEffects
1416  bool isDopplerSpatialEffects();
1417 
1419  //setDopplerSpatialEffects
1423  void setDopplerSpatialEffects(bool state);
1424 
1426  //setSarBoresightROI
1435  void setSarBoresightROI(double x, double y, double width, double height);
1436 
1438  //getSarBoresightROI
1447  void getSarBoresightROI(double &x, double &y, double &width, double &height);
1448 
1450  //setSarIntegrationPathlength
1455  void setSarIntegrationPathlength(double length);
1456 
1458  //getSarIntegrationPathlength
1463  double getSarIntegrationPathlength();
1464 
1466  //setSarShadowOrientationDown
1471  void setSarShadowOrientationDown(bool flag);
1472 
1474  //getSarShadowOrientationDown
1479  bool getSarShadowOrientationDown();
1480 
1482  //setRadarIFOVSolidAngle
1487  void setRadarIFOVSolidAngle(double ifovsr);
1488 
1490  //getRadarIFOVSolidAngle
1495  double getRadarIFOVSolidAngle();
1496 
1498  //setIsarIntegrationTime
1503  void setIsarIntegrationTime(double time);
1504 
1506  //getIsarIntegrationTime
1511  double getIsarIntegrationTime();
1512 
1514  //getIntensityModulationGain
1519  double getIntensityModulationGain();
1520 
1522  //setIntensityModulationGain
1527  void setIntensityModulationGain(double imodGain);
1528 
1530  //setNumSpectralBins
1535  void setNumSpectralBins(int sbins);
1536 
1538  //getNumSpectralBins
1543  int getNumSpectralBins();
1544 
1545 private:
1546 
1548  //initialize
1553  bool initialize();
1554 
1555 
1557  //setAutoMaxTemperature
1562  void setAutoMaxTemperature(double temp);
1563 
1565  //setAutoMinTemperature
1570  void setAutoMinTemperature(double temp);
1571 
1573  //setAutoMaxDiurnalLight
1579  void setAutoMaxDiurnalLight(double light);
1580 
1582  //setAutoMinDiurnalLight
1588  void setAutoMinDiurnalLight(double light);
1589 
1591  //recomputeMinMaxRadiance
1597  void recomputeMinMaxRadiance();
1598 
1599 
1601  //recomputeMinMaxRange
1607  void recomputeMinMaxRange();
1608 
1610  // ssSensor::recomputeMinMaxVelocity
1611  //
1612  // description: recomputes the min and max velocity
1613  //
1614  void recomputeMinMaxVelocity();
1615 
1617  //updatePlanckIntegralTable
1622  void updatePlanckIntegralTable();
1623 
1625  //degreesToMilliradians
1631  double degreesToMilliradians(double deg);
1632 
1634  //clrTimeChanged
1638  void clrTimeChanged();
1639 
1641  //setTimeChanged
1645  void setTimeChanged();
1646 
1648  //clrDirty
1652  void clrDirty();
1653 
1655  //setDirty
1659  void setDirty();
1660 
1661 
1663  int m_id;
1664 
1666  double m_minRange; // Meters
1668  double m_maxRange; // Meters
1670  double m_minVel; // [m/s]
1672  double m_maxVel; // [m/s]
1673 
1675  double m_minRadiance; // [W/cm2/sr]
1677  double m_maxRadiance; // [W/cm2/sr]
1684  unsigned int m_numTemperatures;
1687 
1690 
1696  double m_maxDiurnalLight; // [W/cm2]
1698  double m_minDiurnalLight; // [W/cm2]
1702  bool m_dirty;
1709  double m_pEmitterW;
1711  double m_sysTempK;
1713  double m_maxPower;
1715  double m_satRatio;
1722 
1724  char m_spotFilepath[512];
1725 
1729 
1730  // Sar projection
1732 
1733  // SAR Boresight ROI
1738  // SAR Path length
1740  // terrain slant range used for SAR
1742  // ISAR integration time
1744 
1745  double m_ifovsr; // [sr] sampling ifov solid angle
1746 
1747  // SAR shadow orientation
1749 
1750  int m_gainPattern; // For radar modes: 0=Unity, 1=Lobe, 2=Rect
1751  int m_displayType; // For radar modes: 0=radiance, 1=power, 2=effective RCS
1752 
1753  //ppi mode display params
1760 
1762 
1764 
1765  // For generating the unique id
1766  static int s_sensorId;
1767 
1768  friend class SigSimRT;
1769  friend class ssRadar;
1770  friend class ssEnvironment;
1771  friend class ssMaterialSet;
1772  friend class ssAtmosphericTable;
1773  //friend class MixedSigSimRT; // CF091221 : Not ready yet for ATM LUT merging code.
1774 
1775 };
1776 
1777 #endif // _ssSensor_
1778 


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