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 Δt | fraction | "
u"lat.old | lat.new | lat.cur | "
u"lng.old | lng.new | lng.cur | "
- u"alt.old | alt.new | alt.cur | "
- u"elv.old | elv.new | elv.cur | "
+ u"alt.old | alt.2nd | alt.new | alt.cur | "
+ u"elv.old | elv.2nd | elv.new | elv.cur | "
u"gnd.factor | "
u"onGnd.old | onGnd.new | onGnd.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,