Code Duplication    Length = 47-47 lines in 2 locations

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

@@ 111-157 (lines=47) @@
108
     *
109
     * @return number
110
     */
111
    protected function getPerpendicularDistance(Coordinate $point, Line $line)
112
    {
113
        $ellipsoid = $point->getEllipsoid();
114
115
        $ellipsoidRadius = $ellipsoid->getArithmeticMeanRadius();
116
117
        $firstLinePointLat = $this->deg2radLatitude($line->getPoint1()->getLat());
118
        $firstLinePointLng = $this->deg2radLongitude($line->getPoint1()->getLng());
119
120
        $firstLinePointX = $ellipsoidRadius * cos($firstLinePointLng) * sin($firstLinePointLat);
121
        $firstLinePointY = $ellipsoidRadius * sin($firstLinePointLng) * sin($firstLinePointLat);
122
        $firstLinePointZ = $ellipsoidRadius * cos($firstLinePointLat);
123
124
        $secondLinePointLat = $this->deg2radLatitude($line->getPoint2()->getLat());
125
        $secondLinePointLng = $this->deg2radLongitude($line->getPoint2()->getLng());
126
127
        $secondLinePointX = $ellipsoidRadius * cos($secondLinePointLng) * sin($secondLinePointLat);
128
        $secondLinePointY = $ellipsoidRadius * sin($secondLinePointLng) * sin($secondLinePointLat);
129
        $secondLinePointZ = $ellipsoidRadius * cos($secondLinePointLat);
130
131
        $pointLat = $this->deg2radLatitude($point->getLat());
132
        $pointLng = $this->deg2radLongitude($point->getLng());
133
134
        $pointX = $ellipsoidRadius * cos($pointLng) * sin($pointLat);
135
        $pointY = $ellipsoidRadius * sin($pointLng) * sin($pointLat);
136
        $pointZ = $ellipsoidRadius * cos($pointLat);
137
138
        $normalizedX = $firstLinePointY * $secondLinePointZ - $firstLinePointZ * $secondLinePointY;
139
        $normalizedY = $firstLinePointZ * $secondLinePointX - $firstLinePointX * $secondLinePointZ;
140
        $normalizedZ = $firstLinePointX * $secondLinePointY - $firstLinePointY * $secondLinePointX;
141
142
        $length = sqrt($normalizedX * $normalizedX + $normalizedY * $normalizedY + $normalizedZ * $normalizedZ);
143
144
        $normalizedX /= $length;
145
        $normalizedY /= $length;
146
        $normalizedZ /= $length;
147
148
        $thetaPoint = $normalizedX * $pointX + $normalizedY * $pointY + $normalizedZ * $pointZ;
149
150
        $length = sqrt($pointX * $pointX + $pointY * $pointY + $pointZ * $pointZ);
151
152
        $thetaPoint /= $length;
153
154
        $distance = abs((M_PI / 2) - acos($thetaPoint));
155
156
        return $distance * $ellipsoidRadius;
157
    }
158
159
    /**
160
     * @param float $latitude

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

@@ 103-149 (lines=47) @@
100
     *
101
     * @return number
102
     */
103
    protected function getPerpendicularDistance(Coordinate $point, Line $line)
104
    {
105
        $ellipsoid = $point->getEllipsoid();
106
107
        $ellipsoidRadius = $ellipsoid->getArithmeticMeanRadius();
108
109
        $firstLinePointLat = $this->deg2radLatitude($line->getPoint1()->getLat());
110
        $firstLinePointLng = $this->deg2radLongitude($line->getPoint1()->getLng());
111
112
        $firstLinePointX = $ellipsoidRadius * cos($firstLinePointLng) * sin($firstLinePointLat);
113
        $firstLinePointY = $ellipsoidRadius * sin($firstLinePointLng) * sin($firstLinePointLat);
114
        $firstLinePointZ = $ellipsoidRadius * cos($firstLinePointLat);
115
116
        $secondLinePointLat = $this->deg2radLatitude($line->getPoint2()->getLat());
117
        $secondLinePointLng = $this->deg2radLongitude($line->getPoint2()->getLng());
118
119
        $secondLinePointX = $ellipsoidRadius * cos($secondLinePointLng) * sin($secondLinePointLat);
120
        $secondLinePointY = $ellipsoidRadius * sin($secondLinePointLng) * sin($secondLinePointLat);
121
        $secondLinePointZ = $ellipsoidRadius * cos($secondLinePointLat);
122
123
        $pointLat = $this->deg2radLatitude($point->getLat());
124
        $pointLng = $this->deg2radLongitude($point->getLng());
125
126
        $pointX = $ellipsoidRadius * cos($pointLng) * sin($pointLat);
127
        $pointY = $ellipsoidRadius * sin($pointLng) * sin($pointLat);
128
        $pointZ = $ellipsoidRadius * cos($pointLat);
129
130
        $normalizedX = $firstLinePointY * $secondLinePointZ - $firstLinePointZ * $secondLinePointY;
131
        $normalizedY = $firstLinePointZ * $secondLinePointX - $firstLinePointX * $secondLinePointZ;
132
        $normalizedZ = $firstLinePointX * $secondLinePointY - $firstLinePointY * $secondLinePointX;
133
134
        $length = sqrt($normalizedX * $normalizedX + $normalizedY * $normalizedY + $normalizedZ * $normalizedZ);
135
136
        $normalizedX /= $length;
137
        $normalizedY /= $length;
138
        $normalizedZ /= $length;
139
140
        $thetaPoint = $normalizedX * $pointX + $normalizedY * $pointY + $normalizedZ * $pointZ;
141
142
        $length = sqrt($pointX * $pointX + $pointY * $pointY + $pointZ * $pointZ);
143
144
        $thetaPoint /= $length;
145
146
        $distance = abs((M_PI / 2) - acos($thetaPoint));
147
148
        return $distance * $ellipsoidRadius;
149
    }
150
151
    /**
152
     * @param float $latitude