Class: M26::Speed
Constant Summary
Constants included from Constants
Constants::AUTHOR, Constants::DATE, Constants::EMAIL, Constants::KILOMETERS_PER_MILE, Constants::MILES_PER_KILOMETER, Constants::SECONDS_PER_HOUR, Constants::UOM_KILOMETERS, Constants::UOM_MILES, Constants::UOM_YARDS, Constants::VERSION, Constants::YARDS_PER_KILOMETER, Constants::YARDS_PER_MILE
Instance Attribute Summary collapse
-
#ag_factor ⇒ Object
Returns the value of attribute ag_factor.
-
#ag_secs ⇒ Object
Returns the value of attribute ag_secs.
-
#ag_speed ⇒ Object
Returns the value of attribute ag_speed.
-
#ag_time ⇒ Object
Returns the value of attribute ag_time.
-
#base_age ⇒ Object
Returns the value of attribute base_age.
-
#distance ⇒ Object
Returns the value of attribute distance.
-
#elapsed_time ⇒ Object
Returns the value of attribute elapsed_time.
-
#evt_age ⇒ Object
Returns the value of attribute evt_age.
Class Method Summary collapse
Instance Method Summary collapse
- #age_graded(dob, event_yyyy_mm_dd, base_yyyy_mm_dd) ⇒ Object
- #get_kph ⇒ Object
- #get_mph ⇒ Object
- #get_yph ⇒ Object
-
#initialize(dist, et) ⇒ Speed
constructor
A new instance of Speed.
- #pace_per_mile ⇒ Object
- #projected_time(another_distance, algorithm = 'simple', pow = 1.06, debug = false) ⇒ Object
- #projected_times(space_delim_distances) ⇒ Object
- #seconds_per_mile ⇒ Object
- #to_s ⇒ Object
Constructor Details
#initialize(dist, et) ⇒ Speed
Returns a new instance of Speed.
16 17 18 19 20 |
# File 'lib/m26_speed.rb', line 16 def initialize(dist, et) @distance = dist @elapsed_time = et @mph = 0 end |
Instance Attribute Details
#ag_factor ⇒ Object
Returns the value of attribute ag_factor.
14 15 16 |
# File 'lib/m26_speed.rb', line 14 def ag_factor @ag_factor end |
#ag_secs ⇒ Object
Returns the value of attribute ag_secs.
14 15 16 |
# File 'lib/m26_speed.rb', line 14 def ag_secs @ag_secs end |
#ag_speed ⇒ Object
Returns the value of attribute ag_speed.
14 15 16 |
# File 'lib/m26_speed.rb', line 14 def ag_speed @ag_speed end |
#ag_time ⇒ Object
Returns the value of attribute ag_time.
14 15 16 |
# File 'lib/m26_speed.rb', line 14 def ag_time @ag_time end |
#base_age ⇒ Object
Returns the value of attribute base_age.
14 15 16 |
# File 'lib/m26_speed.rb', line 14 def base_age @base_age end |
#distance ⇒ Object
Returns the value of attribute distance.
13 14 15 |
# File 'lib/m26_speed.rb', line 13 def distance @distance end |
#elapsed_time ⇒ Object
Returns the value of attribute elapsed_time.
13 14 15 |
# File 'lib/m26_speed.rb', line 13 def elapsed_time @elapsed_time end |
#evt_age ⇒ Object
Returns the value of attribute evt_age.
14 15 16 |
# File 'lib/m26_speed.rb', line 14 def evt_age @evt_age end |
Class Method Details
.calculate_average_speed(s1, s2, t1, t2) ⇒ Object
30 31 32 33 34 35 36 37 38 39 40 |
# File 'lib/m26_speed.rb', line 30 def self.calculate_average_speed(s1, s2, t1, t2) speed1, speed2, etime1, etime2 = s1, s2, t1, t2 total_time = (etime1.secs + etime2.secs).to_f speed1_pct = ((etime1.secs).to_f) / total_time.to_f speed2_pct = ((etime2.secs).to_f) / total_time.to_f spm1 = ((speed1.seconds_per_mile).to_f) * speed1_pct spm2 = ((speed2.seconds_per_mile).to_f) * speed2_pct spm = spm1 + spm2 tpm = M26::ElapsedTime.new(spm) M26::Speed.new(Distance.new(1.0), tpm) end |
Instance Method Details
#age_graded(dob, event_yyyy_mm_dd, base_yyyy_mm_dd) ⇒ Object
107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 |
# File 'lib/m26_speed.rb', line 107 def age_graded(dob, event_yyyy_mm_dd, base_yyyy_mm_dd) @evt_age = M26::Age.new(dob, event_yyyy_mm_dd) @base_age = M26::Age.new(dob, base_yyyy_mm_dd) @ag_factor = (base_age.max_pulse / evt_age.max_pulse).to_f @ag_secs = (elapsed_time.secs.to_f) * ag_factor @ag_time = M26::ElapsedTime.new(ag_secs) @ag_speed = M26::Speed.new(distance, ag_time) # if false # puts "evt age: #{evt_age.to_s} #{evt_age.date}" # puts "base age: #{base_age.to_s} #{base_age.date}" # puts "ag_factor: #{ag_factor}" # puts "ag_secs: #{ag_secs}" # puts "ag_speed: #{ag_speed.to_s}" # puts "base pace: #{pace_per_mile}" # puts "base time: #{elapsed_time.as_hhmmss}" # puts "ag pace: #{ag_speed.pace_per_mile}" # puts "ag time: #{ag_speed.elapsed_time.as_hhmmss}" # end @ag_speed end |
#get_kph ⇒ Object
50 51 52 |
# File 'lib/m26_speed.rb', line 50 def get_kph @distance.get_kilometers / @elapsed_time.as_hours(); end |
#get_mph ⇒ Object
44 45 46 47 48 |
# File 'lib/m26_speed.rb', line 44 def get_mph num = @distance.get_miles.to_f den = @elapsed_time.as_hours num / den end |
#get_yph ⇒ Object
54 55 56 |
# File 'lib/m26_speed.rb', line 54 def get_yph @distance.get_yards / @elapsed_time.as_hours(); end |
#pace_per_mile ⇒ Object
58 59 60 61 62 63 64 65 66 67 68 69 70 |
# File 'lib/m26_speed.rb', line 58 def pace_per_mile spm = seconds_per_mile() mm = (spm / 60).floor; ss = spm - (mm * 60); if (ss < 10) ss = '0' + ss.to_s; else ss = '' + ss.to_s; end ss = ss.slice(0..4) return "#{mm}:#{ss}"; end |
#projected_time(another_distance, algorithm = 'simple', pow = 1.06, debug = false) ⇒ Object
76 77 78 79 80 81 82 83 84 85 86 87 88 89 |
# File 'lib/m26_speed.rb', line 76 def projected_time(another_distance, algorithm='simple', pow=1.06, debug=false) if (algorithm == 'riegel') t1 = @elapsed_time.secs d1 = @distance.get_miles d2 = another_distance.get_miles t2 = t1.to_f * ((d2.to_f / d1.to_f) ** pow) et = ElapsedTime.new(t2); return et.as_hhmmss else projSecs = seconds_per_mile() * another_distance.get_miles(); et = ElapsedTime.new(projSecs); return et.as_hhmmss end end |
#projected_times(space_delim_distances) ⇒ Object
91 92 93 94 95 96 97 98 99 100 101 |
# File 'lib/m26_speed.rb', line 91 def projected_times(space_delim_distances) results = {} array = space_delim_distances.split(' '); array.each { |d| another_distance = Distance.new(d.to_f, "m"); projSecs = seconds_per_mile() * another_distance.get_miles(); et = ElapsedTime.new(projSecs); results["#{d}"] = et.as_hhmmss; } return results; end |
#seconds_per_mile ⇒ Object
72 73 74 |
# File 'lib/m26_speed.rb', line 72 def seconds_per_mile @elapsed_time.secs / @distance.get_miles end |
#to_s ⇒ Object
103 104 105 |
# File 'lib/m26_speed.rb', line 103 def to_s return "Speed: miles=#{@distance.get_miles} seconds=#{@elapsed_time.secs} mph=#{get_mph()} kph=#{get_kph()} yph=#{get_yph()}" end |