3 #include "AbstractDetector.h" 4 #include <noise/RandomnessGenerator.h> 6 #include "LasSpecification.h" 13 static const double speedOfLight_mPerSec = 299792458;
18 static const double cfg_speedOfLight_mPerNanosec = 0.299792458;
23 static const double speedOfLight_mPerPicosec = 0.000299792458;
36 std::shared_ptr<AbstractDetector>
detector =
nullptr;
73 std::shared_ptr<AbstractDetector> detector,
74 glm::dvec3 absoluteBeamOrigin,
82 this->currentPulseNum = pulseNumber;
83 this->currentGpsTime = gpsTime;
111 double incidenceAngle,
112 double targetSpecularity,
113 double targetSpecularExponent
140 double incidenceAngle,
141 double targetReflectivity,
142 double targetSpecularity,
143 double targetSpecularExponent,
197 std::vector<Measurement> *allMeasurements,
198 std::mutex *allMeasurementsMutex,
199 std::vector<Measurement> *cycleMeasurements,
200 std::mutex *cycleMeasurementsMutex
215 glm::dvec3 &beamOrigin,
216 glm::dvec3 &beamDirection
double calcAtmosphericFactor(double targetRange)
Compute atmospheric factor , understood as the energy left after attenuation by air particles in rang...
Definition: AbstractPulseRunnable.cpp:32
bool writeGround
Flag to specify if ground points must be captured (true) or not (false)
Definition: AbstractPulseRunnable.h:60
Definition: Rotation.h:80
long currentGpsTime
Current GPS time in milliseconds.
Definition: AbstractPulseRunnable.h:54
static double _calcReceivedPower(double Pt, double Dr2, double R, double Bt2, double etaSys, double etaAtm, double sigma)
Compute received power .
Definition: AbstractPulseRunnable.cpp:81
Class representing a measurement.
Definition: Measurement.h:12
Base abstract class for pulse runnables.
Definition: AbstractPulseRunnable.h:29
Rotation absoluteBeamAttitude
Beam attitude.
Definition: AbstractPulseRunnable.h:45
double calcReceivedPower(double emittedPower, double targetRange, double incidenceAngle, double targetReflectivity, double targetSpecularity, double targetSpecularExponent, double targetArea)
Solve the laser radar equation.
Definition: AbstractPulseRunnable.cpp:39
virtual void operator()()=0
Abstract operator. It must be overridden by any implementation which concretes AbstractPulseRunnable...
double calcCrossSection(double f, double Alf, double theta)
Compute cross section.
Definition: AbstractPulseRunnable.cpp:12
double phongBDRF(double incidenceAngle, double targetSpecularity, double targetSpecularExponent)
Compute the phong model.
Definition: AbstractPulseRunnable.cpp:17
void capturePoint(Measurement &m, RandomnessGenerator< double > &rg, std::vector< Measurement > *allMeasurements, std::mutex *allMeasurementsMutex, std::vector< Measurement > *cycleMeasurements, std::mutex *cycleMeasurementsMutex)
Capture point if proceed and write it.
Definition: AbstractPulseRunnable.cpp:93
glm::dvec3 absoluteBeamOrigin
Beam origin in absolute coordinates.
Definition: AbstractPulseRunnable.h:41
std::shared_ptr< AbstractDetector > detector
Detector used to simulate pulse.
Definition: AbstractPulseRunnable.h:36
AbstractPulseRunnable(std::shared_ptr< AbstractDetector > detector, glm::dvec3 absoluteBeamOrigin, Rotation absoluteBeamAttitude, int pulseNumber, long gpsTime)
Base constructor for pulse runnables.
Definition: AbstractPulseRunnable.h:72
int currentPulseNum
Number of current pulse.
Definition: AbstractPulseRunnable.h:50
void applyMeasurementError(RandomnessGenerator< double > &rg, double &distance, glm::dvec3 &beamOrigin, glm::dvec3 &beamDirection)
Apply error to received measurement.
Definition: AbstractPulseRunnable.cpp:131