Class: Manipulation::Statistics
- Inherits:
-
Object
- Object
- Manipulation::Statistics
- Defined in:
- lib/simple_trail/manipulation/statistics.rb
Instance Method Summary collapse
- #ascent ⇒ Object
- #ascent_calc(start, finish) ⇒ Object
- #basic_statistics ⇒ Object
- #descent ⇒ Object
- #descent_calc(start, finish) ⇒ Object
- #distance ⇒ Object
-
#initialize(points) ⇒ Statistics
constructor
A new instance of Statistics.
- #time ⇒ Object
Constructor Details
#initialize(points) ⇒ Statistics
Returns a new instance of Statistics.
5 6 7 |
# File 'lib/simple_trail/manipulation/statistics.rb', line 5 def initialize(points) @points = points end |
Instance Method Details
#ascent ⇒ Object
25 26 27 28 29 |
# File 'lib/simple_trail/manipulation/statistics.rb', line 25 def ascent (0..@points.size - 2).map do |i| ascent_calc(@points[i], @points[i + 1]) end.inject(:+) end |
#ascent_calc(start, finish) ⇒ Object
41 42 43 |
# File 'lib/simple_trail/manipulation/statistics.rb', line 41 def ascent_calc(start, finish) [0, finish[:ele].to_i - start[:ele].to_i].max end |
#basic_statistics ⇒ Object
9 10 11 12 13 14 15 16 |
# File 'lib/simple_trail/manipulation/statistics.rb', line 9 def basic_statistics { distance: distance, ascent: ascent, descent: descent, time: time } end |
#descent ⇒ Object
31 32 33 34 35 |
# File 'lib/simple_trail/manipulation/statistics.rb', line 31 def descent (0..@points.size - 2).map do |i| descent_calc(@points[i], @points[i + 1]) end.inject(:+) end |
#descent_calc(start, finish) ⇒ Object
45 46 47 |
# File 'lib/simple_trail/manipulation/statistics.rb', line 45 def descent_calc(start, finish) [0, start[:ele].to_i - finish[:ele].to_i].max end |
#distance ⇒ Object
18 19 20 21 22 23 |
# File 'lib/simple_trail/manipulation/statistics.rb', line 18 def distance latlng_points = @points.map { |p| Geokit::LatLng.new(p[:lat], p[:lon]) } (0..@points.size - 2).map do |i| latlng_points[i].distance_to(latlng_points[i + 1]) end.inject(:+) end |
#time ⇒ Object
37 38 39 |
# File 'lib/simple_trail/manipulation/statistics.rb', line 37 def time Time.parse(@points.last[:time]) - Time.parse(@points.first[:time]) end |