90 _gen(std::make_unique<
noise::GammaGenerator>(rngEngine, k)), _k(k)
108 std::unique_ptr<noise::GammaGenerator> _gen;
162 std::unique_ptr<RcsModel>
_model{
nullptr};
183 Target(platform, std::move(name), seed), _rcs(rcs)
221 FileTarget(
Platform* platform, std::string name,
const std::string& filename,
unsigned seed);
248 [[nodiscard]]
const std::string&
getFilename() const noexcept {
return _filename; }
251 std::unique_ptr<interp::InterpSet> _azi_samples;
252 std::unique_ptr<interp::InterpSet> _elev_samples;
253 std::string _filename;
267 return std::make_unique<IsoTarget>(platform, std::move(name), rcs, seed);
282 return std::make_unique<FileTarget>(platform, std::move(name), filename, seed);
A class representing a vector in spherical coordinates.
RealType getRcs(math::SVec3 &inAngle, math::SVec3 &outAngle, RealType time) const override
Gets the RCS value from file-based data for a specific bistatic geometry and time.
const std::string & getFilename() const noexcept
Gets the filename associated with this target's RCS data.
RealType getRcs(math::SVec3 &, math::SVec3 &, RealType) const noexcept override
Gets the constant RCS value.
RealType getConstRcs() const noexcept
Gets the constant RCS value (without fluctuation model applied).
IsoTarget(Platform *platform, std::string name, const RealType rcs, const unsigned seed)
Constructs an isotropic radar target.
Represents a physical object in the radar system.
Chi-square distributed RCS model.
RealType sampleModel() override
Samples the chi-square RCS model.
RealType getK() const noexcept
Gets the 'k' parameter (degrees of freedom) of the distribution.
RcsChiSquare(std::mt19937 &rngEngine, RealType k)
Constructs an RcsChiSquare model.
RealType sampleModel() override
Samples the constant RCS model.
Base class for RCS fluctuation models.
virtual ~RcsModel()=default
RcsModel(const RcsModel &)=delete
RcsModel & operator=(const RcsModel &)=delete
RcsModel & operator=(RcsModel &&)=delete
RcsModel(RcsModel &&)=delete
virtual RealType sampleModel()=0
Samples the RCS model to produce a value.
Base class for radar targets.
std::mt19937 & getRngEngine() noexcept
Gets the target's internal random number generator engine.
Target(Platform *platform, std::string name, const unsigned seed)
Constructs a radar target.
const RcsModel * getFluctuationModel() const
Gets the RCS fluctuation model.
virtual RealType getRcs(math::SVec3 &inAngle, math::SVec3 &outAngle, RealType time) const =0
Gets the RCS value for the target.
std::mt19937 _rng
Per-object random number generator for statistical independence.
std::unique_ptr< RcsModel > _model
The RCS fluctuation model for the target.
void setFluctuationModel(std::unique_ptr< RcsModel > in)
Sets the RCS fluctuation model.
Global configuration file for the project.
double RealType
Type for real numbers.
Header file for the interpolation of sets of data.
std::unique_ptr< Target > createIsoTarget(Platform *platform, std::string name, RealType rcs, unsigned seed)
Creates an isotropic target.
std::unique_ptr< Target > createFileTarget(Platform *platform, std::string name, const std::string &filename, unsigned seed)
Creates a file-based target.
Header file for noise generator classes.
Base class for all physical objects in the radar system.