From 1155bf3ed284d0312d3f7dbb746905f6e1178fe4 Mon Sep 17 00:00:00 2001 From: Klaus Basan Date: Mon, 16 Oct 2017 09:17:35 +0200 Subject: [PATCH] Ref T171, interpolator log * set interpolator type spline or linear * set some detail values for spline log * removed unused variable --- src/blackmisc/simulation/interpolationlogger.cpp | 4 +++- src/blackmisc/simulation/interpolationlogger.h | 1 + src/blackmisc/simulation/interpolatorlinear.cpp | 4 ++-- src/blackmisc/simulation/interpolatorspline.cpp | 9 ++++++++- 4 files changed, 14 insertions(+), 4 deletions(-) diff --git a/src/blackmisc/simulation/interpolationlogger.cpp b/src/blackmisc/simulation/interpolationlogger.cpp index 693dfd3ce..919d0e7c6 100644 --- a/src/blackmisc/simulation/interpolationlogger.cpp +++ b/src/blackmisc/simulation/interpolationlogger.cpp @@ -154,7 +154,8 @@ namespace BlackMisc if (logs.isEmpty()) { return {}; } const QString tableHeader = QLatin1String("") % - QLatin1String("cs.CSVTOLtimestampsince") % + QLatin1String("cs.Int") % + QLatin1String("CSVTOLtimestampsince") % QLatin1String("ts oldts newts cur") % QLatin1String("ΔtΔt fr.fraction") % QLatin1String("lat.oldlat.newlat.cur") % @@ -184,6 +185,7 @@ namespace BlackMisc tableRows += QLatin1String("") % (changedNewPosition ? QLatin1String("*") : QLatin1String("")) % + QLatin1String("") % log.interpolator % QLatin1String("") % QLatin1String("") % log.callsign.asString() % QLatin1String("") % QLatin1String("") % boolToYesNo(log.vtolAircraft) % QLatin1String("") % QLatin1String("") % msSinceEpochToTime(log.timestamp) % QLatin1String("") % diff --git a/src/blackmisc/simulation/interpolationlogger.h b/src/blackmisc/simulation/interpolationlogger.h index e7227898b..210b57d15 100644 --- a/src/blackmisc/simulation/interpolationlogger.h +++ b/src/blackmisc/simulation/interpolationlogger.h @@ -54,6 +54,7 @@ namespace BlackMisc //! Log entry for situation interpolation struct SituationLog { + QChar interpolator; //!< what interpolator is used qint64 timestamp = -1; //!< current timestamp double groundFactor = -1; //!< current ground factor double vtolAircraft = false; //!< VTOL aircraft diff --git a/src/blackmisc/simulation/interpolatorlinear.cpp b/src/blackmisc/simulation/interpolatorlinear.cpp index 9d06dd2bf..84777eb47 100644 --- a/src/blackmisc/simulation/interpolatorlinear.cpp +++ b/src/blackmisc/simulation/interpolatorlinear.cpp @@ -36,7 +36,7 @@ namespace BlackMisc namespace Simulation { CInterpolatorLinear::Interpolant CInterpolatorLinear::getInterpolant(qint64 currentTimeMsSinceEpoc, - const CInterpolationAndRenderingSetup &setup, const CInterpolationHints &hints, CInterpolationStatus &status, CInterpolationLogger::SituationLog &log) const + const CInterpolationAndRenderingSetup &setup, const CInterpolationHints &hints, CInterpolationStatus &status, CInterpolationLogger::SituationLog &log) const { Q_UNUSED(setup); Q_UNUSED(hints); @@ -94,11 +94,11 @@ namespace BlackMisc } CAircraftSituation currentSituation(oldSituation); // also sets ground elevation if available - CCoordinateGeodetic currentPosition; // Time between start and end packet const double deltaTimeMs = newSituation.getAdjustedMSecsSinceEpoch() - oldSituation.getAdjustedMSecsSinceEpoch(); Q_ASSERT_X(deltaTimeMs >= 0, Q_FUNC_INFO, "Negative delta time"); + log.interpolator = 'l'; log.deltaTimeMs = deltaTimeMs; // Fraction of the deltaTime, ideally [0.0 - 1.0] diff --git a/src/blackmisc/simulation/interpolatorspline.cpp b/src/blackmisc/simulation/interpolatorspline.cpp index c079e8927..f440d4391 100644 --- a/src/blackmisc/simulation/interpolatorspline.cpp +++ b/src/blackmisc/simulation/interpolatorspline.cpp @@ -128,12 +128,19 @@ namespace BlackMisc m_altitudeUnit = situationsOlder.begin()->getAltitude().getUnit(); m_pbh = { *situationsOlder.begin(), *(situationsNewer.end() - 1) }; } + log.interpolator = 's'; log.oldSituation = m_pbh.getOldSituation(); log.newSituation = m_pbh.getNewSituation(); status.setInterpolationSucceeded(true); status.setChangedPosition(true); - m_pbh.setTimeFraction(static_cast(currentTimeMsSinceEpoc - m_prevSampleTime) / static_cast(m_nextSampleTime - m_prevSampleTime)); + const double dt1 = static_cast(currentTimeMsSinceEpoc - m_prevSampleTime); + const double dt2 = static_cast(m_nextSampleTime - m_prevSampleTime); + const double timeFraction = dt1 / dt2; + log.deltaTimeMs = dt1; + log.deltaTimeFractionMs = dt2; + log.simulationTimeFraction = timeFraction; + m_pbh.setTimeFraction(timeFraction); return { *this, currentTimeMsSinceEpoc }; }