VR-Vantage 3.1 API Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
seOptics.h
Go to the documentation of this file.
1 
3 // Copyright JRM Enterprises, Inc. 2004
4 // All rights reserved.
5 //
6 // This code is the intellectual property of JRM Enterprises, Inc.
7 // It may not be used or released as source or compiled binary form
8 // without the prior written consent of JRM Enterprises, Inc.
9 //
10 // Original Author: Ken George Date: October 2004
12 
13 #ifndef _seOptics_
14 #define _seOptics_
15 
16 //#include "seIncAll.h"
17 #include "sedllexport.h"
18 
20 // class: seOptics
21 //
24 //
26 {
27 public:
28 
34  enum shapeType
35  {
36  Circular = 0,
37  Rectangular = 1,
38  };
39 
45  enum HaloType
46  {
49  HALO_TUPE_NUM
50  };
51 
52 
54  // seOptics
58  seOptics();
59 
61  //seOptics
65  ~seOptics();
66 
67 
69  //loadDefaults
73  void loadDefaults();
74 
75 
77  //setApertureWidth
82  void setApertureWidth(const double dim) {
83  if (m_apertureWidth != dim) {
84  if (dim < 0.0000001) // aperture can't be zero
85  m_apertureWidth = 0.0000001;
86  else
87  m_apertureWidth = dim;
88  setDirty();
89  }
90  }
91 
93  //getApertureWidth
98  double getApertureWidth(){return m_apertureWidth;}
99 
100 
102  //setApertureShape
108  if (m_apertureShape != shape) {
109  m_apertureShape = shape;
110  setDirty();
111  }
112  }
113 
115  //getApertureShape
120  shapeType getApertureShape(){return m_apertureShape;}
121 
122 
124  //setApertureAspectRatio
129  void setApertureAspectRatio(const double ratio) {
130  if (m_apertureAspectRatio != ratio) {
131  m_apertureAspectRatio = ratio;
132  setDirty();
133  }
134  }
135 
137  //getApertureAspectRatio
142  double getApertureAspectRatio(){return m_apertureAspectRatio;}
143 
144 
146  //setBlurSpotDiameter
151  void setBlurSpotDiameter (const double size) {
152  if (m_blurSpotDiameter != size) {
153  m_blurSpotDiameter = size;
154  setDirty();
155  }
156  }
157 
159  //getBlurSpotDiameter
164  double getBlurSpotDiameter(){return m_blurSpotDiameter;}
165 
166 
168  //setFOVdegs
174  void setFOVdegs(const double horzFov, const double vertFov) {
175  if ((m_horizontalFov != horzFov) ||
176  (m_verticalFov != vertFov)) {
177  m_horizontalFov = horzFov;
178  m_verticalFov = vertFov;
179  setDirty();
180  }
181  }
182 
183 
185  //getFOVdegs
191  void getFOVdegs(double &horzFov, double &vertFov){
192  horzFov = m_horizontalFov;
193  vertFov = m_verticalFov;
194  }
195 
196 
198  //setMtfMotionBlurSize
205  void setMtfMotionBlurSize (const double size) {
206  if (m_mtfMotionBlurSize != size) {
207  m_mtfMotionBlurSize = size;
208  setDirty();
209  }
210  }
211 
213  //getMtfMotionBlurSize
220  double getMtfMotionBlurSize(){return m_mtfMotionBlurSize;}
221 
223  //setLensTransmittance
228  void setLensTransmittance (const double transmittance) {
229  if (m_lensTransmittance != transmittance) {
230  m_lensTransmittance = transmittance;
231  setDirty();
232  }
233  }
234 
236  //getLensTransmittance
241  double getLensTransmittance(){return m_lensTransmittance;}
242 
244  //setImageMaskRadius
249  void setImageMaskRadius(const double radius);
250 
252  //getImageMaskRadius
257  double getImageMaskRadius() const;
258 
260  //setImageMaskScale
265  void setImageMaskScale(const double scaleX, const double scaleY);
266 
268  //getImageMaskScale
273  void getImageMaskScale(double &scaleX, double &scaleY) const;
274 
276  //setFocalLength
281  void setFocalLength (double focalLength, double pixelPitchX, double pixelPitchY,
282  double numPixelsX, double numPixelsY, double fillX,
283  double fillY);
284 
286  //getFocalLength
291  double getFocalLength() const;
292 
294  //setFNumber
299  void setFNumber (const double fNumber);
300 
302  //getFNumber
307  double getFNumber() const;
308 
309 
311  //setFilterEnable
316  void setFilterEnable(const bool flag) {
317  m_filterEnable = flag;
318  }
319 
321  //isFilterEnable
326  bool isFilterEnable(){return m_filterEnable;}
327 
329  //setOptimizedFilterEnable
334  void setOptimizedFilterEnable(const bool flag) {
335  if (m_optimizedFilterEnable != flag) {
336  m_optimizedFilterEnable = flag;
337  setDirty();
338  }
339  }
340 
342  //isOptimizedFilterEnable
347  bool isOptimizedFilterEnable(){return m_optimizedFilterEnable;}
348 
350  //setFilterAdjustment
356  void setFilterAdjustment(double adjustment) {
357  m_filterAdjustment = adjustment;
358  }
360  //getFilterAdjustment
366  double getFilterAdjustment(){return m_filterAdjustment;}
367 
369  //setHaloEnable
374  void setHaloEnable(const bool flag) {
375  m_haloEnable = flag;
376  }
377 
379  //isHaloEnable
384  bool isHaloEnable(){return m_haloEnable;}
385 
386 
388  //setHaloThreshold
393  void setHaloThreshold (const double value) {
394  m_haloThreshold = value;
395  }
396 
398  //getHaloThreshold
403  double getHaloThreshold(){return m_haloThreshold;}
404 
405 
407  //setHaloRadius
412  void setHaloRadius (const double value);
413 
415  //getHaloRadius
420  double getHaloRadius(){return m_haloRadius;}
421 
422 
424  //setHaloIntensity
429  void setHaloIntensity (const double intensity) {
430  m_haloIntensity = intensity;
431  }
432 
434  //getHaloIntensity
439  double getHaloIntensity(){return m_haloIntensity;}
440 
442  //setHaloType
447  void setHaloType (HaloType type)
448  {
449  m_haloType = type;
450  }
451 
453  //getHaloType
458  HaloType getHaloType() const
459  {
460  return m_haloType;
461  }
462 
464  //setSeparableKernelEnable
469  void setSeparableKernelEnable(bool enable);
470 
472  //getSeparableKernelEnable
477  bool getSeparableKernelEnable() const
478  {
479  return m_enableSeparableKernel;
480  }
481 
483  //setAberrationsEnable
488  void setAberrationsEnable (bool enable);
489 
491  //getAberrationsEnable
496  bool getAberrationsEnable() const
497  {
498  return m_aberrationsEnable;
499  }
500 
502  //setDefocusCoefficient
507  void setDefocusCoefficient (const double defocus)
508  {
509  m_W020 = defocus;
510  setDirty();
511  }
512 
514  //getDefocusCoefficient
519  double getDefocusCoefficient() const
520  {
521  return m_W020;
522  }
523 
525  //setSphericalAberrationCoefficient
530  void setSphericalAberrationCoefficient (const double sphericalAberration)
531  {
532  m_W040 = sphericalAberration;
533  setDirty();
534  }
535 
537  //getSphericalAberrationCoefficient
542  double getSphericalAberrationCoefficient() const
543  {
544  return m_W040;
545  }
546 
548  //setComaCoefficient
553  void setComaCoefficient (const double coma)
554  {
555  m_W131 = coma;
556  setDirty();
557  }
558 
560  //getComaCoefficient
565  double getComaCoefficient() const
566  {
567  return m_W131;
568  }
569 
571  //setAstigmatismCoefficient
576  void setAstigmatismCoefficient (const double astigmatism)
577  {
578  m_W222 = astigmatism;
579  setDirty();
580  }
581 
583  //getAstigmatismCoefficient
588  double getAstigmatismCoefficient() const
589  {
590  return m_W222;
591  }
592 
594  //setFieldCurvatureCoefficient
599  void setFieldCurvatureCoefficient (const double fieldCurvature)
600  {
601  m_W220 = fieldCurvature;
602  setDirty();
603  }
604 
606  //getFieldCurvatureCoefficient
611  double getFieldCurvatureCoefficient() const
612  {
613  return m_W220;
614  }
615 
617  //setDistortionCoefficient
622  void setDistortionCoefficient (const double distortion)
623  {
624  m_W311 = distortion;
625  setDirty();
626  }
627 
629  //getDistortionCoefficient
634  double getDistortionCoefficient() const
635  {
636  return m_W311;
637  }
638 
640  //setFPASubDivisions
645  void setFPASubDivisions(int subdivisions);
646 
648  //getFPAKernelSubDivisions
653  int getFPASubDivisions() const
654  {
655  return m_maxKernelSize;
656  }
657 
659  //setUserDefinedKernelEnable
664  void setUserDefinedKernelEnable(bool enable);
665 
667  //getUserDefinedKernelEnable
672  bool getUserDefinedKernelEnable() const
673  {
674  return m_enableUserDefinedKernel;
675  }
676 
678  //setUserDefinedKernelRootFilename
679  //
686  void setUserDefinedKernelRootFilename(char* filename);
687 
689  //getUserDefinedKernelRootFilename
695  char * getUserDefinedKernelRootFilename();
696 
697 
699  //setAperturePercentage
704  void setAperturePercentage(const double aperSizeX, const double aperSizeY)
705  {
706  // If optics param changes are not performed solely when the new & current values differ,
707  // this produces a situation in which the noise texture is not updated on a per-pixel basis,
708  // so the whole image goes light & dark with time, not individual pixels.
709  if ((m_horzAperturePercentage != aperSizeX) || (m_vertAperturePercentage != aperSizeY))
710  {
711  m_horzAperturePercentage = aperSizeX;
712  m_vertAperturePercentage = aperSizeY;
713  setDirty();
714  }
715  }
716 
718  //getAperturePercentage
723  void getAperturePercentage(double *aperSizeX, double *aperSizeY) const
724  {
725  *aperSizeX = m_horzAperturePercentage;
726  *aperSizeY = m_vertAperturePercentage;
727  }
728 
730  //setHaloThresholdAdjustment
736  void setHaloThresholdAdjustment(double threshold) {
737  m_haloThresholdAdjustment = threshold;
738  }
739 
741  //getHaloThresholdAdjustment
747  double getHaloThresholdAdjustment(){return m_haloThresholdAdjustment;}
748 
750  //setMeanWavelength
755  void setMeanWavelength (const double wavelength)
756  {
757  // If optics param changes are not performed solely when the new & current values differ,
758  // this produces a situation in which the noise texture is not updated on a per-pixel basis,
759  // so the whole image goes light & dark with time, not individual pixels.
760  if (m_lamdaMean != wavelength)
761  {
762  m_lamdaMean = wavelength;
763  setDirty();
764  }
765  }
766 
768  //getMeanWavelength
773  double getMeanWavelength() const
774  {
775  return m_lamdaMean;
776  }
777 
779  //setDetectorAngularSubtense
784  void setDetectorAngularSubtense(const double DASHorz, const double DASVert)
785  {
786  m_DASHorz = DASHorz;
787  m_DASVert = DASVert;
788  }
789 
791  //setUserDefinedMTFenable
797  void setUserDefinedMTFenable(bool enable) { m_userDefinedMTFenable = enable; }
798 
800  //getUserDefinedMTFenable
804  bool getUserDefinedMTFenable() { return m_userDefinedMTFenable; }
805 
807  //setUserDefinedMTFfilename
808  //
820  void setUserDefinedMTFfilename(char* filename);
821 
823  //getUserDefinedMTFfilename
829  char * getUserDefinedMTFfilename() { return m_userDefinedMTFfilename; }
830 
832  //isDirty
837  bool isDirty() {return m_dirty;}
838 
840  //setDirty
844  void setDirty() {m_dirty = true;}
845 
847  //clrDirty
851  void clrDirty() {m_dirty = false;}
852 
853  bool getUserDefinedKernelDataLoaded() const
854  {
855  return m_userDefinedKernelsLoaded;
856  }
857 
858 private:
859 
860  friend class seFilter;
861  void setUserDefinedKernelDataLoaded(bool kernelsLoaded)
862  {
863  m_userDefinedKernelsLoaded = kernelsLoaded;
864  }
865 
871  double m_FNumber;
873  double m_lamdaMean;
891  // Halo parameters
897  double m_haloRadius;
905  double m_DASHorz;
907  double m_DASVert;
914 
918  char m_userDefinedMTFfilename[512];
920  char m_userDefinedRootKernelfilename[512];
921 
923  bool m_aberrationsEnable; // Aberration Enable flag
924  double m_W020; // Defocus aberration
925  double m_W040; // Spherical aberration
926  double m_W131; // Coma aberration
927  double m_W222; // Astigmatism aberration
928  double m_W220; // Field Curvature aberration
929  double m_W311; // Distortion aberration
930  int m_maxKernelSize; // Max FPA subdivision for kernels
931  bool m_enableUserDefinedKernel; // Enable FPA dependent kernel processing
932  bool m_enableSeparableKernel; // Enable use of separable kernels
933  double m_horzAperturePercentage; // pupil plane relative size
934  double m_vertAperturePercentage; // pupil plane relative size
935 
937  bool m_dirty;
938 };
939 
940 
941 #endif // _seOptics_


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