Code Duplication    Length = 30-32 lines in 2 locations

src/Location/Processor/Polyline/Simplify.php 1 location

@@ 74-103 (lines=30) @@
71
     *
72
     * @return array
73
     */
74
    protected function douglasPeucker(array $line, $tolerance)
75
    {
76
        $distanceMax = 0;
77
        $index       = 0;
78
79
        $lineSize = count($line);
80
81
        for ($i = 1; $i <= ($lineSize - 1); $i ++) {
82
            $distance = $this->getPerpendicularDistance($line[$i], new Line($line[0], $line[$lineSize - 1]));
83
84
            if ($distance > $distanceMax) {
85
                $index       = $i;
86
                $distanceMax = $distance;
87
            }
88
        }
89
90
        if ($distanceMax > $tolerance) {
91
            $lineSplitFirst  = array_slice($line, 0, $index);
92
            $lineSplitSecond = array_slice($line, $index, $lineSize);
93
94
            $recursiveResultsSplitFirst  = $this->douglasPeucker($lineSplitFirst, $tolerance);
95
            $recursiveResultsSplitSecond = $this->douglasPeucker($lineSplitSecond, $tolerance);
96
97
            array_pop($recursiveResultsSplitFirst);
98
99
            return array_merge($recursiveResultsSplitFirst, $recursiveResultsSplitSecond);
100
        }
101
102
        return [$line[0], $line[$lineSize - 1]];
103
    }
104
105
    /**
106
     * @param Coordinate $point

src/Location/Processor/Polyline/SimplifyDouglasPeucker.php 1 location

@@ 66-97 (lines=32) @@
63
     *
64
     * @return array
65
     */
66
    protected function douglasPeucker(array $line)
67
    {
68
        $distanceMax = 0;
69
        $index       = 0;
70
71
        $lineSize = count($line);
72
73
        $pdCalc = new PerpendicularDistance();
74
75
        for ($i = 1; $i <= ($lineSize - 1); $i ++) {
76
            $distance = $pdCalc->getPerpendicularDistance($line[$i], new Line($line[0], $line[$lineSize - 1]));
77
78
            if ($distance > $distanceMax) {
79
                $index       = $i;
80
                $distanceMax = $distance;
81
            }
82
        }
83
84
        if ($distanceMax > $this->tolerance) {
85
            $lineSplitFirst  = array_slice($line, 0, $index);
86
            $lineSplitSecond = array_slice($line, $index, $lineSize);
87
88
            $resultsSplit1  = $this->douglasPeucker($lineSplitFirst);
89
            $resultsSplit2 = $this->douglasPeucker($lineSplitSecond);
90
91
            array_pop($resultsSplit1);
92
93
            return array_merge($resultsSplit1, $resultsSplit2);
94
        }
95
96
        return [$line[0], $line[$lineSize - 1]];
97
    }
98
}
99