/** * @RDE_HEADER@ * Calculate line of sight * $Id$ * $HeadURL$ * $Author$ * Created by gr, SLSE, 2024-11-03 */ #include #include #include #include #pragma once namespace CesExplosions { // Options: enum Option { EXECUTE_BLDG_LOS_CALC = 1, // 0000001 EXECUTE_ELEVATION_LOS_CALC = 2, // 0000010 // OptFutureUse1 = 4, // 0000100 // OptFutureUse2 = 8, // 0001000 }; Q_DECLARE_FLAGS(Options, Option) /// brief calculate line of sight between two points /// \param exerciseId: id from exercise /// \param impactLtsCoord_absZ: Explosion Position (z = height == above MSL) /// \param participantLtsCoord_absZ: Participant Position (z = height == above MSL) /// \param lineOfSightOptions: Options which Calculation is relevant, building or terrain /// \param bLosOut: Result of calculation: true = line of sight given; false: line of sight interrupted /// \return true: no error in calculation bool lineOfSight_elevationAndBuilding(const int exerciseId, const LtsCoordTrans::LtsCoordinate &impactLtsCoord_absZ, const LtsCoordTrans::LtsCoordinate &participantLtsCoord_absZ, Options lineOfSightOptions, bool &bLosOut, std::shared_ptr proxyBuilding); Q_DECLARE_OPERATORS_FOR_FLAGS(Options) }