VR-Vantage 3.1 API Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties 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 "ssIncAll.h"
18 #include "platform.h" //QueryPerformanceCounter
19 
20 class ssRadarSymbology;
22 // class: ssSensor
29 {
30 public:
31 
33  //ssSensor
37  ssSensor();
38 
40  //ssSensor
44  ssSensor(const ssSensor &old_sensor);
45 
47  //ssSensor
51  ssSensor& operator= (const ssSensor &obj);
52 
54  //~ssSensor
59  virtual ~ssSensor();
60 
62  //setBand
75  bool setBand(double lower, double upper, int numBins);
76 
78  //getBand
86  bool getBand(double &lower, double &upper, int &numBins);
87 
89  //getMinRadiance
99  double getMinRadiance() const;
100 
102  //getMaxRadiance
111  double getMaxRadiance() const;
112 
114  // getMinRange
123  double getMinRange() const;
124 
126  // getMaxRange
135  double getMaxRange() const;
136 
138  // getDisplayRange
142  double getDisplayRange();
143 
145  // getPPIcurrentTime
149  double getPPIcurrentTime(){return m_time;};
150 
152  // setDisplayRange
156  void setDisplayRange(double range);
157 
159  // getMaxRadarRangeScale
163  double getMaxRadarRangeScale();
164 
166  // setMaxRadarRangeScale
170  void setMaxRadarRangeScale(double scale);
171 
173  // getMinWedgeExtent
180  double getMinWedgeExtent() { return m_minWedgeExtent; }
181 
183  // setMinWedgeExtent
191  void setMinWedgeExtent( double angle );
192 
194  // getMaxWedgeExtent
201  double getMaxWedgeExtent() { return m_maxWedgeExtent; }
202 
204  // setMaxWedgeExtent
210  void setMaxWedgeExtent( double angle);
211 
213  // getActiveSectorWidth
220  double getActiveSectorWidth() { return m_activeSectorWidth; }
221 
223  // setActiveSectorWidth
229  void setActiveSectorWidth( double angle);
230 
232  // getMinCurScanExtent
239  double getMinCurScanExtent() { return m_minCurScanExtent; }
240 
242  // getMaxCurScanExtent
249  double getMaxCurScanExtent() { return m_maxCurScanExtent; }
250 
251 
253  // getPrevMinCurScanExtent
260  double getPrevMinCurScanExtent() { return m_prevMinCurScanExtent; }
261 
263  // getPrevMaxCurScanExtent
270  double getPrevMaxCurScanExtent() { return m_prevMaxCurScanExtent; }
271 
273  // getBacksweepState
278  bool getBacksweepState( ){ return m_enableBacksweep; }
279 
281  // setBacksweepState
286  void setBacksweepState( bool backsweep ){ m_enableBacksweep = backsweep; }
287 
289  // getStripAngleSize()
294  double getStripAngleSize();
295 
296 
298  // getPPIminVertAngle
302  double getPPIminVertAngle( ){ return m_minVertAngle; }
303 
305  // PPIscanControl
309  void PPIscanControl();
310 
311 
313  // getPrevStripAngleSize()
318  double getPrevStripAngleSize(){ return m_prevStripAngleSize;}
319 
320 
322  // getPrevHeadingOffset()
327  double getPrevHeadingOffset(){ return m_prevHeadingOffset;}
328 
330  // getPrevRadarVertFOV()
335  double getPrevRadarVertFOV(){ return m_prevRadarVertFOV;}
336 
337 
339  // getPrevMinVertAngle()
344  double getPrevMinVertAngle(){ return m_prevMinVertAngle;}
345 
347  // getOtwViewState
352  bool getOtwViewState(){ return m_showOtwView ;}
353 
355  // setOtwViewState
360  void setOtwViewState( bool show ){ m_showOtwView = show; }
361 
363  // getSweepDoneFlag
368  bool getSweepDoneFlag(){ return m_sweepDoneFlag;}
369 
371  // setSweepDoneFlag
376  void setSweepDoneFlag(bool flag){ m_sweepDoneFlag = flag;}
377 
379  // getLastStripFlag
384  bool getLastStripFlag(){ return m_lastStripFlag;}
385 
387  // getHeadingOffset
395  double getHeadingOffset(){ return m_headingOffset ;}
396 
398  // setHeadingOffset
407  void setHeadingOffset( double offset ){m_prevHeadingOffset = m_headingOffset; m_headingOffset = offset; }
408 
410  // getPitchOffset
418  double getPitchOffset(){ return m_pitchOffset ;}
419 
421  // setPitchOffset
430  void setPitchOffset( double offset ){ m_pitchOffset = offset; }
431 
433  // getRadarVertFOV
440  double getRadarVertFOV(){ return m_radarVertFOV ;}
441 
443  // setRadarVertFOV
451  void setRadarVertFOV( double fov ){ m_prevRadarVertFOV = m_radarVertFOV; m_radarVertFOV = fov; }
452 
454  // getRadarAspectRatio
461  double getRadarAspectRatio(){ return m_radarAspectRatio ;}
462 
464  // setRadarAspectRatio
472  void setRadarAspectRatio( double ratio ){ m_radarAspectRatio = ratio; }
473 
475  // getMinVertAngle
482  double getMinVertAngle(){ return m_minVertAngle ;}
483 
485  // setMinVertAngle
493  void setMinVertAngle( double angle ){ m_prevMinVertAngle = m_minVertAngle; m_minVertAngle = angle; }
494 
496  // isPPIresetMode
503  bool isPPIresetMode(){ return m_PPIresetMode ;}
504 
506  // setPPIresetMode
513  void setPPIresetMode( bool flag ){ m_PPIresetMode = flag; }
514 
516  // getPPIOverrideReset
521  bool getPPIOverrideReset() const
522  {
523  return m_overrideReset;
524  }
525 
527  // resetPPIOverride
532  void resetPPIOverride()
533  {
534  m_overrideReset = false;
535  }
536 
538  // setPPIDisplayOffsetScale
547  void setPPIDisplayOffsetScale(int offsetWidth = 0, int offsetHeight = 0, float scaleWidth = 1.0f, float scaleHeight = 1.0f)
548  {
549  m_PPIoffsetWidth = offsetWidth;
550  m_PPIoffsetHeight = offsetHeight;
551  m_PPIscaleWidth = scaleWidth;
552  m_PPIscaleHeight = scaleHeight;
553  }
554 
556  // getPPIDisplayOffsetScale
565  void getPPIDisplayOffsetScale(int &offsetWidth, int &offsetHeight, float &scaleWidth, float &scaleHeight)
566  {
567  offsetWidth = m_PPIoffsetWidth;
568  offsetHeight = m_PPIoffsetHeight;
569  scaleWidth = m_PPIscaleWidth;
570  scaleHeight = m_PPIscaleHeight;
571  }
572 
574  // setDBScenter
581  void setDBScenter(double centerX, double centerY);
582 
584  // getStripBufferSize
592  void getStripBufferSize(int &crossRangeSize, int &downRangeSize)
593  {
594  downRangeSize = m_downRangeBinSize;
595  crossRangeSize = m_crossRangeBinSize;
596  }
597 
599  // getPrevStripBufferSize
607  void getPrevStripBufferSize(int &crossRangeSize, int &downRangeSize)
608  {
609  downRangeSize = m_prevDownRangeBinSize;
610  crossRangeSize = m_prevCrossRangeBinSize;
611  }
612 
614  // getDBScenter
622  void getDBScenter(double &centerX, double &centerY)
623  {
624  centerX = m_DBScenterX;
625  centerY = m_DBScenterY;
626  }
627 
629  // setGMTIMode
641  void setGMTIMode(int mode);
642 
644  // getGMTIMode
656  int getGMTIMode() const
657  {
658  return m_gmtiMode;
659  }
660 
662  // setGMTITrackFilterMode
673  void setGMTITrackFilterMode(int mode)
674  {
675  m_gmtiTrackFilterMode = mode;
676  }
677 
679  // getGMTITrackFilterMode
690  int getGMTITrackFilterMode() const
691  {
692  return m_gmtiTrackFilterMode;
693  }
694 
696  // setGMTITrackFilterID
703  void setGMTITrackFilterID(int id)
704  {
705  m_gmtiTrackFilterID = id;
706  }
707 
709  // getGMTITrackFilterID
716  int getGMTITrackFilterID() const
717  {
718  return m_gmtiTrackFilterID;
719  }
720 
722  // setScaleMTItargetIndicators
728  void setScaleMTItargetIndicators(double x, double y)
729  {
730  m_mtiScaleX = x;
731  m_mtiScaleY = y;
732  }
733 
735  // getScaleMTItargetIndicators
741  void getScaleMTItargetIndicators(double &x, double &y) const
742  {
743  x = m_mtiScaleX;
744  y = m_mtiScaleY;
745  }
746 
748  // getPPIorientation
755  double getPPIorientation(){return m_PPIorientation; }
756 
758  // setPPIorientation
766  void setPPIorientation( double angle ){m_PPIorientation = angle; }
767 
768 
769 
771  // getPPIWedgeParameters
780  void getPPIWedgeParameters(double &offsetX, double &offsetY, double &scaleX, double &scaleY)
781  {
782  offsetX = m_wedgeOffsetX;
783  offsetY = m_wedgeOffsetY;
784  scaleX = m_wedgeScaleX;
785  scaleY = m_wedgeScaleY;
786  }
787 
788 
790  // getPrevPPIWedgeParameters
799  void getPrevPPIWedgeParameters(double &offsetX, double &offsetY, double &scaleX, double &scaleY)
800  {
801  offsetX = m_prevWedgeOffsetX;
802  offsetY = m_prevWedgeOffsetY;
803  scaleX = m_prevWedgeScaleX;
804  scaleY = m_prevWedgeScaleY;
805  }
806 
807 
809  // setPPIRangeRingRenderEnable
815  void setPPIRangeRingRenderEnable(bool enable)
816  {
817  m_PPIrangeRingRenderEnable = enable;
818  }
819 
821  // getPPIRangeRingRenderEnable
827  bool getPPIRangeRingRenderEnable() const
828  {
829  return m_PPIrangeRingRenderEnable;
830  }
831 
833  // setPPIArcRingRenderEnable
839  void setPPIArcRingRenderEnable(bool enable)
840  {
841  m_PPIarcRingRenderEnable = enable;
842  }
843 
845  // getPPIArcRingRenderEnable
851  bool getPPIArcRingRenderEnable() const
852  {
853  return m_PPIarcRingRenderEnable;
854  }
855 
857  // setPPIRadarArmSweepRenderEnable
863  void setPPIRadarArmSweepRenderEnable(bool enable)
864  {
865  m_PPIradarArmSweepRenderEnable = enable;
866  }
867 
869  // getPPIRadarArmSweepRenderEnable
875  bool getPPIRadarArmSweepRenderEnable() const
876  {
877  return m_PPIradarArmSweepRenderEnable;
878  }
879 
881  // setPPIRadarCursorEnable
887  void setPPIRadarCursorEnable(bool enable)
888  {
889  m_PPIradarCursorEnable = enable;
890  }
891 
893  // getPPIRadarCursorEnable
899  bool getPPIRadarCursorEnable() const
900  {
901  return m_PPIradarCursorEnable;
902  }
903 
905  // setPPIRadarReturnColor
913  void setPPIRadarReturnColor(float red = 0.0f, float green = 1.0f, float blue = 0.0f)
914  {
915  m_PPIrenderColorR = (float)Croplohi(red, 0.0, 1.0);
916  m_PPIrenderColorG = (float)Croplohi(green, 0.0, 1.0);
917  m_PPIrenderColorB = (float)Croplohi(blue, 0.0, 1.0);
918  }
919 
921  // getPPIRadarReturnColor
930  void getPPIRadarReturnColor(float &red, float &green, float &blue)
931  {
932  red = m_PPIrenderColorR;
933  green = m_PPIrenderColorG;
934  blue = m_PPIrenderColorB;
935  }
936 
938  // setPPISARTRadarColor
946  void setPPISARTRadarColor(float red = 0.0f, float green = 1.0f, float blue = 0.0f)
947  {
948  m_PPISARTColorR = (float)Croplohi(red, 0.0, 1.0);
949  m_PPISARTColorG = (float)Croplohi(green, 0.0, 1.0);
950  m_PPISARTColorB = (float)Croplohi(blue, 0.0, 1.0);
951  }
952 
954  // getPPISARTRadarColor
963  void getPPISARTRadarColor(float &red, float &green, float &blue)
964  {
965  red = m_PPISARTColorR;
966  green = m_PPISARTColorG;
967  blue = m_PPISARTColorB;
968  }
969 
971  // setPPITurbulenceRadarColor
979  void setPPITurbulenceRadarColor(float red = 1.0f, float green = 0.0f, float blue = 0.0f)
980  {
981  m_PPIturbulenceColorR = (float)Croplohi(red, 0.0, 1.0);
982  m_PPIturbulenceColorG = (float)Croplohi(green, 0.0, 1.0);
983  m_PPIturbulenceColorB = (float)Croplohi(blue, 0.0, 1.0);
984  }
985 
987  // getPPITurbulenceRadarColor
996  void getPPITurbulenceRadarColor(float &red, float &green, float &blue)
997  {
998  red = m_PPIturbulenceColorR;
999  green = m_PPIturbulenceColorG;
1000  blue = m_PPIturbulenceColorB;
1001  }
1002 
1004  // setPPIRangeRingArmSweepLineWidth
1010  void setPPIRangeRingArmSweepLineWidth(float width = 1.0f)
1011  {
1012  m_PPIlineWidth = width;
1013  }
1014 
1016  // getPPIRangeRingArmSweepLineWidth
1022  float getPPIRangeRingArmSweepLineWidth() const
1023  {
1024  return m_PPIlineWidth;
1025  }
1026 
1028  // setDBSSectorCorralArea
1034  void setDBSSectorCorralArea(float llx, float lly, float lrx, float lry, float urx, float ury, float ulx, float uly);
1035 
1037  // getDBSSectorCorralArea
1043  void getDBSSectorCorralArea(float &llx, float &lly, float &lrx, float &lry, float &urx, float &ury, float &ulx, float &uly);
1044 
1046  // setDBSPatchCorralArea
1052  void setDBSPatchCorralArea(float llx, float lly, float lrx, float lry, float urx, float ury, float ulx, float uly);
1053 
1055  // getDBSPatchCorralArea
1061  void getDBSPatchCorralArea(float &llx, float &lly, float &lrx, float &lry, float &urx, float &ury, float &ulx, float &uly);
1062 
1064  // setMRSARCorralArea
1070  void setMRSARCorralArea(float llx, float lly, float lrx, float lry, float urx, float ury, float ulx, float uly);
1071 
1073  // getMRSARCorralArea
1079  void getMRSARCorralArea(float &llx, float &lly, float &lrx, float &lry, float &urx, float &ury, float &ulx, float &uly);
1080 
1082  // getDBSSymbologyData
1089  void getDBSSymbologyData(double &angleExtent, double &centerX, double &centerY, double &sectorWidth, double &coverWidth);
1090 
1092  // setCorralAreaRenderMode
1099  void setCorralAreaRenderMode(int mode)
1100  {
1101  m_corralAreaRenderMode = mode;
1102  }
1103 
1105  // getCorralAreaRenderMode
1111  int getCorralAreaRenderMode() const
1112  {
1113  return m_corralAreaRenderMode;
1114  }
1115 
1117  // setStabilizationCuePoint
1124  void setStabilizationCuePoint(float rangeX, float rangeY, float scale = 1.0f);
1125 
1127  // getStabilizationCuePoint
1133  void getStabilizationCuePoint(float &rangeX, float &rangeY, float &scale);
1134 
1136  // setDesignationCursorPoint
1142  void setDesignationCursorPoint(float rangeX, float rangeY);
1143 
1145  // getDesignationCursorPoint
1151  void getDesignationCursorPoint(float &rangeX, float &rangeY);
1152 
1154  // setCursorRenderMode
1161  void setCursorRenderMode(int mode)
1162  {
1163  m_cursorRenderMode = mode;
1164  }
1165 
1167  // getCursorRenderMode
1173  int getCursorRenderMode() const
1174  {
1175  return m_cursorRenderMode;
1176  }
1177 
1179  // setUseSymbology
1185  void setUseSymbology(bool symbology)
1186  {
1187  m_useSymbology = symbology;
1188  }
1189 
1191  // getUseSymbology
1197  bool getUseSymbology() const
1198  {
1199  return m_useSymbology;
1200  }
1201 
1203  // setRecomputeDBSRegions
1209  void setRecomputeDBSRegions(bool recompute)
1210  {
1211  m_recomputeDBSRegions = recompute;
1212  }
1213 
1215  // getRecomputeDBSRegions
1221  bool getRecomputeDBSRegions() const
1222  {
1223  return m_recomputeDBSRegions;
1224  }
1225 
1227  // setDBSPatchEnable
1233  void setDBSPatchEnable(bool patchMode)
1234  {
1235  if ( m_useSymbology )
1236  m_DBSPatchEnable = patchMode;
1237  }
1238 
1240  // getDBSPatchEnable
1246  bool getDBSPatchEnable() const
1247  {
1248  return m_DBSPatchEnable;
1249  }
1250 
1252  //getMinVelocity
1257  double getMinVelocity() const;
1258 
1260  //getMaxVelocity
1265  double getMaxVelocity() const;
1266 
1267 
1269  // getDownRangeResolution
1276  double getDownrangeResolution();
1277 
1279  // getCrossrangeResolution
1285  double getCrossrangeResolution();
1286 
1288  // setTerrainSlantRange
1294  void setTerrainSlantRange(double slantRange);
1295 
1297  // getTerrainSlantRange
1303  double getTerrainSlantRange();
1304 
1305 
1307  //setMinMaxTemp
1315  bool setMinMaxTemp(double minTemp, double maxTemp);
1316 
1318  //getMinTemp
1324  double getMinTemp();
1325 
1327  //getMaxTemp
1333  double getMaxTemp();
1334 
1336  //setMaxLightLevel
1342  void setMaxLightLevel(double maxLightLevel);
1343 
1345  //getMaxLightLevel
1351  const double getMaxLightLevel();
1352 
1353 
1355  //getMaxPower
1361  const double getMaxPower();
1362 
1363 
1365  //getNumberWavelengths
1370  unsigned int getNumberWavelengths();
1371 
1373  //*getWavelengthsArray
1381  double *getWavelengthsArray();
1382 
1384  //getWavelength
1390  double getWavelength(int i);
1391 
1393  //setFrequencyAttributes
1400  void setFrequencyAttributes(double freqMin, double freqMax, int numBins);
1401 
1403  //getEmitterCenterFrequency
1408  double getEmitterCenterFrequency();
1409 
1411  //setBandpass
1425  bool setBandpass(double ax, double bx, double dx);
1426 
1428  //getBandpass
1435  bool getBandpass(double &ax, double &bx, double &dx);
1436 
1438  //setPemitterW
1443  bool setPemitterW(double PemitterW);
1444 
1446  //getPemitterW
1451  double getPemitterW();
1452 
1454  //setTransmitterGain
1459  bool setTransmitterGain(double AntGain);
1460 
1462  //getTransmitterGain
1467  double getTransmitterGain();
1468 
1470  //setReceiverGain
1475  bool setReceiverGain(double AntGain);
1476 
1478  //getReceiverGain
1483  double getReceiverGain();
1484 
1486  //setSysTempK
1491  bool setSysTempK(double degK);
1492 
1494  //getSysTempK
1499  double getSysTempK();
1500 
1502  //setRadarBand
1511  bool setRadarBand(double FCemitterHz, double BWemitterHz, double ChannelResolutionHz);
1512 
1514  //setFCemitterHz
1519  bool setFCemitterHz(double FCemitterHz);
1520 
1521 
1523  //setFCemitterWavelength
1528  bool setFCemitterWavelength(double wavelength); // [m]
1529 
1531  //getFCemitterHz
1536  double getFCemitterHz();
1537 
1539  //getFCemitterWavelength
1544  double getFCemitterWavelength(); // [m]
1545 
1547  //getBWemitterHz
1552  double getBWemitterHz() const;
1553 
1555  //setChannelResolutionHz
1560  bool setChannelResolutionHz(double ChannelResolutionHz);
1561 
1563  //getChannelResolutionHz
1568  double getChannelResolutionHz();
1569 
1571  //setPulseWidth
1576  bool setPulseWidth(double PulseWidth);
1577 
1579  //getPulseWidth
1584  double getPulseWidth();
1585 
1587  //setPRF
1592  bool setPRF(double PRF);
1593 
1595  //getPRF
1600  double getPRF();
1601 
1603  //setNFPRF
1608  bool setNFPRF(double PRF);
1609 
1611  //getNFPRF
1616  double getNFPRF();
1617 
1619  //setTransmitterPolarizationAngle
1624  bool setTransmitterPolarizationAngle(double PolarizationAngle_deg);
1625 
1627  //getTransmitterPolarizationAngle
1632  double getTransmitterPolarizationAngle();
1633 
1635  //setReceiverPolarizationAngle
1640  bool setReceiverPolarizationAngle(double PolarizationAngle_deg);
1641 
1643  //getReceiverPolarizationAngle
1648  double getReceiverPolarizationAngle();
1649 
1651  //setBeamWidth
1656  bool setBeamWidth(double rad);
1657 
1659  //getBeamWidth
1664  double getBeamWidth();
1665 
1667  //setRangeCompensation
1672  void setRangeCompensation(bool rangeCompensation)
1673  {
1674  m_rangeCompensation = rangeCompensation;
1675  }
1676 
1678  //getRangeCompensation
1683  bool getRangeCompensation() const
1684  {
1685  return m_rangeCompensation;
1686  }
1687 
1689  //setGainPattern
1694  void setGainPattern(int pattern);
1695 
1697  //getGainPattern
1702  const int getGainPattern();
1703 
1705  //setDisplayType
1710  void setDisplayType(int type);
1711 
1713  //getDisplayType
1718  const int getDisplayType();
1719 
1720 
1721 
1723  //*getTerrainFollowArray
1732  float *getTerrainFollowArray();
1733 
1735  //setNumTerrainFollowingBins
1740  void setNumTerrainFollowingBins(int num);
1741 
1743  //getNumTerrainFollowingBins
1748  int getNumTerrainFollowingBins();
1749 
1751  // setTAprops
1763  bool setTAprops(double ThreshDetect, double ThreshClassify, double ThreshRecognize, double ThreshIdentify, double PersistenceTime);
1764 
1766  // getTAprops
1778  bool getTAprops(double &ThreshDetect, double &ThreshClassify, double &ThreshRecognize, double &ThreshIdentify, double &PersistenceTime);
1779 
1780 
1781 
1783  // getPersistenceTime
1787  double getPersistenceTime();
1788 
1790  // setSaturationRatio
1796  void setSaturationRatio(double satRatio);
1797 
1799  // getSaturationRatio
1803  double getSaturationRatio();
1804 
1806  // getRadarIFOVNoisePower
1810  double getRadarIFOVNoisePower();
1811 
1813  // getRadarReceiverArea()
1817  double getRadarReceiverArea();
1818 
1819  // getRadarIFOVNominalReturnPower
1826  double getRadarIFOVNominalReturnPower();
1827 
1828 
1829  // getSonarIFOVNominalReturnPower
1836  double getSonarIFOVNominalReturnPower();
1837 
1839  //isVisualBand
1844  bool isVisualBand();
1845 
1847  //isNearIRBand
1853  bool isNearIRBand();
1854 
1856  //isMWIRBand
1862  bool isMWIRBand();
1863 
1865  //isLongWaveBand
1871  bool isLongWaveBand();
1872 
1874  //isRadarBand
1880  bool isRadarBand();
1881 
1883  //isLadar
1888  bool isLadar();
1889 
1890 
1892  //getSensorSelect
1897  void getSensorSelect(float &w1, float &w2, float &w3, float &visSensor);
1898 
1900  //setNumberSamples
1906  void setNumberSamples(unsigned int hsamples, unsigned int vsamples);
1907 
1909  //setNumberHorizontalSamples
1914  void setNumberHorizontalSamples(unsigned int hsamples);
1915 
1917  //getNumberHorizontalSamples
1922  unsigned int getNumberHorizontalSamples();
1923 
1925  //setNumberVerticalSamples
1930  void setNumberVerticalSamples(unsigned int vsamples);
1931 
1933  //getNumberVerticalSamples
1938  unsigned int getNumberVerticalSamples();
1939 
1941  //setFOV
1947  void setFOV(double horizontalFOV, double verticalFOV);
1948 
1950  //getFOV
1956  void getFOV(double &horizontalFOV, double &verticalFOV);
1957 
1959  //setFOVScaleFactor
1964  void setFOVScaleFactor(double scale)
1965  {
1966  m_fovScaleFactor = scale;
1967  }
1968 
1970  //getFOVScaleFactor
1975  double getFOVScaleFactor() const
1976  {
1977  return m_fovScaleFactor;
1978  }
1979 
1981  //setDetectorScaleFactor
1987  void setDetectorScaleFactor(double horizontalScaleFactor, double verticalScaleFactor);
1988 
1990  //getDetectorScaleFactor
1996  void getDetectorScaleFactor(double &horizontalScaleFactor, double &verticalScaleFactor);
1997 
1999  //setScreenOffset
2006  void setScreenOffset(int horizontalScreenOffset, int verticalScreenOffset);
2007 
2009  //getScreenOffset
2016  void getScreenOffset(int &horizontalScreenOffset, int &verticalScreenOffset);
2017 
2019  //getType
2044  int getType();
2045 
2046 
2048  //setType
2053  void setType(int type);
2054 
2055 
2057  //getUniqueID
2063  int getUniqueID();
2064 
2066  //setUniqueID
2074  void setUniqueID(int id);
2075 
2077  //*getPlanckIntegralTable
2086  float *getPlanckIntegralTable();
2087 
2089  //setMaximumPlanckTableTemperature
2094  void setMaximumPlanckTableTemperature(int max);
2095 
2097  //getMaximumPlanckTableTemperature
2102  int getMaximumPlanckTableTemperature();
2103 
2105  //setNumberPlanckTableTemperatures
2110  void setNumberPlanckTableTemperatures(unsigned int num);
2111 
2113  //getNumberPlanckTableTemperatures
2118  unsigned int getNumberPlanckTableTemperatures();
2119 
2121  //getAutoMaxTemperature
2126  double getAutoMaxTemperature();
2127 
2129  //getAutoMinTemperature
2134  double getAutoMinTemperature();
2135 
2137  //getAutoMaxDiurnalLight
2143  double getAutoMaxDiurnalLight();
2144 
2146  //getAutoMinDiurnalLight
2152  double getAutoMinDiurnalLight();
2153 
2155  //isAutoRadianceScale
2160  bool isAutoRadianceScale();
2161 
2163  //setAutoRadianceScale
2168  void setAutoRadianceScale(bool flag);
2169 
2174  bool isAGCEnable();
2175 
2180  void setAGCEnable(bool flag);
2181 
2183  //isDirty
2189  bool isDirty();
2190 
2192  //isTimeChanged
2197  bool isTimeChanged();
2198 
2200  //setGeocentricLocation
2207  void setGeocentricLocation(
2208  double x,
2209  double y,
2210  double z);
2211 
2213  //getGeocentricLocation
2220  void getGeocentricLocation(
2221  double &x,
2222  double &y,
2223  double &z);
2224 
2226  //setGeodeticLocation
2233  void setGeodeticLocation(
2234  double lat,
2235  double lon,
2236  double alt);
2237 
2239  //getGeodeticLocation
2246  void getGeodeticLocation(
2247  double &lat,
2248  double &lon,
2249  double &alt);
2250 
2252  //setOrientation
2259  void setOrientation(
2260  double h,
2261  double p,
2262  double r);
2263 
2265  //getOrientation
2272  void getOrientation(
2273  double &h,
2274  double &p,
2275  double &r);
2276 
2277 
2279  //setLinearVelocity
2286  void setLinearVelocity(double e,
2287  double n,
2288  double u);
2289 
2291  //getLinearVelocity
2298  void getLinearVelocity(double &e,
2299  double &n,
2300  double &u);
2301 
2303  //setLinearAcceleration
2310  void setLinearAcceleration(double e,
2311  double n,
2312  double u);
2313 
2315  //getLinearAcceleration
2322  void getLinearAcceleration(double &e,
2323  double &n,
2324  double &u);
2325 
2327  //setAngularVelocity
2335  void setAngularVelocity(double e,
2336  double n,
2337  double u);
2338 
2340  //getAngularVelocity
2348  void getAngularVelocity(double &e,
2349  double &n,
2350  double &u);
2351 
2354 
2360  void setFRDAngularVelocity(double y,
2361  double p,
2362  double r);
2363 
2366 
2372  void getFRDAngularVelocity(double &y,
2373  double &p,
2374  double &r);
2375 
2376 
2378  // setHeightAboveTerrain
2383  void setHeightAboveTerrain(double alt);
2384 
2386  // getHeightAboveTerrain
2391  double getHeightAboveTerrain();
2392 
2394  // setTerrainAltitudeExtremes
2399  void setTerrainAltitudeExtremes(double minAlt, double maxAlt);
2400 
2402  // getTerrainAltitudeExtremes
2407  void getTerrainAltitudeExtremes(double &minAlt, double &maxAlt);
2408 
2410  // setSpotfile
2415  void setSpotfile(char *filename);
2416 
2417 
2419  // getSpotfile
2424  char *getSpotfile();
2425 
2427  // setQEResponseFile
2432  void setQEResponseFile(char *filename);
2433 
2434 
2436  // getQEResponseFile
2441  char *getQEResponseFile();
2442 
2444  // setRadarColorMapFile
2449  void setRadarColorMapFile(char *filename);
2450 
2451 
2453  // getRadarColorMapFile
2458  char *getRadarColorMapFile();
2459 
2460 
2461 
2463  //setAngularAcceleration
2471  void setAngularAcceleration(double e,
2472  double n,
2473  double u);
2474 
2476  //getAngularAcceleration
2484  void getAngularAcceleration(double &e,
2485  double &n,
2486  double &u);
2487 
2489  //convertRUB2NED
2497  void convertRUB2NED(int hpix, int vpix, float range, float *vector);
2498 
2500  // setTrack
2506  void setTrack(TRACK *track, int numTracks);
2507 
2509  // setTrackfileUpdate
2515  void setTrackfileUpdate(double simTime, ::ellipsoid *ellipsoid);
2516 
2518  //computePlanckIntegral
2528  double computePlanckIntegral (double lowerWaveLength,
2529  double upperWaveLength,
2530  double temperature);
2531 
2533  //computePlanckIntegral
2541  double computePlanckIntegral (double temperature);
2542 
2544  //getGain
2549  double getGain();
2550 
2552  //getLevel
2557  double getLevel();
2558 
2560  //setGain
2565  void setGain(double gain);
2566 
2568  //setLevel
2573  void setLevel(double level);
2574 
2575 
2577  //*getName
2582  char *getName();
2583 
2584 
2586  //setName
2591  void setName(const char *name);
2592 
2594  //*getSensorPtr
2604  SENSOR *getSensorPtr();
2605 
2607  //setSensorPtr
2612  void setSensorPtr(SENSOR *sensorPtr);
2613 
2615  //setWorldLocation
2623  void setWorldLocation(double x, double y, double z);
2624 
2626  //getWorldLocation
2634  void getWorldLocation(double& x, double& y, double& z);
2635 
2637  //setReprojection
2642  void setReprojection(bool flag);
2643 
2645  //getReprojection
2650  bool getReprojection();
2651 
2653  //isRadar
2658  bool isRadar();
2659 
2661  //isComm
2666  bool isComm();
2667 
2669  //isEOIR
2674  bool isEOIR();
2675 
2676 
2678  //isSonar
2683  bool isSonar();
2684 
2686  //isSss
2691  bool isSss();
2692 
2694  //isSar
2699  bool isSar();
2700 
2702  //isIsar
2707  bool isIsar();
2708 
2710  //isPpi
2715  bool isPpi();
2716 
2718  //isCwr
2723  bool isCwr();
2724 
2726  //isAirToAir
2731  bool isAirToAir();
2732 
2734  //isDopplerSpatialEffects
2738  bool isDopplerSpatialEffects();
2739 
2741  //setDopplerSpatialEffects
2745  void setDopplerSpatialEffects(bool state);
2746 
2747 
2749  //isDopplerBeamSharpening
2753  bool isDopplerBeamSharpening();
2754 
2756  //setDopplerBeamSharpening
2760  void setDopplerBeamSharpening(bool state);
2761 
2763  // setDBSangleExtent
2764  //
2765  // description: sets DBS angle extent - DBS has a constant angle extent (degrees)
2766  //
2767  void setDBSangleExtent(double angle);
2768 
2770  // getDBSangleExtent
2771  //
2772  // description: gets DBS angle extent - DBS has a constant angle extent (degrees)
2773  //
2774  double getDBSangleExtent();
2775 
2777  // setDopplerThreshold
2778  //
2779  // description: sets Doppler threshold (0-1)
2780  //
2781  void setDopplerThreshold(double thresh);
2782 
2784  // getDopplerThreshold
2785  //
2786  // description: gets Doppler threshhold (0-1)
2787  //
2788  double getDopplerThreshold();
2789 
2791  // setDopplerThresholdMin
2796  void setDopplerThresholdMin(double threshold);
2797 
2799  // getDopplerThresholdMin
2804  double getDopplerThresholdMin();
2805 
2807  // setDopplerThresholdMax
2812  void setDopplerThresholdMax(double threshold);
2813 
2815  // getDopplerThresholdMax
2820  double getDopplerThresholdMax();
2821 
2823  // setClutterReductionMode
2829  void setClutterReductionMode(int CRMode);
2830 
2832  // getClutterReductionMode
2837  int getClutterReductionMode();
2838 
2840  // setClutterReductionFactor
2846  void setClutterReductionFactor(double CRFactor);
2847 
2849  // getClutterReductionFactor
2854  double getClutterReductionFactor();
2855 
2857  // getTransponderReceiverFrequency
2865  double getTransponderReceiverFrequency() const
2866  {
2867  return m_transponderReceiverFrequency;
2868  }
2869 
2871  // setTransponderReceiverFrequency
2879  void setTransponderReceiverFrequency( double frequency, int idx = 0 )
2880  {
2881  m_transponderReceiverFrequency = frequency;
2882  }
2883 
2885  // setApplyPPIReset
2886  //
2887  // description: allows whether the PPI scan will reset when other parameters about the scan are changed
2888  //
2889  void setApplyPPIReset(bool reset)
2890  {
2891  m_applyPPIReset = reset;
2892  }
2893 
2895  // getApplyPPIReset
2896  //
2897  // description: gets the PPI scan state on whether the scan will reset when other parameters about the scan are changed
2898  //
2899  bool getApplyPPIReset() const
2900  {
2901  return m_applyPPIReset;
2902  }
2903 
2905  // setAirToAirMode
2906  //
2907  // description: sets the air to air mode display
2908  //
2909  void setAirToAirMode(int mode)
2910  {
2911  if ( m_AirToAirMode != mode )
2912  {
2913  m_AirToAirMode = mode;
2914  m_PPIresetMode = true;
2915  setDirty();
2916  }
2917  }
2918 
2920  // getAirToAirMode
2921  //
2922  // description: gets the current air to air mode display
2923  //
2924  int getAirToAirMode() const
2925  {
2926  return m_AirToAirMode;
2927  }
2928 
2930  // setMaxMTItargets
2931  //
2932  // description: sets the max number of MTI targets to display
2933  //
2934  void setMaxMTItargets(int max)
2935  {
2936  m_maxMTItargets = max;
2937  }
2938 
2940  // getMaxMTItargets
2941  //
2942  // description: gets the current max number of MTI targets displayed
2943  //
2944  int getMaxMTItargets() const
2945  {
2946  return m_maxMTItargets;
2947  }
2948 
2950  // setMaxMTIhistory
2951  //
2952  // description: sets the max number of elements for an MTI entry
2953  //
2954  void setMaxMTIhistory(int history)
2955  {
2956  m_maxMTIhistory = history;
2957  }
2958 
2960  // getMaxMTIhistory
2961  //
2962  // description: gets the max number of MTI elements for a target entry
2963  //
2964  int getMaxMTIhistory() const
2965  {
2966  return m_maxMTIhistory;
2967  }
2968 
2970  // setMaxAirToAirVelocity
2971  //
2972  // description: sets the max velocity for Air to Air velocity search mode
2973  //
2974  void setMaxAirToAirVelocity(double velocity)
2975  {
2976  if ( m_maxA2Avelocity != velocity )
2977  {
2978  m_maxA2Avelocity = velocity;
2979  m_PPIresetMode = true;
2980  setDirty();
2981  }
2982  }
2983 
2985  // getMaxAirToAirVelocity
2986  //
2987  // description: gets the maximum velocity for scaling the velocity search a2a mode display
2988  //
2989  double getMaxAirToAirVelocity() const
2990  {
2991  return m_maxA2Avelocity;
2992  }
2993 
2995  // getCagedModeHeadingPitch
2996  //
2997  // description: gets the caged Mode heading and pitch angle specification
2998  //
2999  void getCagedModeHeadingPitch(double &heading, double &pitch) const
3000  {
3001  heading = m_cagedModeHeading;
3002  pitch = m_cagedModePitch;
3003  }
3004 
3006  // setCagedModeHeadingPitch
3007  //
3008  // description: sets the caged Mode heading and pitch angle specification
3009  //
3010  void setCagedModeHeadingPitch( double heading, double pitch )
3011  {
3012  m_cagedModeHeading = heading;
3013  m_cagedModePitch = pitch;
3014  }
3015 
3017  // gettrackLifeTime
3018  //
3019  // description: gets the maximum lifetime for a track to persist for air to air operations [s]
3020  //
3021  double getTrackLifeTime() const
3022  {
3023  return m_trackLifeTime;
3024  }
3025 
3027  // setTrackLifeTime
3028  //
3029  // description: sets the maximum lifetime for a track to persist for air to air operations [s]
3030  //
3031  void setTrackLifeTime( double lifetime )
3032  {
3033  m_trackLifeTime = lifetime;
3034  }
3035 
3037  //setBoresightROI
3046  void setBoresightROI(double x, double y, double width, double height);
3047 
3049  //getBoresightROI
3058  void getBoresightROI(double &x, double &y, double &width, double &height);
3059 
3061  //setIntegrationPathlength
3066  void setIntegrationPathlength(double length);
3067 
3069  //getIntegrationPathlength
3074  double getIntegrationPathlength();
3075 
3077  //setShadowOrientationDown
3082  void setShadowOrientationDown(bool flag);
3083 
3085  //getShadowOrientationDown
3090  bool getShadowOrientationDown();
3091 
3093  //setIFOVSolidAngle
3098  void setIFOVSolidAngle(double ifovsr);
3099 
3101  //getIFOVSolidAngle
3106  double getIFOVSolidAngle();
3107 
3109  //setIntegrationTime
3114  void setIntegrationTime(double time);
3115 
3117  //getIntegrationTime
3122  double getIntegrationTime();
3123 
3125  //computeBinning
3130  void computeBinning(VECTOR *DownRange, VECTOR *CrossRange, VECTOR *DownVelocity, VECTOR *CrossVelocity,
3131  double *downRangeBinning, double *crossRangeBinning, double *downRangeBinningMax, double *crossRangeBinningMax, double *crossSegments);
3132 
3134  //getIntensityModulationGain
3139  double getIntensityModulationGain();
3140 
3142  //setIntensityModulationGain
3147  void setIntensityModulationGain(double imodGain);
3148 
3150  //setNumSpectralBins
3155  void setNumSpectralBins(int sbins);
3156 
3158  //getNumSpectralBins
3163  int getNumSpectralBins();
3164 
3166  //set the terrain sampling resolution
3167  //
3168  void setTerrainSamplingResolution(int n);
3169 
3171  //Get terrain sampling resolution
3172  //
3173  int getTerrainSamplingResolution();
3174 
3176  //set whether or not the sensor has a TAA backend.
3177  //
3178  void setHasTAABackEnd(bool state);
3179 
3181  //Gets whether the sensor has a TAA backend.
3182  //
3183  bool hasTAABackEnd();
3184 
3186  //Sets whether to apply the radiance scaling. Allows direct rendering of raw radiance values
3187  //
3188  void setRadianceScaleEnable(bool enable)
3189  {
3190  m_applyRadianceScale = enable;
3191  }
3192 
3194  //Gets whether to apply the radiance scaling.
3195  //
3196  bool getRadianceScaleEnable() const
3197  {
3198  return m_applyRadianceScale;
3199  }
3200 
3202  //Sets whether to enable MTI processing
3203  //
3204  void setEnableMTIprocessing(bool enable)
3205  {
3206  m_enableMTIprocessing = enable;
3207  }
3208 
3210  //Gets whether to apply the MTI processing.
3211  //
3212  bool getEnableMTIprocessing() const
3213  {
3214  return m_enableMTIprocessing;
3215  }
3216 
3218  //Sets enable/disable the REACT mode radar processing
3219  // weatherThreshold defines the intensity for thesholding REACT mode
3220  // reactFilterAdjust allows adjustments to the pixels that are marked as REACT regions
3221  //
3222  void setReactModeEnable(bool enable, float weatherThreshold = -1.0f, float reactFilterAdjust = 0.0f)
3223  {
3224  m_reactModeEnable = enable;
3225  m_reactWeatherThreshold = weatherThreshold;
3226  m_reactFilterAdjust = reactFilterAdjust;
3227  }
3228 
3230  //Gets whether REACT mode radar processing is enabled or not
3231  //
3232  void getReactModeEnable(bool &enable, float & weatherThreshold, float &filterAdjust) const
3233  {
3234  enable = m_reactModeEnable;
3235  weatherThreshold = m_reactWeatherThreshold;
3236  filterAdjust = m_reactFilterAdjust;
3237  }
3238 
3240  // Sets user defined details for the PPI strip size, down range and cross range sample sizes.
3241  // The strip size is specified in degrees.
3242  //
3243  void setUserDefinedStripBinSize(double stripSize = -1.0, int downRange = -1, int crossRange = -1)
3244  {
3245  m_userDefinedStripAngleSize = stripSize;
3246  m_userDefinedDownRangeBinSize = downRange;
3247  m_userDefinedCrossRangeBinSize = crossRange;
3248  }
3249 
3251  // Gets user defined details for the PPI strip size, down range and cross range sample sizes.
3252  // The strip size returned will be in degrees
3253  //
3254  void getUserDefinedStripBinSize(double &stripSize, int &downRange, int &crossRange) const
3255  {
3256  stripSize = m_userDefinedStripAngleSize;
3257  downRange = m_userDefinedDownRangeBinSize;
3258  crossRange = m_userDefinedCrossRangeBinSize;
3259  }
3260 
3262  // Sets the maximum resolution that the first pass renders to for PPI radar modes
3263  //
3264  void setPPIMaxRadarResolution(int downRange, int crossRange)
3265  {
3266  m_ppiMaxDownRangeResolution = downRange;
3267  m_ppiMaxCrossRangeResolution = crossRange;
3268  }
3269 
3271  // Gets the maximum resolution that the first pass renders to for PPI radar modes
3272  //
3273  void getPPIMaxRadarResolution(int &downRange, int &crossRange) const
3274  {
3275  downRange = m_ppiMaxDownRangeResolution;
3276  crossRange = m_ppiMaxCrossRangeResolution;
3277  }
3278 
3279 private:
3280 
3282  //initialize
3287  bool initialize();
3288 
3290  //setAutoMaxTemperature
3295  void setAutoMaxTemperature(double temp);
3296 
3298  //setAutoMinTemperature
3303  void setAutoMinTemperature(double temp);
3304 
3306  //setAutoMaxDiurnalLight
3312  void setAutoMaxDiurnalLight(double light);
3313 
3315  //setAutoMinDiurnalLight
3321  void setAutoMinDiurnalLight(double light);
3322 
3324  //recomputeMinMaxRadiance
3330  void recomputeMinMaxRadiance();
3331 
3333  //recomputeMinMaxRange
3339  void recomputeMinMaxRange();
3340 
3342  // recomputeMinMaxVelocity
3343  //
3344  // description: recomputes the min and max velocity
3345  //
3346  void recomputeMinMaxVelocity();
3347 
3349  //updatePlanckIntegralTable
3354  void updatePlanckIntegralTable();
3355 
3357  //degreesToMilliradians
3363  double degreesToMilliradians(double deg);
3364  double degreesToRadians(double deg);
3365  double radiansToDegrees(double rad);
3366 
3368  //clrTimeChanged
3372  void clrTimeChanged();
3373 
3375  //setTimeChanged
3379  void setTimeChanged();
3380 
3382  //clrDirty
3386  void clrDirty();
3387 
3389  //setDirty
3393  void setDirty();
3394 
3396  //computeStripSize
3400  void computeStripSize( double frameTime = -1.0, int direction = -1 );
3401 
3402 
3404  int m_id;
3405 
3407  double m_minRange; // Meters
3409  double m_maxRange; // Meters
3411  double m_minVel; // [m/s]
3413  double m_maxVel; // [m/s]
3414 
3416  double m_minRadiance; // [W/cm2/sr]
3418  double m_maxRadiance; // [W/cm2/sr]
3425  unsigned int m_numTemperatures;
3428 
3431 
3437  double m_maxDiurnalLight; // [W/cm2]
3439  double m_minDiurnalLight; // [W/cm2]
3445  bool m_dirty;
3452  double m_pEmitterW;
3454  double m_sysTempK;
3456  double m_maxPower;
3458  double m_satRatio;
3465 
3467  char m_spotFilepath[512];
3469  char m_QEResponseFile[512];
3470 
3474 
3475  // Height Above Terrain
3477 
3480 
3481  // Sar projection
3483 
3484  // SAR Boresight ROI
3489  // Integration Path length
3491  // terrain slant range used for SAR
3493  // integration time
3495 
3497 
3498  double m_ifovsr; // [sr] sampling ifov solid angle
3499 
3500  // SAR shadow orientation
3502 
3503  int m_gainPattern; // For radar modes: 0=Unity, 1=Lobe, 2=Rect
3504  int m_displayType; // For radar modes: 0=radiance, 1=power, 2=effective RCS, 3=Doppler Coloring, 4=Terrain Avoidance, 5=Freeze
3507 
3508  //ppi mode display params
3509  double m_minWedgeExtent; // minimum angle of the full scan area in degrees
3510  double m_maxWedgeExtent; // maximum angle of the full scan area in degrees
3511  double m_activeSectorWidth; // active area within the wedge in degrees
3512  double m_minCurScanExtent; // current scan extent - could be wedge or active sector or DBS/SAR sector
3513  double m_maxCurScanExtent; // current scan extent - could be wedge or active sector or DBS/SAR sector
3514  double m_prevMinCurScanExtent; // current scan extent - could be wedge or active sector or DBS/SAR sector
3515  double m_prevMaxCurScanExtent; // current scan extent - could be wedge or active sector or DBS/SAR sector
3537  double m_userDefinedStripAngleSize; // in units of degrees
3540 
3559  bool m_PPIresetMode; // reset the PPI mode/display
3567 
3568  double m_radarVertFOV; //The PPI/radar computed vertical FOV
3570  double m_radarAspectRatio; //The PPI/radar computed aspect ratio
3571 
3576 
3581 
3588  double m_mtiScaleX;
3589  double m_mtiScaleY;
3590 
3598  char m_radarColorMapFile[512];
3599 
3603  double m_time;
3604 
3610 
3611 
3613 
3615 
3621 
3622  int m_terrainSamplingResolution; // [1] To distinguish 1st-pass sampling resolution from display resolution
3623 
3624  bool m_hasTaaBackend; // [bool] Enable green-channel ObjectID override in jrmApplySensors
3627 
3628  // For generating the unique id
3629  static int s_sensorId;
3630 
3631  ssRadarSymbology *m_symbologyData;
3637 
3638  friend class SigSimRT;
3639  friend class ssEnvironment;
3640  friend class ssMaterialSet;
3641  friend class ssAtmosphericTable;
3642  //friend class MixedSigSimRT; // CF091221 : Not ready yet for ATM LUT merging code.
3643 
3644 };
3645 
3646 #endif // _ssSensor_
3647 


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