mirror of
https://github.com/f4exb/sdrangel.git
synced 2025-08-04 15:02:25 -04:00
Fix 2D map tracks.
This commit is contained in:
parent
89a25c8a7f
commit
b340b92a04
@ -475,6 +475,7 @@ void ObjectMapItem::updateTrack(QList<SWGSDRangel::SWGMapCoordinate *> *track, M
|
|||||||
// We store two, rather than one, so that we have the times this position was arrived at and left
|
// We store two, rather than one, so that we have the times this position was arrived at and left
|
||||||
|
|
||||||
const bool interpolate = false;
|
const bool interpolate = false;
|
||||||
|
const bool onlyActual2D = true; // Extrapolation / smoothing doesn't look good on 2D map, so only use actual data from aircraft, not extrapolated/interpolated points
|
||||||
|
|
||||||
QGeoCoordinate *prev1 = m_takenTrackCoords.last();
|
QGeoCoordinate *prev1 = m_takenTrackCoords.last();
|
||||||
bool samePos1 = (prev1->latitude() == m_latitude) && (prev1->longitude() == m_longitude) && (prev1->altitude() == m_altitude);
|
bool samePos1 = (prev1->latitude() == m_latitude) && (prev1->longitude() == m_longitude) && (prev1->altitude() == m_altitude);
|
||||||
@ -484,6 +485,7 @@ void ObjectMapItem::updateTrack(QList<SWGSDRangel::SWGMapCoordinate *> *track, M
|
|||||||
QDateTime *prevDateTime = m_takenTrackDateTimes.last();
|
QDateTime *prevDateTime = m_takenTrackDateTimes.last();
|
||||||
|
|
||||||
QGeoCoordinate c(m_latitude, m_longitude, m_altitude);
|
QGeoCoordinate c(m_latitude, m_longitude, m_altitude);
|
||||||
|
QGeoCoordinate cActual = c;
|
||||||
int prevSize = m_takenTrackPositionExtrapolated.size();
|
int prevSize = m_takenTrackPositionExtrapolated.size();
|
||||||
|
|
||||||
if (m_altitudeDateTime.isValid() && m_positionDateTime.isValid() && (m_altitudeDateTime > m_positionDateTime))
|
if (m_altitudeDateTime.isValid() && m_positionDateTime.isValid() && (m_altitudeDateTime > m_positionDateTime))
|
||||||
@ -508,6 +510,7 @@ void ObjectMapItem::updateTrack(QList<SWGSDRangel::SWGMapCoordinate *> *track, M
|
|||||||
{
|
{
|
||||||
m_takenTrackPositionExtrapolated[m_takenTrackPositionExtrapolated.size() - 1] = true;
|
m_takenTrackPositionExtrapolated[m_takenTrackPositionExtrapolated.size() - 1] = true;
|
||||||
*m_takenTrackCoords.last() = c;
|
*m_takenTrackCoords.last() = c;
|
||||||
|
m_takenTrack.last() = QVariant::fromValue(onlyActual2D ? cActual : c);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -515,6 +518,7 @@ void ObjectMapItem::updateTrack(QList<SWGSDRangel::SWGMapCoordinate *> *track, M
|
|||||||
m_takenTrackPositionExtrapolated.push_back(true);
|
m_takenTrackPositionExtrapolated.push_back(true);
|
||||||
m_takenTrackAltitudeExtrapolated.push_back(false);
|
m_takenTrackAltitudeExtrapolated.push_back(false);
|
||||||
m_takenTrackCoords.push_back(new QGeoCoordinate(c));
|
m_takenTrackCoords.push_back(new QGeoCoordinate(c));
|
||||||
|
m_takenTrack.push_back(QVariant::fromValue(onlyActual2D ? cActual : c));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -545,6 +549,7 @@ void ObjectMapItem::updateTrack(QList<SWGSDRangel::SWGMapCoordinate *> *track, M
|
|||||||
{
|
{
|
||||||
m_takenTrackAltitudeExtrapolated[m_takenTrackPositionExtrapolated.size() - 1] = extrapolateAlt;
|
m_takenTrackAltitudeExtrapolated[m_takenTrackPositionExtrapolated.size() - 1] = extrapolateAlt;
|
||||||
*m_takenTrackCoords.last() = c;
|
*m_takenTrackCoords.last() = c;
|
||||||
|
m_takenTrack.last() = QVariant::fromValue(onlyActual2D ? cActual : c);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -552,6 +557,7 @@ void ObjectMapItem::updateTrack(QList<SWGSDRangel::SWGMapCoordinate *> *track, M
|
|||||||
m_takenTrackPositionExtrapolated.push_back(false);
|
m_takenTrackPositionExtrapolated.push_back(false);
|
||||||
m_takenTrackAltitudeExtrapolated.push_back(extrapolateAlt);
|
m_takenTrackAltitudeExtrapolated.push_back(extrapolateAlt);
|
||||||
m_takenTrackCoords.push_back(new QGeoCoordinate(c));
|
m_takenTrackCoords.push_back(new QGeoCoordinate(c));
|
||||||
|
m_takenTrack.push_back(QVariant::fromValue(onlyActual2D ? cActual : c));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -566,8 +572,8 @@ void ObjectMapItem::updateTrack(QList<SWGSDRangel::SWGMapCoordinate *> *track, M
|
|||||||
m_takenTrackPositionExtrapolated.push_back(false);
|
m_takenTrackPositionExtrapolated.push_back(false);
|
||||||
m_takenTrackAltitudeExtrapolated.push_back(false);
|
m_takenTrackAltitudeExtrapolated.push_back(false);
|
||||||
m_takenTrackCoords.push_back(new QGeoCoordinate(c));
|
m_takenTrackCoords.push_back(new QGeoCoordinate(c));
|
||||||
|
m_takenTrack.push_back(QVariant::fromValue(onlyActual2D ? cActual : c));
|
||||||
}
|
}
|
||||||
m_takenTrack.push_back(QVariant::fromValue(c));
|
|
||||||
|
|
||||||
/*if (m_takenTrackDateTimes.size() >= 2) {
|
/*if (m_takenTrackDateTimes.size() >= 2) {
|
||||||
if (*m_takenTrackDateTimes[m_takenTrackDateTimes.size() - 1] < *m_takenTrackDateTimes[m_takenTrackDateTimes.size() - 2]) {
|
if (*m_takenTrackDateTimes[m_takenTrackDateTimes.size() - 1] < *m_takenTrackDateTimes[m_takenTrackDateTimes.size() - 2]) {
|
||||||
@ -626,12 +632,17 @@ void ObjectMapItem::updateTrack(QList<SWGSDRangel::SWGMapCoordinate *> *track, M
|
|||||||
m_takenTrackCoords[idx]->setAltitude(y3[i]);
|
m_takenTrackCoords[idx]->setAltitude(y3[i]);
|
||||||
m_takenTrackPositionExtrapolated[idx] = false;
|
m_takenTrackPositionExtrapolated[idx] = false;
|
||||||
m_takenTrackAltitudeExtrapolated[idx] = false;
|
m_takenTrackAltitudeExtrapolated[idx] = false;
|
||||||
|
if (!onlyActual2D) {
|
||||||
|
m_takenTrack[idx] = QVariant::fromValue(QGeoCoordinate(y1[i], y2[i], y3[i]));
|
||||||
|
}
|
||||||
|
|
||||||
m_interpolatedCoords.append(m_takenTrackCoords[idx]);
|
m_interpolatedCoords.append(m_takenTrackCoords[idx]);
|
||||||
m_interpolatedDateTimes.append(m_takenTrackDateTimes[idx]);
|
m_interpolatedDateTimes.append(m_takenTrackDateTimes[idx]);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Update current position
|
// Update current position - Don't do this, as it can make aircraft move backwards on 2D map
|
||||||
|
if (!onlyActual2D)
|
||||||
|
{
|
||||||
m_latitude = m_takenTrackCoords.back()->latitude();
|
m_latitude = m_takenTrackCoords.back()->latitude();
|
||||||
m_longitude = m_takenTrackCoords.back()->longitude();
|
m_longitude = m_takenTrackCoords.back()->longitude();
|
||||||
m_altitude = m_takenTrackCoords.back()->altitude();
|
m_altitude = m_takenTrackCoords.back()->altitude();
|
||||||
@ -640,6 +651,7 @@ void ObjectMapItem::updateTrack(QList<SWGSDRangel::SWGMapCoordinate *> *track, M
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void ObjectMapItem::updatePredictedTrack(QList<SWGSDRangel::SWGMapCoordinate *> *track)
|
void ObjectMapItem::updatePredictedTrack(QList<SWGSDRangel::SWGMapCoordinate *> *track)
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user