/** * Calculate elevation value * * This method does directly update the route object. */ public function calculateElevation() { $Calculator = new Calculation\Calculator($this->Route->elevations()); $Calculator->calculate(); $this->Route->set(Route\Entity::ELEVATION, $Calculator->totalElevation()); $this->Route->set(Route\Entity::ELEVATION_UP, $Calculator->elevationUp()); $this->Route->set(Route\Entity::ELEVATION_DOWN, $Calculator->elevationDown()); }
/** * Run recalculations */ public function run() { $Query = $this->getQuery(); $Update = $this->prepareUpdate(); while ($Data = $Query->fetch()) { $Elevation = \Runalyze\Model\Object::explode($Data['elevations']); $Calculator = new Elevation\Calculation\Calculator($Elevation); $Calculator->calculate(); if ($Calculator->totalElevation() != $Data['elevation'] || $Calculator->elevationUp() != $Data['elevation_up']) { $Update->bindValue(':id', $Data['id']); $Update->bindValue(':elevation', $Calculator->totalElevation()); $Update->bindValue(':elevation_up', $Calculator->elevationUp()); $Update->bindValue(':elevation_down', $Calculator->elevationDown()); $Update->execute(); $this->NumberOfRoutes++; } $this->Results[$Data['id']] = array($Calculator->totalElevation(), $Calculator->elevationUp(), $Calculator->elevationDown()); } }
public function testAlgorithmDouglasPeucker() { $Method = new ElevationMethod(); $Method->set(ElevationMethod::DOUGLAS_PEUCKER); $Calc = new Calculator(array(0, 2, 4, 6, 5, 7, 4, 8, 10, 0), $Method, 2); $Calc->calculate(); $this->assertEquals(13, $Calc->totalElevation()); $this->assertEquals(13, $Calc->elevationUp()); $this->assertEquals(13, $Calc->elevationDown()); }
/** * @param \Runalyze\Data\Laps\Lap $Lap */ protected function addElevationFor(Lap $Lap) { if ($this->RouteLoop == null) { return; } $Calculator = new Elevation\Calculation\Calculator($this->RouteLoop->sliceElevation()); $Calculator->calculate(); $Lap->setElevation($Calculator->elevationUp(), $Calculator->elevationDown()); }