Helios++
Helios software for LiDAR simulations
OscillatingMirrorBeamDeflector.h
1 #pragma once
2 
3 #include "AbstractBeamDeflector.h"
4 
9 
10 public:
11  // *** ATTRIBUTES *** //
12  // ******************** //
17  int cfg_device_scanProduct = 1000000;
22 
33  double cfg_device_turningPulsesf = 100.0f;
34 
35  // *** CACHE ATTRIBUTES *** //
36  // ************************** //
50 
69 
75  double cached_halfTurningPulses = -1.0;
76 
85  double cached_offsetScaleFactor = -1.0;
86 
87  // *** CONSTRUCTION / DESTRUCTION *** //
88  // ************************************ //
96  double scanAngleMax_rad,
97  double scanFreqMax_Hz,
98  double scanFreqMin_Hz,
99  int scanProduct) :
101  scanAngleMax_rad,
102  scanFreqMax_Hz,
103  scanFreqMin_Hz
104  )
105  {
106  this->cfg_device_scanProduct = scanProduct;
107  }
108  std::shared_ptr<AbstractBeamDeflector> clone() override;
109  void _clone(std::shared_ptr<AbstractBeamDeflector> abd) override;
110 
111  // *** M E T H O D S *** //
112  // *********************** //
116  void applySettings(std::shared_ptr<ScannerSettings> settings) override;
120  void doSimStep() override;
121 
178 
179  // *** GETTERS and SETTERS *** //
180  // ***************************** //
184  void setScanAngle_rad(double scanAngle_rad) override;
188  void setScanFreq_Hz(double scanFreq_Hz) override;
189 };
Base abstract class for beam deflectors.
Definition: AbstractBeamDeflector.h:10
double cached_offsetScaleFactor
Offset scale factor used to speed-up turning velocity offset computations. cached_offsetScaleFactor =...
Definition: OscillatingMirrorBeamDeflector.h:85
void setScanFreq_Hz(double scanFreq_Hz) override
Definition: OscillatingMirrorBeamDeflector.cpp:146
int cached_pulsesPerScanline
Pulses per scan line.
Definition: OscillatingMirrorBeamDeflector.h:40
int cached_bHalfThresholdPulse
The ending point for second turning around stage on top peak.
Definition: OscillatingMirrorBeamDeflector.h:68
void doSimStep() override
Definition: OscillatingMirrorBeamDeflector.cpp:63
OscillatingMirrorBeamDeflector(double scanAngleMax_rad, double scanFreqMax_Hz, double scanFreqMin_Hz, int scanProduct)
Constructor for oscillating mirror beam deflector.
Definition: OscillatingMirrorBeamDeflector.h:95
double cfg_device_turningPulsesf
Decimal encoding of cfg_device_turningPulses.
Definition: OscillatingMirrorBeamDeflector.h:33
double computeTurningVelocityOffset()
Compute the turning velocity offset.
Definition: OscillatingMirrorBeamDeflector.cpp:90
void applySettings(std::shared_ptr< ScannerSettings > settings) override
Definition: OscillatingMirrorBeamDeflector.cpp:44
int cached_aHalfThresholdPulse
The starting point for first turning around stage on top peak.
Definition: OscillatingMirrorBeamDeflector.h:56
double cached_halfTurningPulses
Half of the turning pulses, because they are required to compute turning velocity offset...
Definition: OscillatingMirrorBeamDeflector.h:75
void setScanAngle_rad(double scanAngle_rad) override
Definition: OscillatingMirrorBeamDeflector.cpp:127
int cfg_device_turningPulses
How many pulses are required for the turning around.
Definition: OscillatingMirrorBeamDeflector.h:28
int cached_halfThresholdPulse
The starting point for second turning around stage on top peak.
Definition: OscillatingMirrorBeamDeflector.h:62
int cfg_device_scanProduct
Scan product to limit maximum scan angle and the scanning frequency.
Definition: OscillatingMirrorBeamDeflector.h:17
int cached_thresholdPulse
At which pulse step the turning around must be computed. cached_threshold_pulse = cached_pulsesPerSca...
Definition: OscillatingMirrorBeamDeflector.h:49
int currentScanLinePulse
Current scan line pulse.
Definition: OscillatingMirrorBeamDeflector.h:21
Class representing an oscillating mirror beam deflector.
Definition: OscillatingMirrorBeamDeflector.h:8