Add Minute Mile Pace metric

Runners tend to measure speed in minute mile pace and
this is common even if they use metric units.
This commit is contained in:
Mark Liversedge
2012-02-18 17:48:36 +00:00
parent 22d5dfc00b
commit abb0ff0166
3 changed files with 56 additions and 10 deletions

View File

@@ -267,6 +267,48 @@ static bool avgSpeedAdded =
RideMetricFactory::instance().addMetric(
AvgSpeed(), &(QVector<QString>() << "total_distance"));
//////////////////////////////////////////////////////////////////////////////
class Pace : public RideMetric {
double pace;
public:
Pace() : pace(0.0)
{
setSymbol("pace");
setName(tr("Minute Mile Pace"));
setType(RideMetric::Average);
setMetricUnits(tr("min/mile"));
setImperialUnits(tr("min/mile"));
setPrecision(1);
}
void compute(const RideFile *, const Zones *, int,
const HrZones *, int,
const QHash<QString,RideMetric*> &deps,
const MainWindow *) {
AvgSpeed *as = dynamic_cast<AvgSpeed*>(deps.value("average_speed"));
// divide by zero or stupidly low pace
if (as->value(true) > 0.00f) pace = 60.0f / (as->value(true) * MILES_PER_KM); // kph to minutes per mile
else pace = 0;
setValue(pace);
setCount(as->count());
}
RideMetric *clone() const { return new Pace(*this); }
};
static bool addPace()
{
QVector<QString> deps;
deps.append("average_speed");
RideMetricFactory::instance().addMetric(Pace(), &deps);
return true;
}
static bool paceAdded = addPace();
//////////////////////////////////////////////////////////////////////////////
struct AvgPower : public RideMetric {

View File

@@ -45,6 +45,9 @@
// Revision History
// Rev Date Who What Changed
//-----------------------------------------------------------------------
//
// ******* Prior to version 29 no revision history was maintained *******
//
// 29 5th Sep 2011 Mark Liversedge Added color to the ride fields
// 30 8th Sep 2011 Mark Liversedge Metadata 'data' field for data present string
// 31 22 Nov 2011 Mark Liversedge Added Average WPK metric
@@ -52,8 +55,9 @@
// 33 17 Dec 2011 Damien Grauser Added ResponseIndex and EfficiencyFactor
// 34 15 Jan 2012 Mark Liversedge Added Average and Max Temperature and Metric->conversionSum()
// 35 13 Feb 2012 Mark Liversedge Max/Avg Cadence adjusted conversion
// 36 18 Feb 2012 Mark Liversedge Added Pace (min/mile) and 250m, 500m Pace metrics
static int DBSchemaVersion = 35;
static int DBSchemaVersion = 36;
DBAccess::DBAccess(MainWindow* main, QDir home) : main(main), home(home)
{

View File

@@ -20,15 +20,15 @@
#define _GC_Units_h 1
#include "GoldenCheetah.h"
#define KM_PER_MILE 1.609344
#define MILES_PER_KM 0.62137119
#define FEET_PER_METER 3.2808399
#define METERS_PER_FOOT 0.3047999
#define LB_PER_KG 2.20462262
#define KG_PER_LB 0.45359237
#define FEET_LB_PER_NM 0.73756214837
#define FAHRENHEIT_PER_CENTIGRADE 1.8
#define FAHRENHEIT_ADD_CENTIGRADE 32
#define KM_PER_MILE 1.609344f
#define MILES_PER_KM 0.62137119f
#define FEET_PER_METER 3.2808399f
#define METERS_PER_FOOT 0.3047999f
#define LB_PER_KG 2.20462262f
#define KG_PER_LB 0.45359237f
#define FEET_LB_PER_NM 0.73756214837f
#define FAHRENHEIT_PER_CENTIGRADE 1.8f
#define FAHRENHEIT_ADD_CENTIGRADE 32.0f
#define GPS_COORD_TO_STRING 8
#endif // _GC_Units_h