From eac1145e29e1a2a2ff5d9654ca010071a5840843 Mon Sep 17 00:00:00 2001 From: Martin Kagamino Lehoux Date: Fri, 14 Aug 2026 15:23:48 +0200 Subject: feat: add official climb workflow --- ride/climb.go | 13 +++++++++++++ ride/ride.go | 5 +++++ 2 files changed, 18 insertions(+) (limited to 'ride') diff --git a/ride/climb.go b/ride/climb.go index 9f38038..788cd61 100644 --- a/ride/climb.go +++ b/ride/climb.go @@ -40,6 +40,19 @@ func (climb Climb) EndDistanceM() float64 { return climb.ride.DistanceM(climb.rideEnd) } +func (climb Climb) StartCoord() geodist.Coord { + return climb.ride.Coord(climb.rideStart) +} + +func (climb Climb) EndCoord() geodist.Coord { + return climb.ride.Coord(climb.rideEnd) +} + +func (climb Climb) PointCoord(index int) geodist.Coord { + kcore.Assert(index >= climb.rideStart && index <= climb.rideEnd, "point is outside climb") + return climb.ride.Coord(index) +} + // TopIndex returns the highest point inside the climb, used as the crest anchor. func (climb Climb) TopIndex() int { top := climb.rideStart diff --git a/ride/ride.go b/ride/ride.go index 5471535..3458483 100644 --- a/ride/ride.go +++ b/ride/ride.go @@ -299,3 +299,8 @@ func (r *Ride) ClimbFromDist(startDist, endDist float64) Climb { } return Climb{ride: *r, rideStart: start, rideEnd: end} } + +func (r *Ride) ClimbFromIndexes(startIndex, endIndex int) Climb { + kcore.Assert(startIndex >= 0 && endIndex < r.Len() && startIndex < endIndex, "invalid climb indexes") + return Climb{ride: *r, rideStart: startIndex, rideEnd: endIndex} +} -- cgit v1.2.3