72 double sincAntennaGain(
double theta,
double alpha,
double beta,
double gamma);
125 double& destLatitude,
double& destLongitude);
153 void writePoint(std::ostream& out,
const std::string& indent,
const std::string& name,
const std::string& styleUrl,
154 const std::string& coordinates,
double objectAltitude,
double referenceAltitude);
165 void writeAntennaBeamLine(std::ostream& out,
const std::string& indent,
const std::string& name,
166 const std::string& style,
const std::string& startCoords,
const std::string& endCoords);
190 const std::string& indent);
201 const std::optional<double>& angle3DbDropDeg,
const std::string& indent);
212 const KmlContext& ctx,
const std::string& indent);
224 double refAlt,
const KmlContext& ctx,
const std::string& indent);
235 const KmlContext& ctx,
const std::string& indent);
247 double refAlt,
const KmlContext& ctx,
const std::string& indent);
259 double refAlt,
const KmlContext& ctx,
const std::string& indent);
271 const std::vector<const radar::Object*>& objects,
const KmlContext& ctx,
272 double referenceAltitude,
const std::string& indent);
Represents a Gaussian-shaped antenna gain pattern.
Represents a parabolic reflector antenna.
Represents a square horn antenna.
The World class manages the simulator environment.
A class representing a vector in rectangular coordinates.
Represents a radar system on a platform.
Classes and operations for 3D geometry.
void generateTrackEndpointsKml(std::ostream &out, const radar::Platform *platform, const double refAlt, const KmlContext &ctx, const std::string &indent)
Generates KML rendering start and end pushpins for a moving platform's track.
void writePoint(std::ostream &out, const std::string &indent, const std::string &name, const std::string &styleUrl, const std::string &coordinates, const double objectAltitude, const double referenceAltitude)
Writes a KML <Point> placemark to the output stream.
std::string formatCoordinates(const double lon, const double lat, const double alt)
Formats coordinates into a comma-separated string suitable for KML <coordinates>.
std::vector< std::pair< double, double > > generateCircleCoordinates(const double lat, const double lon, const double radius_km)
Generates a collection of points tracing a circle around a center coordinate.
double findSquareHorn3DbDropAngle(const antenna::SquareHorn *squarehornAnt, const double wavelength)
Calculates the 3dB drop angle for a Square Horn antenna.
void generateDirectionalAntennaKml(std::ostream &out, const radar::Platform *platform, const KmlContext &ctx, const std::optional< double > &angle3DbDropDeg, const std::string &indent)
Renders the visual pointing representation for a directional (beam) antenna.
double findParabolic3DbDropAngle(const antenna::Parabolic *parabolicAnt, const double wavelength)
Calculates the 3dB drop angle for a Parabolic antenna.
std::string getPlacemarkStyleForPlatform(const std::vector< const radar::Object * > &objects)
Determines the proper KML style definition ID to use based on the platform's attached objects.
double sincAntennaGain(const double theta, const double alpha, const double beta, const double gamma)
Calculates a normalized sinc-based antenna gain mapping.
double findGaussian3DbDropAngle(const antenna::Gaussian *gaussianAnt)
Calculates the 3dB drop angle for a Gaussian antenna.
void generateKmlToStream(std::ostream &out, const core::World &world, const KmlContext &ctx)
Master entry point designed to convert the comprehensive simulation world state into a valid KML docu...
double find3DbDropAngle(const double alpha, const double beta, const double gamma)
Numerically determines the 3dB drop angle for a parameterized generic antenna.
void generateDynamicPathKml(std::ostream &out, const radar::Platform *platform, const std::string &styleUrl, const double refAlt, const KmlContext &ctx, const std::string &indent)
Generates KML for a continuously moving dynamic platform path.
void generateAntennaKml(std::ostream &out, const radar::Platform *platform, const radar::Radar *radar, const KmlContext &ctx, const std::string &indent)
Dispatch function that selects and generates the appropriate KML for a given radar's antenna.
const radar::Radar * getPrimaryRadar(const std::vector< const radar::Object * > &objects)
Identifies the primary radar object within a platform for styling and direction tracking.
std::function< void(const math::Vec3 &, double &, double &, double &)> ConverterFunc
Callback signature used for converting math coordinates to lat/lon/altitude.
void processPlatform(std::ostream &out, const radar::Platform *platform, const std::vector< const radar::Object * > &objects, const KmlContext &ctx, const double referenceAltitude, const std::string &indent)
Orchestrates full processing and rendering of an individual platform into the KML stream.
void calculateDestinationCoordinate(const double startLatitude, const double startLongitude, const double angle, const double distance, double &destLatitude, double &destLongitude)
Calculates a destination coordinate given a starting position, bearing, and distance.
void writeKmlHeaderAndStyles(std::ostream &out, const KmlContext &ctx)
Writes the standard KML preamble and style definitions to the output stream.
void generateStaticPlacemarkKml(std::ostream &out, const radar::Platform *platform, const std::string &styleUrl, const double refAlt, const KmlContext &ctx, const std::string &indent)
Generates a simple static placemark KML for a non-moving platform.
void generatePlatformPathKml(std::ostream &out, const radar::Platform *platform, const std::string &style, const double refAlt, const KmlContext &ctx, const std::string &indent)
Dispatches the generation of a platform's path representation (static vs dynamic).
void writeAntennaBeamLine(std::ostream &out, const std::string &indent, const std::string &name, const std::string &style, const std::string &startCoords, const std::string &endCoords)
Writes a visual cone/beam line representing the antenna look direction.
void generateIsotropicAntennaKml(std::ostream &out, const math::Vec3 &position, const KmlContext &ctx, const std::string &indent)
Renders the visual representation for an isotropic antenna into the output stream.
Defines the Parameters struct and provides methods for managing simulation parameters.
Struct to hold simulation parameters.
Context data required during KML generation.
params::Parameters parameters
A copy of the global simulation parameters.
ConverterFunc converter
Function used to translate simulation Cartesian space into geographic coords.