193 throw std::runtime_error(
"Sampling rate must be > 0");
205 params.random_seed = seed;
228 throw std::runtime_error(
"Oversample ratio must be >= 1");
230 params.oversample_ratio = ratio;
240 inline void setOrigin(
const double lat,
const double lon,
const double alt)
noexcept
242 params.origin_latitude = lat;
243 params.origin_longitude = lon;
244 params.origin_altitude = alt;
260 inline std::expected<void, std::string>
setThreads(
const unsigned threads)
noexcept
264 return std::unexpected(
"Thread count must be >= 1");
266 params.render_threads = threads;
279 params.coordinate_frame = frame;
281 params.utm_north_hemisphere = north;
Global configuration file for the project.
double RealType
Type for real numbers.
Header file for the logging system.
@ INFO
Info level for informational messages.
@ DEBUG
Debug level for general debugging information.
unsigned renderThreads() noexcept
Get the number of worker threads.
RealType simSamplingRate() noexcept
Get the simulation sampling rate.
void setRandomSeed(const unsigned seed) noexcept
Set the random seed.
RealType endTime() noexcept
Get the end time for the simulation.
std::expected< void, std::string > setThreads(const unsigned threads) noexcept
Set the number of worker threads.
RealType rate() noexcept
Get the rendering sample rate.
unsigned randomSeed() noexcept
Get the random seed.
RealType startTime() noexcept
Get the start time for the simulation.
RealType boltzmannK() noexcept
Get the Boltzmann constant.
void setTime(const RealType startTime, const RealType endTime) noexcept
Set the start and end times for the simulation.
unsigned oversampleRatio() noexcept
Get the oversampling ratio.
void setRotationAngleUnit(const RotationAngleUnit unit) noexcept
RotationAngleUnit
Defines the units used at external rotation-path boundaries.
@ Radians
Compass azimuth and elevation expressed in radians.
@ Degrees
Compass azimuth and elevation expressed in degrees.
double originLongitude() noexcept
CoordinateFrame
Defines the coordinate systems supported for scenario definition.
@ UTM
Universal Transverse Mercator.
@ ENU
East-North-Up local tangent plane (default)
@ ECEF
Earth-Centered, Earth-Fixed.
void setRate(RealType rateValue)
Set the rendering sample rate.
void setOrigin(const double lat, const double lon, const double alt) noexcept
Set the geodetic origin for the KML generator.
void setOversampleRatio(unsigned ratio)
Set the oversampling ratio.
unsigned renderFilterLength() noexcept
Get the render filter length.
void setC(RealType cValue) noexcept
Set the speed of light.
unsigned adcBits() noexcept
Get the ADC quantization bits.
void setSimSamplingRate(const RealType rate) noexcept
Set the simulation sampling rate.
RotationAngleUnit rotationAngleUnit() noexcept
void setAdcBits(const unsigned bits) noexcept
Set the ADC quantization bits.
void setCoordinateSystem(const CoordinateFrame frame, const int zone, const bool north) noexcept
Set the coordinate system for the scenario.
std::optional< RotationAngleUnit > rotationAngleUnitFromToken(const std::string_view token) noexcept
CoordinateFrame coordinateFrame() noexcept
double originLatitude() noexcept
bool utmNorthHemisphere() noexcept
RealType c() noexcept
Get the speed of light.
constexpr std::string_view rotationAngleUnitToken(const RotationAngleUnit unit) noexcept
double originAltitude() noexcept
Struct to hold simulation parameters.
static constexpr RealType DEFAULT_BOLTZMANN_K
Boltzmann constant.
RealType rate
Rendering sample rate.
double origin_longitude
Geodetic origin longitude.
RealType start
Start time for the simulation.
double origin_altitude
Geodetic origin altitude (in meters)
unsigned render_threads
Number of worker threads to use for parallel tasks.
CoordinateFrame coordinate_frame
Scenario coordinate frame.
unsigned filter_length
Default render filter length.
RealType end
End time for the simulation.
int utm_zone
UTM zone (1-60), if applicable.
unsigned oversample_ratio
Oversampling ratio.
std::optional< unsigned > random_seed
Random seed for simulation.
RealType sim_sampling_rate
Temporal sampling rate (Hz) that determines time-step resolution for radar pulse simulation.
std::string simulation_name
The name of the simulation, from the XML.
RotationAngleUnit rotation_angle_unit
External rotation angle unit.
RealType boltzmann_k
Boltzmann constant.
RealType c
Speed of light (modifiable)
static constexpr RealType DEFAULT_C
Speed of light (m/s)
unsigned adc_bits
ADC quantization bits.
bool utm_north_hemisphere
UTM hemisphere, if applicable.
double origin_latitude
Geodetic origin latitude.
void reset() noexcept
Resets the parameters to their default-constructed state.