diff --git a/src/blackmisc/aviation/aircraftsituation.cpp b/src/blackmisc/aviation/aircraftsituation.cpp index 0aaea515b..1348b6d65 100644 --- a/src/blackmisc/aviation/aircraftsituation.cpp +++ b/src/blackmisc/aviation/aircraftsituation.cpp @@ -587,25 +587,11 @@ namespace BlackMisc::Aviation return true; } - bool CAircraftSituation::setOnGroundByUnderflowDetection(const CLength &cg) - { - IsOnGround og = this->isOnGroundByElevation(cg); - if (og == OnGroundSituationUnknown) { return false; } - this->setOnGround(og, OnGroundByElevationAndCG); - return true; - } - QString CAircraftSituation::getOnGroundInfo() const { return this->onGroundAsString() % u' ' % this->getOnGroundDetailsAsString(); } - CLength CAircraftSituation::getGroundElevationDistance() const - { - // returns NULL if elevation is N/A - return this->getGroundElevationPlane().calculateGreatCircleDistance(*this); - } - CAircraftSituation::GndElevationInfo CAircraftSituation::getGroundElevationInfo() const { if (!this->hasGroundElevation()) { return NoElevationInfo; } @@ -667,11 +653,6 @@ namespace BlackMisc::Aviation return true; } - CAircraftSituation::IsOnGround CAircraftSituation::isOnGroundByElevation() const - { - return this->isOnGroundByElevation(m_cg); - } - CAircraftSituation::IsOnGround CAircraftSituation::isOnGroundByElevation(const CLength &cg) const { const CLength groundDistance = this->getGroundDistance(cg); @@ -761,12 +742,6 @@ namespace BlackMisc::Aviation this->setGroundElevationInfo(NoElevationInfo); } - const CLength &CAircraftSituation::getGroundElevationRadius() const - { - if (!this->hasGroundElevation()) { return CLength::null(); } - return m_groundElevationPlane.getRadius(); - } - CLength CAircraftSituation::getHeightAboveGround() const { if (this->getAltitude().isNull()) { return CLength::null(); } @@ -998,12 +973,6 @@ namespace BlackMisc::Aviation m_cg = cg.switchedUnit(this->getAltitudeOrDefaultUnit()); } - const CLength &CAircraftSituation::getSceneryOffsetOrZero() const - { - static const CLength zero(0, CLengthUnit::ft()); - return this->hasSceneryOffset() ? m_sceneryOffset : zero; - } - void CAircraftSituation::setSceneryOffset(const CLength &sceneryOffset) { m_sceneryOffset = sceneryOffset.switchedUnit(this->getAltitudeOrDefaultUnit()); diff --git a/src/blackmisc/aviation/aircraftsituation.h b/src/blackmisc/aviation/aircraftsituation.h index 64f8fab75..cd69282d3 100644 --- a/src/blackmisc/aviation/aircraftsituation.h +++ b/src/blackmisc/aviation/aircraftsituation.h @@ -261,9 +261,6 @@ namespace BlackMisc //! Set on ground as interpolated from ground fatcor bool setOnGroundFromGroundFactorFromInterpolation(double threshold = 0.5); - //! Set on ground by underflow detection, detects below ground scenarios - bool setOnGroundByUnderflowDetection(const PhysicalQuantities::CLength &cg); - //! On ground info as string QString getOnGroundInfo() const; @@ -282,9 +279,6 @@ namespace BlackMisc //! Elevation of the ground directly beneath const Geo::CElevationPlane &getGroundElevationPlane() const { return m_groundElevationPlane; } - //! Distance of coordinates of situation to coordinates of elevation plane - PhysicalQuantities::CLength getGroundElevationDistance() const; - //! How did we get gnd.elevation? GndElevationInfo getGroundElevationInfo() const; @@ -323,7 +317,6 @@ namespace BlackMisc //! @{ //! Is on ground by elevation data, requires elevation and CG - IsOnGround isOnGroundByElevation() const; IsOnGround isOnGroundByElevation(const PhysicalQuantities::CLength &cg) const; //! @} @@ -346,9 +339,6 @@ namespace BlackMisc //! Reset ground elevation void resetGroundElevation(); - //! Distance of ground elevation - const PhysicalQuantities::CLength &getGroundElevationRadius() const; - //! Height above ground. PhysicalQuantities::CLength getHeightAboveGround() const; @@ -471,15 +461,9 @@ namespace BlackMisc //! Get scenery offset if any const PhysicalQuantities::CLength &getSceneryOffset() const { return m_sceneryOffset; } - //! Get scenery offset if any or zero ("0") - const PhysicalQuantities::CLength &getSceneryOffsetOrZero() const; - //! Set scenery offset void setSceneryOffset(const PhysicalQuantities::CLength &sceneryOffset); - //! Has scenery offset? - bool hasSceneryOffset() const { return !m_sceneryOffset.isNull(); } - //! Set flag indicating this is an interim position update void setInterimFlag(bool flag) { m_isInterim = flag; } diff --git a/src/blackmisc/aviation/aircraftsituationchange.cpp b/src/blackmisc/aviation/aircraftsituationchange.cpp index 227e5f9fd..dbd73c87e 100644 --- a/src/blackmisc/aviation/aircraftsituationchange.cpp +++ b/src/blackmisc/aviation/aircraftsituationchange.cpp @@ -32,8 +32,6 @@ namespace BlackMisc::Aviation qRegisterMetaType(); } - CAircraftSituationChange::CAircraftSituationChange() {} - CAircraftSituationChange::CAircraftSituationChange(const CAircraftSituationList &situations, const PhysicalQuantities::CLength &cg, bool isVtol, bool alreadySortedLatestFirst, bool calcStdDeviations) { if (situations.size() < 2) { return; } diff --git a/src/blackmisc/aviation/aircraftsituationchange.h b/src/blackmisc/aviation/aircraftsituationchange.h index 4446e7379..221ffc1f0 100644 --- a/src/blackmisc/aviation/aircraftsituationchange.h +++ b/src/blackmisc/aviation/aircraftsituationchange.h @@ -65,7 +65,7 @@ namespace BlackMisc }; //! Default constructor. - CAircraftSituationChange(); + CAircraftSituationChange() = default; //! Ctor with n situations //! \remark the timestamps of the latest situation will be used @@ -116,25 +116,9 @@ namespace BlackMisc //! \copydoc BlackMisc::Aviation::CAircraftSituationList::containsPushBack bool containsPushBack() const { return m_containsPushBack; } - //! Ground distance (AGL) if it can be calculated, otherwise NULL - //! \note distance is without CG, so on ground it can also be used to calculate - PhysicalQuantities::CLengthPair getGroundDistanceStdDevAndMean() const { return PhysicalQuantities::CLengthPair(m_gndDistStdDev, m_gndDistMean); } - - //! \copydoc BlackMisc::Aviation::CAircraftSituationList::altitudeStandardDeviationAndMean - CAltitudePair getAltitudeStdDevAndMean() const { return CAltitudePair(m_altStdDev, m_altMean); } - //! \copydoc BlackMisc::Aviation::CAircraftSituationList::elevationStandardDeviationAndMean CAltitudePair getElevationStdDevAndMean() const { return CAltitudePair(m_elvStdDev, m_elvMean); } - //! \copydoc BlackMisc::Aviation::CAircraftSituationList::groundSpeedStandardDeviationAndMean - PhysicalQuantities::CSpeedPair getGroundSpeedStdDevAndMean() const { return PhysicalQuantities::CSpeedPair(m_gsStdDev, m_gsMean); } - - //! \copydoc BlackMisc::Aviation::CAircraftSituationList::pitchStandardDeviationAndMean - PhysicalQuantities::CAnglePair getPitchStdDevAndMean() const { return PhysicalQuantities::CAnglePair(m_pitchStdDev, m_pitchMean); } - - //! \copydoc BlackMisc::Aviation::CAircraftSituationList::minMaxGroundDistance - PhysicalQuantities::CLengthPair getMinMaxGroundDistance() const { return PhysicalQuantities::CLengthPair(m_minGroundDistance, m_maxGroundDistance); } - //! Guess on ground flag bool guessOnGround(CAircraftSituation &situation, const Simulation::CAircraftModel &model) const; diff --git a/src/blackmisc/aviation/aircraftsituationlist.cpp b/src/blackmisc/aviation/aircraftsituationlist.cpp index 7a8011373..5f1128fc0 100644 --- a/src/blackmisc/aviation/aircraftsituationlist.cpp +++ b/src/blackmisc/aviation/aircraftsituationlist.cpp @@ -16,9 +16,6 @@ BLACK_DEFINE_SEQUENCE_MIXINS(BlackMisc::Aviation, CAircraftSituation, CAircraftS namespace BlackMisc::Aviation { - CAircraftSituationList::CAircraftSituationList() - {} - CAircraftSituationList::CAircraftSituationList(const CSequence &other) : CSequence(other) {} @@ -64,45 +61,6 @@ namespace BlackMisc::Aviation return c; } - int CAircraftSituationList::extrapolateGroundFlag() - { - if (this->isEmpty()) { return 0; } - CAircraftSituationList withInfo = this->findByInboundGroundInformation(true); - withInfo.sortLatestFirst(); - if (withInfo.isEmpty()) { return 0; } - const CAircraftSituation latest = withInfo.front(); - - int c = 0; - for (CAircraftSituation &situation : *this) - { - if (situation.isNewerThanAdjusted(latest)) - { - situation.setOnGround(latest.getOnGround(), latest.getOnGroundDetails()); - c++; - } - } - return c; - } - - CAircraftSituationList CAircraftSituationList::findByInboundGroundInformation(bool hasGroundInfo) const - { - return this->findBy(&CAircraftSituation::hasInboundGroundDetails, hasGroundInfo); - } - - bool CAircraftSituationList::containsSituationWithoutGroundElevation() const - { - return this->contains(&CAircraftSituation::hasGroundElevation, false); - } - - bool CAircraftSituationList::containsGroundElevationOutsideRange(const CLength &range) const - { - for (const CAircraftSituation &situation : *this) - { - if (situation.getGroundElevationPlane().getRadius() > range) { return true; } - } - return false; - } - bool CAircraftSituationList::containsOnGroundDetails(CAircraftSituation::OnGroundDetails details) const { return this->contains(&CAircraftSituation::getOnGroundDetails, details); @@ -300,11 +258,6 @@ namespace BlackMisc::Aviation return false; } - bool CAircraftSituationList::containsOnGroundFromNetwork() const - { - return this->contains(&CAircraftSituation::isOnGroundFromNetwork, true); - } - int CAircraftSituationList::countOnGround(CAircraftSituation::IsOnGround og) const { int c = 0; @@ -315,28 +268,6 @@ namespace BlackMisc::Aviation return c; } - int CAircraftSituationList::countOnGroundWithElevation(CAircraftSituation::IsOnGround og) const - { - int c = 0; - for (const CAircraftSituation &situation : *this) - { - if (situation.hasGroundElevation()) { continue; } - if (situation.getOnGround() == og) { c++; } - } - return c; - } - - CAircraftSituationList CAircraftSituationList::findOnGroundWithElevation(CAircraftSituation::IsOnGround og) const - { - CAircraftSituationList found; - for (const CAircraftSituation &situation : *this) - { - if (situation.hasGroundElevation()) { continue; } - if (situation.getOnGround() == og) { found.push_back(situation); } - } - return found; - } - CAircraftSituation CAircraftSituationList::findClosestElevationWithinRange(const ICoordinateGeodetic &coordinate, const CLength &range) const { const CLength r = range.isNull() || range < CElevationPlane::singlePointRadius() ? CElevationPlane::singlePointRadius() : range; @@ -451,30 +382,6 @@ namespace BlackMisc::Aviation return values; } - QList CAircraftSituationList::correctedAltitudeValues(const CLengthUnit &unit, const CLength &cg) const - { - QList values; - for (const CAircraftSituation &s : *this) - { - const CAltitude alt(s.getCorrectedAltitude(cg)); - if (alt.isNull()) { continue; } - values.push_back(alt.value(unit)); - } - return values; - } - - QList CAircraftSituationList::groundDistanceValues(const CLengthUnit &unit, const CLength &cg) const - { - QList values; - for (const CAircraftSituation &s : *this) - { - const CLength distance(s.getGroundDistance(cg)); - if (distance.isNull()) { continue; } - values.push_back(distance.value(unit)); - } - return values; - } - CSpeedPair CAircraftSituationList::groundSpeedStandardDeviationAndMean() const { const QList gsValues = this->groundSpeedValues(CSpeedUnit::kts()); @@ -491,50 +398,6 @@ namespace BlackMisc::Aviation return CAnglePair(CAngle(pitchDeg.first, CAngleUnit::deg()), CAngle(pitchDeg.second, CAngleUnit::deg())); } - CAltitudePair CAircraftSituationList::elevationStandardDeviationAndMean() const - { - const QList elvValues = this->elevationValues(CAltitude::defaultUnit()); - if (elvValues.size() != this->size()) { return CAltitudePair(CAltitude::null(), CAltitude::null()); } - const QPair elvFt = CMathUtils::standardDeviationAndMean(elvValues); - return CAltitudePair(CAltitude(elvFt.first, CAltitude::MeanSeaLevel, CAltitude::defaultUnit()), CAltitude(elvFt.second, CAltitude::MeanSeaLevel, CAltitude::defaultUnit())); - } - - CAltitudePair CAircraftSituationList::altitudeStandardDeviationAndMean() const - { - const QList altValues = this->altitudeValues(CAltitude::defaultUnit()); - if (altValues.size() != this->size()) { return CAltitudePair(CAltitude::null(), CAltitude::null()); } - const QPair altFt = CMathUtils::standardDeviationAndMean(altValues); - return CAltitudePair(CAltitude(altFt.first, CAltitude::MeanSeaLevel, CAltitude::defaultUnit()), CAltitude(altFt.second, CAltitude::MeanSeaLevel, CAltitude::defaultUnit())); - } - - QPair CAircraftSituationList::minMaxGroundDistance(const CLength &cg) const - { - const QList gndDistance = this->groundDistanceValues(CAltitude::defaultUnit(), cg); - if (gndDistance.size() != this->size()) { return QPair(CLength::null(), CLength::null()); } - const auto gndDistMinMax = std::minmax_element(gndDistance.constBegin(), gndDistance.constEnd()); - const double gndDistMin = *gndDistMinMax.first; - const double gndDistMax = *gndDistMinMax.second; - return QPair(CLength(gndDistMin, CAltitude::defaultUnit()), CLength(gndDistMax, CAltitude::defaultUnit())); - } - - CAltitudePair CAircraftSituationList::altitudeAglStandardDeviationAndMean() const - { - const QList altValues = this->altitudeValues(CLengthUnit::ft()); - if (altValues.size() != this->size()) { return CAltitudePair(CAltitude::null(), CAltitude::null()); } - - const QList elvValues = this->elevationValues(CLengthUnit::ft()); - if (elvValues.size() != this->size()) { return CAltitudePair(CAltitude::null(), CAltitude::null()); } - - QList altElvDeltas; - for (int i = 0; i < altValues.size(); i++) - { - const double delta = altValues[i] - elvValues[i]; - altElvDeltas.push_back(delta); - } - const QPair deltaFt = CMathUtils::standardDeviationAndMean(altElvDeltas); - return CAltitudePair(CAltitude(deltaFt.first, CAltitude::MeanSeaLevel, CAltitude::defaultUnit()), CAltitude(deltaFt.second, CAltitude::MeanSeaLevel, CAltitude::defaultUnit())); - } - int CAircraftSituationList::transferElevationForward(const CLength &radius) { if (this->size() < 2) { return 0; } diff --git a/src/blackmisc/aviation/aircraftsituationlist.h b/src/blackmisc/aviation/aircraftsituationlist.h index 1db8a767f..fdc5704e6 100644 --- a/src/blackmisc/aviation/aircraftsituationlist.h +++ b/src/blackmisc/aviation/aircraftsituationlist.h @@ -45,7 +45,7 @@ namespace BlackMisc using CSequence::CSequence; //! Default constructor. - CAircraftSituationList(); + CAircraftSituationList() = default; //! Construct from a base class object. CAircraftSituationList(const CSequence &other); @@ -65,18 +65,6 @@ namespace BlackMisc //! Adjust flag from parts by using CAircraftSituation::adjustGroundFlag int adjustGroundFlag(const CAircraftParts &parts, double timeDeviationFactor = 0.1); - //! Extrapolate ground flag into the future - int extrapolateGroundFlag(); - - //! Find if having inbound information - CAircraftSituationList findByInboundGroundInformation(bool hasGroundInfo) const; - - //! Any situation without ground info? - bool containsSituationWithoutGroundElevation() const; - - //! Any situation outside range? - bool containsGroundElevationOutsideRange(const PhysicalQuantities::CLength &range) const; - //! Contains on ground details? bool containsOnGroundDetails(CAircraftSituation::OnGroundDetails details) const; @@ -84,9 +72,6 @@ namespace BlackMisc //! \remark only valid for non VTOL aircraft bool containsPushBack() const; - //! Contains any gnd.flag \c true ? - bool containsOnGroundFromNetwork() const; - //! Are all on ground details the same? bool areAllOnGroundDetailsSame(CAircraftSituation::OnGroundDetails details) const; @@ -129,12 +114,6 @@ namespace BlackMisc //! Count the number of situations with CAircraftSituation::IsOnGround int countOnGround(CAircraftSituation::IsOnGround og) const; - //! Count the number of situations with CAircraftSituation::IsOnGround and elevation - int countOnGroundWithElevation(CAircraftSituation::IsOnGround og) const; - - //! Situations with CAircraftSituation::IsOnGround and elevation - CAircraftSituationList findOnGroundWithElevation(CAircraftSituation::IsOnGround og) const; - //! CLosest elevation within given range CAircraftSituation findClosestElevationWithinRange(const Geo::ICoordinateGeodetic &coordinate, const PhysicalQuantities::CLength &range = Geo::CElevationPlane::singlePointRadius()) const; @@ -166,31 +145,12 @@ namespace BlackMisc //! All altitude values QList altitudeValues(const PhysicalQuantities::CLengthUnit &unit) const; - //! All corrected altitude values - QList correctedAltitudeValues(const PhysicalQuantities::CLengthUnit &unit, const PhysicalQuantities::CLength &cg) const; - - //! All ground distance values - QList groundDistanceValues(const PhysicalQuantities::CLengthUnit &unit, const PhysicalQuantities::CLength &cg) const; - //! Pitch angles standard deviation and mean PhysicalQuantities::CAnglePair pitchStandardDeviationAndMean() const; //! Ground speed standard deviation and mean PhysicalQuantities::CSpeedPair groundSpeedStandardDeviationAndMean() const; - //! Elevation standard deviation and mean - CAltitudePair elevationStandardDeviationAndMean() const; - - //! Elevation standard deviation and mean - CAltitudePair altitudeStandardDeviationAndMean() const; - - //! Elevation standard deviation and mean - //! \note distance is without CG, so on ground it can also be used to calculate - CAltitudePair altitudeAglStandardDeviationAndMean() const; - - //! Min. and max. ground distance - PhysicalQuantities::CLengthPair minMaxGroundDistance(const PhysicalQuantities::CLength &cg) const; - //! Transfer elevations forward from older to newer //! \pre requires a list which is sorted "latest first" int transferElevationForward(const PhysicalQuantities::CLength &radius = Geo::CElevationPlane::singlePointRadius());