Open
Description
The 2 methods of Vector class returns integer instead of float value.
public function initialBearing()
{
Ellipsoid::checkCoordinatesEllipsoid($this->from, $this->to);
$latA = deg2rad($this->from->getLatitude());
$latB = deg2rad($this->to->getLatitude());
$dLng = deg2rad($this->to->getLongitude() - $this->from->getLongitude());
$y = sin($dLng) * cos($latB);
$x = cos($latA) * sin($latB) - sin($latA) * cos($latB) * cos($dLng);
return (float) (rad2deg(atan2($y, $x)) + 360) % 360;
}
Using % with float variables cast it to integer losing a lot of precision.
If u want an angle between 0 and 360 you can do something like this
$angle = rad2deg(atan2($y, $x)) + 360;
return $angle > 360 ? $angle - 360 : $angle;
Metadata
Metadata
Assignees
Labels
No labels