From ee421fe33cfb438ca1a777e52dfed68aee418eb5 Mon Sep 17 00:00:00 2001 From: Klaus Basan Date: Sun, 16 Feb 2020 00:09:10 +0100 Subject: [PATCH] Ref T773, also log. middle position (2nd) - useful for spline --- .../simulation/interpolationlogger.cpp | 9 +++++--- .../simulation/interpolationlogger.h | 21 +++++++++++++------ 2 files changed, 21 insertions(+), 9 deletions(-) diff --git a/src/blackmisc/simulation/interpolationlogger.cpp b/src/blackmisc/simulation/interpolationlogger.cpp index f100ff2f0..aa5940450 100644 --- a/src/blackmisc/simulation/interpolationlogger.cpp +++ b/src/blackmisc/simulation/interpolationlogger.cpp @@ -302,8 +302,8 @@ namespace BlackMisc u"Interpolation ts.Sample Δtfraction" u"lat.oldlat.newlat.cur" u"lng.oldlng.newlng.cur" - u"alt.oldalt.newalt.cur" - u"elv.oldelv.newelv.cur" + u"alt.oldalt.2ndalt.newalt.cur" + u"elv.oldelv.2ndelv.newelv.cur" u"gnd.factor" u"onGnd.oldonGnd.newonGnd.cur" u"CG" @@ -320,6 +320,7 @@ namespace BlackMisc { const CAircraftSituation situationOld = log.oldestInterpolationSituation(); const CAircraftSituation situationNew = log.newestInterpolationSituation(); + const CAircraftSituation situation2nd = log.secondInterpolationSituation(); const bool changedNewPosition = (newPosTs != situationNew.getMSecsSinceEpoch()); const bool changedParts = (lastParts != log.parts); newPosTs = situationNew.getMSecsSinceEpoch(); @@ -341,7 +342,7 @@ namespace BlackMisc u"" % situationNew.getTimestampAndOffset(true) % u"" % u"" % log.situationCurrent.getTimestampAndOffset(true) % u"" % - u"" % msSinceEpochToTime(log.tsInterpolated) % u"" % + u"" % msSinceEpochToTime(log.tsInterpolated) % u"" % u"" % QString::number(log.deltaSampleTimesMs) % u"ms" % u"" % QString::number(log.simTimeFraction) % u"" % @@ -356,10 +357,12 @@ namespace BlackMisc // tableRows += u"" % situationOld.getAltitude().valueRoundedWithUnit(ft, 1) % u"" % + u"" % situation2nd.getAltitude().valueRoundedWithUnit(ft, 1) % u"" % u"" % situationNew.getAltitude().valueRoundedWithUnit(ft, 1) % u"" % u"" % log.situationCurrent.getAltitude().valueRoundedWithUnit(ft, 1) % u"" % u"" % situationOld.getGroundElevation().valueRoundedWithUnit(ft, 1) % u" " % situationOld.getGroundElevationInfoAsString() % u"" % + u"" % situation2nd.getGroundElevation().valueRoundedWithUnit(ft, 1) % u" " % situation2nd.getGroundElevationInfoAsString() % u"" % u"" % situationNew.getGroundElevation().valueRoundedWithUnit(ft, 1) % u" " % situationNew.getGroundElevationInfoAsString() % u"" % u"" % log.situationCurrent.getGroundElevation().valueRoundedWithUnit(ft, 1) % u" " % log.situationCurrent.getGroundElevationInfoAsString() % u"" % diff --git a/src/blackmisc/simulation/interpolationlogger.h b/src/blackmisc/simulation/interpolationlogger.h index 8485faa02..7ece81d49 100644 --- a/src/blackmisc/simulation/interpolationlogger.h +++ b/src/blackmisc/simulation/interpolationlogger.h @@ -17,6 +17,7 @@ #include "blackmisc/aviation/aircraftpartslist.h" #include "blackmisc/aviation/aircraftsituationchange.h" #include "blackmisc/logcategorylist.h" + #include #include #include @@ -30,13 +31,13 @@ namespace BlackMisc struct BLACKMISC_EXPORT SituationLog { QChar interpolator; //!< what interpolator is used - qint64 tsCurrent = -1; //!< current timestamp - qint64 tsInterpolated = -1; //!< timestamp interpolated - double groundFactor = -1; //!< current ground factor - double simTimeFraction = -1; //!< time fraction, expected 0..1 + qint64 tsCurrent = -1; //!< current timestamp + qint64 tsInterpolated = -1; //!< timestamp interpolated + double groundFactor = -1; //!< current ground factor + double simTimeFraction = -1; //!< time fraction, expected 0..1 double deltaSampleTimesMs = -1; //!< delta time between samples (i.e. 2 situations) - bool useParts = false; //!< supporting aircraft parts - bool vtolAircraft = false; //!< VTOL aircraft + bool useParts = false; //!< supporting aircraft parts + bool vtolAircraft = false; //!< VTOL aircraft bool interpolantRecalc = false; //!< interpolant recalculated int noNetworkSituations = 0; //!< available network situations int noInvalidSituations = 0; //!< invalid situations, missing situations for timestampd @@ -72,6 +73,14 @@ namespace BlackMisc return interpolationSituations.backOrDefault(); } + //! The second latest situation (spline) + const Aviation::CAircraftSituation &secondInterpolationSituation() const + { + if (interpolationSituations.size() < 2) { return Aviation::CAircraftSituation::null(); } + const Aviation::CAircraftSituationList::size_type i = interpolationSituations.size() - 2; // 2nd latest, latest at end + return interpolationSituations[i]; + } + //! To string QString toQString(bool withSetup, bool withCurrentSituation, bool withElevation,