Calculating Cumulative elevation gain give me wierd results

前端 未结 1 1132
感情败类
感情败类 2021-01-26 18:08

I have the app that use CoreLocation and track user movement.
When user is walking or driving I save each coordinate to local database (lat/lng/alt) so I can d

相关标签:
1条回答
  • 2021-01-26 18:16

    I took the values you've listed and ran them as follows:

    NSArray *altitudes = @[ @(0.000000), @(181.678055), @(181.891495), @(182.786850), @(179.315399), 
                            @(177.035721), @(182.636307), @(181.259399), @(178.653015), @(192.552551), 
                            @(185.398819), @(182.693436), @(181.369766), @(154.306747), @(157.031693), 
                            @(159.748871), @(185.080856), @(198.080673), @(176.473877), @(178.646851), 
                            @(175.784424), @(178.184128), @(181.237488), @(188.956894), @(177.713181), 
                            @(193.673019), @(188.470184), @(182.749054), @(181.966507), @(181.547592), 
                            @(191.638657), @(198.713989), @(188.582977), @(197.977921), @(203.184540), 
                            @(205.108856), @(198.304123) ];
    
    float netAlt = 0.0f;
    
    // Start with the third value as we're only interesting in net gain
    for (NSInteger i = 2; i < altitudes.count; i++) {
        float oldAlt = [altitudes[i-1] floatValue];
        float newAlt = [altitudes[i] floatValue];
    
        // newAlt - oldAlt because we're interested in the 
        // difference between current and previous
        float diff = newAlt - oldAlt;
    
        netAlt += MAX(0, diff);
        printf("%.0f,", netAlt);
    }
    

    This produced the following output:

    0,1,1,1,7,7,7,21,21,21,21,21,23,26,51,64,64,67,67,69,72,80,80,96,96,96,96,96,106,113,113,122,127,129,129

    This seems reasonable and realistic to me. It's not at all clear how how you managed to get the values you have. They make no sense.

    0 讨论(0)
提交回复
热议问题