111 if (
m_d->lastPoint.isNull()) {
113 m_d->lastTime = time;
114 m_d->lastSpeed = 0.0;
118 const qreal timeDiff = time -
m_d->lastTime;
120 m_d->timeDiffsMean.addValue(timeDiff);
121 const qreal avgTimeDiff =
m_d->timeDiffsMean.filteredMean();
124 m_d->lastTime = time;
128 Private::DistanceBuffer::const_reverse_iterator it =
m_d->distances.rbegin();
129 Private::DistanceBuffer::const_reverse_iterator end =
m_d->distances.rend();
131 qreal totalDistance = 0;
132 qreal totalTime = 0.0;
133 int itemsSearched = 0;
135 for (; it != end; ++it) {
137 totalDistance += it->distance;
147 totalTime += avgTimeDiff;
149 if (itemsSearched >
m_d->numSmoothingSamples &&
157 m_d->lastSpeed = totalDistance / totalTime;
160 return m_d->lastSpeed;