I am wanting to calculate total elevation loss and gain at the end of recording Core Location data. I am having a hard time thinking of the math for this one.
Say if I started at 600 feet and I go up and down during the tracking, how would I calculate my elevation gain and loss?
Ideas?
If you wanted to track gain and loss separately, keep two cumulative member variables, netElevationLoss and netElevationGain, both initialized to 0.
- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation {
if(oldLocation == nil)
return;
double elevationChange = oldLocation.altitude - newLocation.altitude;
if (elevationChange < 0)
{
netElevationLoss += fabs(elevationChange);
}
else
{
netElevationGain += elevationChange;
}
}
You could also track total change using this method since
netElevationChange = netElevationGain - netElevationLoss
at any time.
If you go up, increase one number. If you go down, increase (or decrease?) the other.
Exactly how you decide to handle noise is up to you...