FERS 1.0.0
The Flexible Extensible Radar Simulator
Loading...
Searching...
No Matches
kml_generator_utils.cpp File Reference
#include "serial/kml_generator_utils.h"
#include <GeographicLib/Geodesic.hpp>
#include <algorithm>
#include <cmath>
#include <cstddef>
#include <iomanip>
#include <map>
#include <ranges>
#include <sstream>
#include "antenna/antenna_factory.h"
#include "core/logging.h"
#include "core/world.h"
#include "math/coord.h"
#include "math/path.h"
#include "radar/platform.h"
#include "radar/radar_obj.h"
#include "radar/receiver.h"
#include "radar/target.h"
#include "radar/transmitter.h"
#include "serial/rotation_angle_utils.h"
#include "signal/radar_signal.h"
+ Include dependency graph for kml_generator_utils.cpp:

Go to the source code of this file.

Namespaces

namespace  serial
 
namespace  serial::kml_generator_utils
 

Functions

double serial::kml_generator_utils::sincAntennaGain (double theta, double alpha, double beta, double gamma)
 Calculates a normalized sinc-based antenna gain mapping.
 
double serial::kml_generator_utils::find3DbDropAngle (double alpha, double beta, double gamma)
 Numerically determines the 3dB drop angle for a parameterized generic antenna.
 
double serial::kml_generator_utils::findGaussian3DbDropAngle (const antenna::Gaussian *gaussianAnt)
 Calculates the 3dB drop angle for a Gaussian antenna.
 
double serial::kml_generator_utils::findParabolic3DbDropAngle (const antenna::Parabolic *parabolicAnt, double wavelength)
 Calculates the 3dB drop angle for a Parabolic antenna.
 
double serial::kml_generator_utils::findSquareHorn3DbDropAngle (const antenna::SquareHorn *squarehornAnt, double wavelength)
 Calculates the 3dB drop angle for a Square Horn antenna.
 
std::string serial::kml_generator_utils::formatCoordinates (double lon, double lat, double alt)
 Formats coordinates into a comma-separated string suitable for KML <coordinates>.
 
void serial::kml_generator_utils::calculateDestinationCoordinate (double startLatitude, double startLongitude, double angle, double distance, double &destLatitude, double &destLongitude)
 Calculates a destination coordinate given a starting position, bearing, and distance.
 
std::vector< std::pair< double, double > > serial::kml_generator_utils::generateCircleCoordinates (double lat, double lon, double radius_km)
 Generates a collection of points tracing a circle around a center coordinate.
 
void serial::kml_generator_utils::writeKmlHeaderAndStyles (std::ostream &out, const KmlContext &ctx)
 Writes the standard KML preamble and style definitions to the output stream.
 
void serial::kml_generator_utils::writePoint (std::ostream &out, const std::string &indent, const std::string &name, const std::string &styleUrl, const std::string &coordinates, double objectAltitude, double referenceAltitude)
 Writes a KML <Point> placemark to the output stream.
 
void serial::kml_generator_utils::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.
 
std::string serial::kml_generator_utils::getPlacemarkStyleForPlatform (const std::vector< const radar::Object * > &objects)
 Determines the proper KML style definition ID to use based on the platform's attached objects.
 
const radar::Radarserial::kml_generator_utils::getPrimaryRadar (const std::vector< const radar::Object * > &objects)
 Identifies the primary radar object within a platform for styling and direction tracking.
 
void serial::kml_generator_utils::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.
 
void serial::kml_generator_utils::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.
 
void serial::kml_generator_utils::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.
 
void serial::kml_generator_utils::generateDynamicPathKml (std::ostream &out, const radar::Platform *platform, const std::string &styleUrl, double refAlt, const KmlContext &ctx, const std::string &indent)
 Generates KML for a continuously moving dynamic platform path.
 
void serial::kml_generator_utils::generateTrackEndpointsKml (std::ostream &out, const radar::Platform *platform, double refAlt, const KmlContext &ctx, const std::string &indent)
 Generates KML rendering start and end pushpins for a moving platform's track.
 
void serial::kml_generator_utils::generateStaticPlacemarkKml (std::ostream &out, const radar::Platform *platform, const std::string &styleUrl, double refAlt, const KmlContext &ctx, const std::string &indent)
 Generates a simple static placemark KML for a non-moving platform.
 
void serial::kml_generator_utils::generatePlatformPathKml (std::ostream &out, const radar::Platform *platform, const std::string &style, double refAlt, const KmlContext &ctx, const std::string &indent)
 Dispatches the generation of a platform's path representation (static vs dynamic).
 
void serial::kml_generator_utils::processPlatform (std::ostream &out, const radar::Platform *platform, const std::vector< const radar::Object * > &objects, const KmlContext &ctx, double referenceAltitude, const std::string &indent)
 Orchestrates full processing and rendering of an individual platform into the KML stream.
 
void serial::kml_generator_utils::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 document.
 

Variables

constexpr int serial::kml_generator_utils::TRACK_NUM_DIVISIONS = 100
 
constexpr int serial::kml_generator_utils::ISOTROPIC_PATTERN_POINTS = 100
 
constexpr double serial::kml_generator_utils::ISOTROPIC_PATTERN_RADIUS_KM = 20.0
 
constexpr double serial::kml_generator_utils::DIRECTIONAL_ANTENNA_ARROW_LENGTH_M = 20000.0