aboutsummaryrefslogtreecommitdiff
path: root/rideanalysis/analysis.go
diff options
context:
space:
mode:
authorMartin Kagamino Lehoux <martin@lehoux.net>2026-08-21 22:09:21 +0200
committerMartin Kagamino Lehoux <martin@lehoux.net>2026-08-21 22:09:21 +0200
commit765ea1fffcc1bd1af2e6e9645d6f138dfd4ae0eb (patch)
tree391c294b47ba703acdd8ac687634b881cb31d90d /rideanalysis/analysis.go
parented9516cbcb3c5254980a9e1dba7d8fa5ea230b35 (diff)
Require a 3.5% minimum slope on detected climbs, re-segmenting gentler stretches
A detected climb must now average at least 3.5% slope with re-segmentation: gentle drags are split into their qualifying steeper parts instead of being reported wholesale or dropped. Qualifying climbs keep their previous boundaries exactly; only regions whose classic best climb averages below the threshold get re-segmented (full-scan for the best qualifying sub-segment, found=false when none exists). QA: A/B across data/rides (362 rides) went from 137 to 133 climbs, 23 rides changed; the 7 fully-dropped rides were audited to contain zero qualifying sub-segments. Example-ride tests updated for the new behavior; the resolved "minimum slope" TODO was removed.
Diffstat (limited to 'rideanalysis/analysis.go')
-rw-r--r--rideanalysis/analysis.go2
1 files changed, 1 insertions, 1 deletions
diff --git a/rideanalysis/analysis.go b/rideanalysis/analysis.go
index f055676..fae64b8 100644
--- a/rideanalysis/analysis.go
+++ b/rideanalysis/analysis.go
@@ -46,7 +46,7 @@ func Analyze(parsed ride.Ride, passes []mountain_pass.MountainPass, officialClim
claimedRanges = append(claimedRanges, ride.Range{Start: matched.StartIndex, End: matched.EndIndex})
claimedClimbs = append(claimedClimbs, analyzedClimb(parsed, parsed.ClimbFromIndexes(matched.StartIndex, matched.EndIndex), official.Name, official.ID))
}
- for _, detectedClimb := range parsed.DetectClimbs(claimedRanges) {
+ for _, detectedClimb := range parsed.DetectClimbs(claimedRanges, ride.ClimbSlopeMinimum) {
displayClimb := detectedClimb
if matchedPass, ok := mountain_pass.MatchClimb(displayClimb, passes, passMatchRadiusM, passMatchElevationToleranceM); ok {
displayClimb.Name = matchedPass.Name