diff --git a/src/RideFile.cpp b/src/RideFile.cpp index 2380d6311..62c15c715 100644 --- a/src/RideFile.cpp +++ b/src/RideFile.cpp @@ -1034,19 +1034,12 @@ RideFile::recalculateDerivedSeries() // Delta if (lastP) { - double deltaSpeed = p->kph - lastP->kph; + double deltaSpeed = (p->kph - lastP->kph) / 3.60f; double deltaTime = p->secs - lastP->secs; - // from kph to meters /s /s - double acc = deltaSpeed; - if (deltaTime) { - acc /= deltaTime; - // now from kilometers per hour to m/s/s - acc *= 1000; // meters per hour - acc /= 3600; // meters per second - p->kphd = acc; + p->kphd = deltaSpeed / deltaTime; // Other delta values -- only interested in growth for power, cadence and torque double pd = (p->watts - lastP->watts) / deltaTime; diff --git a/src/RideFileCache.cpp b/src/RideFileCache.cpp index 81fb50dd3..f061dc666 100644 --- a/src/RideFileCache.cpp +++ b/src/RideFileCache.cpp @@ -59,11 +59,6 @@ RideFileCache::RideFileCache(Context *context, QString fileName, RideFile *passe cadDistribution.resize(0); nmDistribution.resize(0); kphDistribution.resize(0); - kphdDistribution.resize(0); - wattsdDistribution.resize(0); - caddDistribution.resize(0); - nmdDistribution.resize(0); - hrdDistribution.resize(0); xPowerDistribution.resize(0); npDistribution.resize(0); wattsKgDistribution.resize(0); @@ -152,11 +147,6 @@ RideFileCache::RideFileCache(RideFile *ride) : cadDistribution.resize(0); nmDistribution.resize(0); kphDistribution.resize(0); - kphdDistribution.resize(0); - wattsdDistribution.resize(0); - caddDistribution.resize(0); - nmdDistribution.resize(0); - hrdDistribution.resize(0); xPowerDistribution.resize(0); npDistribution.resize(0); wattsKgDistribution.resize(0); @@ -195,11 +185,6 @@ RideFileCache::RideFileCache(RideFile *ride) : doubleArray(cadDistributionDouble, cadDistribution, RideFile::cad); doubleArray(nmDistributionDouble, nmDistribution, RideFile::nm); doubleArray(kphDistributionDouble, kphDistribution, RideFile::kph); - doubleArray(kphdDistributionDouble, kphdDistribution, RideFile::kphd); - doubleArray(wattsdDistributionDouble, wattsdDistribution, RideFile::wattsd); - doubleArray(caddDistributionDouble, caddDistribution, RideFile::cadd); - doubleArray(nmdDistributionDouble, nmdDistribution, RideFile::nmd); - doubleArray(hrdDistributionDouble, hrdDistribution, RideFile::hrd); doubleArray(xPowerDistributionDouble, xPowerDistribution, RideFile::xPower); doubleArray(npDistributionDouble, npDistribution, RideFile::NP); doubleArray(wattsKgDistributionDouble, wattsKgDistribution, RideFile::wattsKg); @@ -413,26 +398,6 @@ RideFileCache::distributionArray(RideFile::SeriesType series) return kphDistributionDouble; break; - case RideFile::kphd: - return kphdDistributionDouble; - break; - - case RideFile::wattsd: - return wattsdDistributionDouble; - break; - - case RideFile::cadd: - return caddDistributionDouble; - break; - - case RideFile::nmd: - return nmdDistributionDouble; - break; - - case RideFile::hrd: - return hrdDistributionDouble; - break; - case RideFile::aPower: return aPowerDistributionDouble; break; @@ -542,11 +507,6 @@ void RideFileCache::RideFileCache::compute() computeDistribution(cadDistribution, RideFile::cad); computeDistribution(nmDistribution, RideFile::nm); computeDistribution(kphDistribution, RideFile::kph); - computeDistribution(kphdDistribution, RideFile::kphd); - computeDistribution(wattsdDistribution, RideFile::wattsd); - computeDistribution(caddDistribution, RideFile::cadd); - computeDistribution(nmdDistribution, RideFile::nmd); - computeDistribution(hrdDistribution, RideFile::hrd); computeDistribution(wattsKgDistribution, RideFile::wattsKg); computeDistribution(aPowerDistribution, RideFile::aPower); @@ -1003,9 +963,12 @@ MeanMaxComputer::run() // only care about first 3 minutes MAX for delta series if ((series == RideFile::kphd || series == RideFile::wattsd || series == RideFile::cadd || - series == RideFile::nmd || series == RideFile::hrd) && ride_bests.count() > 180) ride_bests.resize(180); - - array.resize(ride_bests.count()); + series == RideFile::nmd || series == RideFile::hrd) && ride_bests.count() > 180) { + ride_bests.resize(180); + array.resize(180); + } else { + array.resize(ride_bests.count()); + } for (int i=ride_bests.size()-1; i; i--) { if (ride_bests[i] == 0) ride_bests[i]=last; @@ -1163,11 +1126,6 @@ RideFileCache::RideFileCache(Context *context, QDate start, QDate end, bool filt cadDistribution.resize(0); nmDistribution.resize(0); kphDistribution.resize(0); - kphdDistribution.resize(0); - wattsdDistribution.resize(0); - caddDistribution.resize(0); - nmdDistribution.resize(0); - hrdDistribution.resize(0); xPowerDistribution.resize(0); npDistribution.resize(0); wattsKgDistribution.resize(0); @@ -1218,11 +1176,6 @@ RideFileCache::RideFileCache(Context *context, QDate start, QDate end, bool filt distAggregate(cadDistributionDouble, rideCache.cadDistributionDouble); distAggregate(nmDistributionDouble, rideCache.nmDistributionDouble); distAggregate(kphDistributionDouble, rideCache.kphDistributionDouble); - distAggregate(kphdDistributionDouble, rideCache.kphdDistributionDouble); - distAggregate(wattsdDistributionDouble, rideCache.wattsdDistributionDouble); - distAggregate(caddDistributionDouble, rideCache.caddDistributionDouble); - distAggregate(nmdDistributionDouble, rideCache.nmdDistributionDouble); - distAggregate(hrdDistributionDouble, rideCache.hrdDistributionDouble); distAggregate(xPowerDistributionDouble, rideCache.xPowerDistributionDouble); distAggregate(npDistributionDouble, rideCache.npDistributionDouble); distAggregate(wattsKgDistributionDouble, rideCache.wattsKgDistributionDouble); @@ -1287,11 +1240,6 @@ RideFileCache::serialize(QDataStream *out) head.cadDistCount = cadDistribution.size(); head.nmDistrCount = nmDistribution.size(); head.kphDistCount = kphDistribution.size(); - head.kphdDistCount = kphdDistribution.size(); - head.wattsdDistCount = wattsdDistribution.size(); - head.caddDistCount = caddDistribution.size(); - head.nmdDistCount = nmdDistribution.size(); - head.hrdDistCount = hrdDistribution.size(); head.wattsKgDistCount = wattsKgDistribution.size(); head.aPowerDistCount = aPowerDistribution.size(); @@ -1320,11 +1268,6 @@ RideFileCache::serialize(QDataStream *out) out->writeRawData((const char *) cadDistribution.data(), sizeof(float) * cadDistribution.size()); out->writeRawData((const char *) nmDistribution.data(), sizeof(float) * nmDistribution.size()); out->writeRawData((const char *) kphDistribution.data(), sizeof(float) * kphDistribution.size()); - out->writeRawData((const char *) kphdDistribution.data(), sizeof(float) * kphdDistribution.size()); - out->writeRawData((const char *) wattsdDistribution.data(), sizeof(float) * wattsdDistribution.size()); - out->writeRawData((const char *) caddDistribution.data(), sizeof(float) * caddDistribution.size()); - out->writeRawData((const char *) nmdDistribution.data(), sizeof(float) * nmdDistribution.size()); - out->writeRawData((const char *) hrdDistribution.data(), sizeof(float) * hrdDistribution.size()); out->writeRawData((const char *) xPowerDistribution.data(), sizeof(float) * xPowerDistribution.size()); out->writeRawData((const char *) npDistribution.data(), sizeof(float) * npDistribution.size()); out->writeRawData((const char *) wattsKgDistribution.data(), sizeof(float) * wattsKgDistribution.size()); @@ -1369,11 +1312,6 @@ RideFileCache::readCache() cadDistribution.resize(head.cadDistCount); nmDistribution.resize(head.nmDistrCount); kphDistribution.resize(head.kphDistCount); - kphdDistribution.resize(head.kphdDistCount); - wattsdDistribution.resize(head.wattsdDistCount); - caddDistribution.resize(head.caddDistCount); - nmdDistribution.resize(head.nmdDistCount); - hrdDistribution.resize(head.hrdDistCount); xPowerDistribution.resize(head.xPowerDistCount); npDistribution.resize(head.npDistCount); wattsKgDistribution.resize(head.wattsKgDistCount); @@ -1403,11 +1341,6 @@ RideFileCache::readCache() inFile.readRawData((char *) cadDistribution.data(), sizeof(float) * cadDistribution.size()); inFile.readRawData((char *) nmDistribution.data(), sizeof(float) * nmDistribution.size()); inFile.readRawData((char *) kphDistribution.data(), sizeof(float) * kphDistribution.size()); - inFile.readRawData((char *) kphdDistribution.data(), sizeof(float) * kphdDistribution.size()); - inFile.readRawData((char *) wattsdDistribution.data(), sizeof(float) * wattsdDistribution.size()); - inFile.readRawData((char *) caddDistribution.data(), sizeof(float) * caddDistribution.size()); - inFile.readRawData((char *) nmdDistribution.data(), sizeof(float) * nmdDistribution.size()); - inFile.readRawData((char *) hrdDistribution.data(), sizeof(float) * hrdDistribution.size()); inFile.readRawData((char *) xPowerDistribution.data(), sizeof(float) * xPowerDistribution.size()); inFile.readRawData((char *) npDistribution.data(), sizeof(float) * npDistribution.size()); inFile.readRawData((char *) wattsKgDistribution.data(), sizeof(float) * wattsKgDistribution.size()); @@ -1440,11 +1373,6 @@ RideFileCache::readCache() doubleArray(cadDistributionDouble, cadDistribution, RideFile::cad); doubleArray(nmDistributionDouble, nmDistribution, RideFile::nm); doubleArray(kphDistributionDouble, kphDistribution, RideFile::kph); - doubleArray(kphdDistributionDouble, kphdDistribution, RideFile::kphd); - doubleArray(wattsdDistributionDouble, wattsdDistribution, RideFile::wattsd); - doubleArray(caddDistributionDouble, caddDistribution, RideFile::cadd); - doubleArray(nmdDistributionDouble, nmdDistribution, RideFile::nmd); - doubleArray(hrdDistributionDouble, hrdDistribution, RideFile::hrd); doubleArray(xPowerDistributionDouble, xPowerDistribution, RideFile::xPower); doubleArray(npDistributionDouble, npDistribution, RideFile::NP); doubleArray(wattsKgDistributionDouble, wattsKgDistribution, RideFile::wattsKg); @@ -1520,11 +1448,6 @@ static long offsetForTiz(RideFileCacheHeader head, RideFile::SeriesType series) offset += head.cadDistCount * sizeof(float); offset += head.nmDistrCount * sizeof(float); offset += head.kphDistCount * sizeof(float); - offset += head.kphdDistCount * sizeof(float); - offset += head.wattsdDistCount * sizeof(float); - offset += head.caddDistCount * sizeof(float); - offset += head.nmdDistCount * sizeof(float); - offset += head.hrdDistCount * sizeof(float); offset += head.xPowerDistCount * sizeof(float); offset += head.npDistCount * sizeof(float); offset += head.wattsKgDistCount * sizeof(float); diff --git a/src/RideFileCache.h b/src/RideFileCache.h index 562c86889..01aa35aea 100644 --- a/src/RideFileCache.h +++ b/src/RideFileCache.h @@ -40,7 +40,7 @@ typedef double data_t; // arrays when plotting CP curves and histograms. It is precoputed // to save time and cached in a file .cpx // -static const unsigned int RideFileCacheVersion = 14; +static const unsigned int RideFileCacheVersion = 15; // revision history: // version date description // 1 29-Apr-11 Initial - header, mean-max & distribution data blocks @@ -56,7 +56,7 @@ static const unsigned int RideFileCacheVersion = 14; // 11 17-Feb-14 Changed 3zone model to have 85% CP < middle < CP // 12 21-Feb-14 Added Acceleration (speed) // 12 22-Feb-14 Acceleration precision way too high! -// 13 24-Feb-14 Add hr, cad, watts, nm Δ data series +// 13-15 24-Feb-14 Add hr, cad, watts, nm Δ data series // The cache file (.cpx) has a binary format: // 1 x Header data - describing the version and contents of the cache @@ -92,11 +92,6 @@ struct RideFileCacheHeader { cadDistCount, nmDistrCount, kphDistCount, - kphdDistCount, - wattsdDistCount, - caddDistCount, - nmdDistCount, - hrdDistCount, xPowerDistCount, npDistCount, wattsKgDistCount, @@ -272,10 +267,6 @@ class RideFileCache QVector nmDistribution; // RideFile::nm QVector kphDistribution; // RideFile::kph QVector kphdDistribution; // RideFile::kphd - QVector wattsdDistribution; // RideFile::wattsd - QVector caddDistribution; // RideFile::cadd - QVector nmdDistribution; // RideFile::nmd - QVector hrdDistribution; // RideFile::hrd QVector xPowerDistribution; // RideFile::kph QVector npDistribution; // RideFile::kph QVector wattsKgDistribution; // RideFile::wattsKg @@ -286,11 +277,6 @@ class RideFileCache QVector cadDistributionDouble; // RideFile::cad QVector nmDistributionDouble; // RideFile::nm QVector kphDistributionDouble; // RideFile::kph - QVector kphdDistributionDouble; // RideFile::kph - QVector wattsdDistributionDouble; // RideFile::wattsd - QVector caddDistributionDouble; // RideFile::cadd - QVector nmdDistributionDouble; // RideFile::nmd - QVector hrdDistributionDouble; // RideFile::hrd QVector xPowerDistributionDouble; // RideFile::xpower QVector npDistributionDouble; // RideFile::np QVector wattsKgDistributionDouble; // RideFile::wattsKg