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 );
   }