109 if (
m_d->lastPoint.isNull()) {
111 m_d->lastTime = time;
112 m_d->lastSpeed = 0.0;
120 return m_d->lastSpeed;
123 const qreal timeDiff = time -
m_d->lastTime;
125 m_d->timeDiffsMean.addValue(timeDiff);
126 const qreal avgTimeDiff =
m_d->timeDiffsMean.filteredMean();
129 m_d->lastTime = time;
133 Private::DistanceBuffer::const_reverse_iterator it =
m_d->distances.rbegin();
134 Private::DistanceBuffer::const_reverse_iterator end =
m_d->distances.rend();
136 qreal totalDistance = 0;
137 qreal totalTime = 0.0;
138 int itemsSearched = 0;
140 for (; it != end; ++it) {
142 totalDistance += it->distance;
152 totalTime += avgTimeDiff;
154 if (itemsSearched >
m_d->numSmoothingSamples &&
162 m_d->lastSpeed = totalDistance / totalTime;
165 return m_d->lastSpeed;