Ref T773, use closest positions for average height/elevation values

Testing with XPlane:

* even in EDDF the field elevations vary from 353-368ft, which means a difference of 15ft or 4m
* that means it is important to use the closest values
This commit is contained in:
Klaus Basan
2020-03-04 00:26:43 +01:00
committed by Mat Sutcliffe
parent 57153d45d7
commit ec92b6dc46
11 changed files with 31 additions and 30 deletions

View File

@@ -1423,10 +1423,11 @@ namespace BlackCore
bool fromNonMoving = false;
bool triedExtrapolation = false;
bool couldNotExtrapolate = false;
CElevationPlane averagePlane = this->averageElevationOfOnGroundAircraft(situation, CElevationPlane::majorAirportRadius(), 2, 3);
if (averagePlane.isNull())
{
averagePlane = this->averageElevationOfNonMovingAircraft(situation, CElevationPlane::majorAirportRadius(), 2);
averagePlane = this->averageElevationOfNonMovingAircraft(situation, CElevationPlane::majorAirportRadius(), 2, 3);
fromNonMoving = true;
}

View File

@@ -1181,9 +1181,9 @@ namespace BlackCore
return m_airspace->getLatestAirspaceAircraftSnapshot();
}
CElevationPlane CContextNetwork::averageElevationOfNonMovingAircraft(const CAircraftSituation &reference, const CLength &range, int minValues) const
CElevationPlane CContextNetwork::averageElevationOfNonMovingAircraft(const CAircraftSituation &reference, const CLength &range, int minValues, int sufficientValues) const
{
return m_airspace->averageElevationOfNonMovingAircraft(reference, range, minValues);
return m_airspace->averageElevationOfNonMovingAircraft(reference, range, minValues, sufficientValues);
}
void CContextNetwork::setClients(const CClientList &clients)

View File

@@ -119,7 +119,7 @@ namespace BlackCore
virtual void rememberCGFromDB(const BlackMisc::PhysicalQuantities::CLength &cgFromDB, const BlackMisc::Aviation::CCallsign &callsign) override;
virtual void rememberCGFromDB(const BlackMisc::PhysicalQuantities::CLength &cgFromDB, const QString &modelString) override;
virtual BlackMisc::Simulation::CAirspaceAircraftSnapshot getLatestAirspaceAircraftSnapshot() const override;
virtual BlackMisc::Geo::CElevationPlane averageElevationOfNonMovingAircraft(const BlackMisc::Aviation::CAircraftSituation &reference, const BlackMisc::PhysicalQuantities::CLength &range, int minValues = 1) const override;
virtual BlackMisc::Geo::CElevationPlane averageElevationOfNonMovingAircraft(const BlackMisc::Aviation::CAircraftSituation &reference, const BlackMisc::PhysicalQuantities::CLength &range, int minValues = 1, int sufficientValues = 2) const override;
virtual QList<QMetaObject::Connection> connectRemoteAircraftProviderSignals(
QObject *receiver,
std::function<void(const BlackMisc::Aviation::CAircraftSituation &)> addedSituationSlot,