diff options
Diffstat (limited to 'ride')
| -rw-r--r-- | ride/climb.go | 13 | ||||
| -rw-r--r-- | ride/ride.go | 5 |
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} +} |