De afgelopen vakantie heb ik wat internetbronnetjes opgeveegd en gecombineerd om een trainingpace calculator te maken voor hardlopers.
Op basis van de afstand die de loper in een Coopertest loopt, wordt de VO2Max berekend via de (conservatieve) methode van Gilbert en Daniëls:
$CorrectedVo2Max = (-4.60 + 0.182258 * $v + 0.000104 * $v^2) / (0.8 + 0.1894393 * exp(-0.012778 * $t) + 0.2989558 * exp(-0.1932605 * $t));
waarin $v de snelheid per minuut is (afstand in meters gedeeld door 12) en $t de tijd (12 minuten).
Daarna worden de tempo’s berekend op basis van de Coopermethode:
$vo2Max = ($_GET['distance'] - 504.9) / 44.73; //calculate VO2Max according to Cooper //Calculate velocity @ VO2Max in meters per second $vVO2max = 2.8859 + 0.0686 * ($vo2Max-29); //calculate velocity based on Cooper $vPace = 1000 / $vVO2max; //how many seconds to cover 1K @ V02Max velocity $Paces['Vo2Max'] = $CorrectedVo2Max .' ml/kg/min volgens de methode van Gilbert en Daniels'; $Paces['vV02Max'] = date("i:s",$vPace).' per kilometer (volgens de methode van Cooper)'; //start calculating the other paces $Paces['Easy'] = date("i:s", (1000 / ($vVO2max*0.62))).' per kilometer'; $Paces['Longrun'] = date("i:s", (1000 / ($vVO2max*0.70))).' per kilometer'; $Paces['5K'] = date("i:s", (5000 / ($vVO2max*0.86))).' (= '.date("i:s", (1000 / ($vVO2max*0.86))).' per kilometer)'; $Paces['10K'] = date("i:s", (10000 / ($vVO2max*0.812))).' (= '.date("i:s", (1000 / ($vVO2max*0.812))).' per kilometer)'; $Paces['Yasso800'] = date("i:s", (800 / ($vVO2max*0.92))).' per 800 meter (= '.date("i:s", (1000 / ($vVO2max*0.92))).' per kilometer)'; $Paces['Interval400X'] = date("i:s", (400 / ($vVO2max*0.94))).' per 400 meter (= '.date("i:s", (1000 / ($vVO2max*0.94))).' per kilometer)'; $Paces['Interval400'] = date("i:s", (400 / ($vVO2max*0.99))).' per 400 meter (= '.date("i:s", (1000 / ($vVO2max*0.99))).' per kilometer)'; $Paces['Interval300X'] = date("i:s", (300 / ($vVO2max*1))).' per 300 meter (= '.date("i:s", (1000 / ($vVO2max*1.))).' per kilometer)'; $Paces['Interval300'] = date("i:s", (300 / ($vVO2max*1.06))).' per 300 meter (= '.date("i:s", (1000 / ($vVO2max*1.06))).' per kilometer)'; $Paces['Interval200X'] = date("i:s", (200 / ($vVO2max*1.03))).' per 200 meter (= '.date("i:s", (1000 / ($vVO2max*1.03))).' per kilometer)'; $Paces['Interval200'] = date("i:s", (200 / ($vVO2max*1.1))).' per 200 meter (= '.date("i:s", (1000 / ($vVO2max*1.1))).' per kilometer)'; $Paces['Interval100X'] = date("i:s", (100 / ($vVO2max*1.15))).' per 100 meter (= '.date("i:s", (1000 / ($vVO2max*1.15))).' per kilometer)'; $Paces['Interval100'] = date("i:s", (100 / ($vVO2max*1.25))).' per 100 meter (= '.date("i:s", (1000 / ($vVO2max*1.25))).' per kilometer)';
De $Paces wordt in json omgezet (json_encode) en via jquery in de pagina gezet:
$("#GetPace").click(function(){ $.getJSON('vo2Max.php', { distance: $("#distance").val() }, function (data) { var html = ''; $.each(data, function(i, pace) { var newDiv = pace; $("#"+i+" .pace").html(newDiv); }); $("#Paces").fadeIn(700); }); });