1. calculate the bearing angle between the first two points p1 and p2: b1
2. calculate the bearing angle between the next two points p2 and p3: b2
3. calculate the difference between b1 and b2: deltaB; if deltaB is
smaller than the threshold angle, remove the middle point p2
4. start again at (1.) as long as the polyline contains more points
public simplify ( |
||
$polyline | ||
return |
public function testSimplifyTwoPointsImpossible() { $polyline = new Polyline(); $polyline->addPoint(new Coordinate(10.0, 10.0)); $polyline->addPoint(new Coordinate(20.0, 20.0)); $processor = new SimplifyBearing(10); $simplified = $processor->simplify($polyline); $this->assertEquals($polyline, $simplified); }