The following statistics are computed from various track. The meanings and definitions of each statistic is as follows:
Notes:
Example loop to calculate moving time and moving distance:
// Uses some trackwork conventions for methods, reader is encouraged to translate
// to the appropriate idiom for their environment.
//
// Points are assumed to be order in time such that time(pt[0]) < time(pt[1])
//
int movingTime = 0;
float movingDistance = 0.0;
for( int i = 1; i < GetNPoints(); i++ )
{
CAgVertex v1 = GetAgVertexAt(i);
CAgVertex prev = GetAgVertexAt(i-1);
time_t seconds = GetUTCTimeAtIndex(i).GetTimeT();
time_t prevSeconds = GetUTCTimeAtIndex(i-1).GetTimeT();
float distanceDelta = v1.Distance(prev);
int prevTimeDelta = CAgTime::GetTimeDifferenceSeconds(GetUTCTimeAtIndex(i), GetUTCTimeAtIndex(i-1));
float tmpspeed = (prevDelta > 0) ? distance/prevDelta : 0;
if( (prevDelta < idleTime) && (tmpspeed > idleFPS) )
{
movingTime += prevTimeDelta;
movingDistance += distanceDelta;
}
printf( "Moving seconds: %d\n", movingTime );
printf( "Moving feet : %d\n", movingDistance );
}