summaryrefslogtreecommitdiff
path: root/ride
diff options
context:
space:
mode:
authorMartin Kagamino Lehoux <martin@lehoux.net>2026-08-14 15:23:48 +0200
committerMartin Kagamino Lehoux <martin@lehoux.net>2026-08-14 15:23:48 +0200
commiteac1145e29e1a2a2ff5d9654ca010071a5840843 (patch)
tree59e62e1e0f67b71083c30e4d7f234a8370075c9a /ride
parent991ab2f179b2d84e8b0ce6d0634b4033f20e4b86 (diff)
feat: add official climb workflow
Diffstat (limited to 'ride')
-rw-r--r--ride/climb.go13
-rw-r--r--ride/ride.go5
2 files changed, 18 insertions, 0 deletions
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}
+}