Location\Bearing\BearingSpherical::calculateBearing PHP Method

calculateBearing() public method

This method calculates the initial bearing between the two points.
public calculateBearing ( Coordinate $point1, Coordinate $point2 ) : float
$point1 Location\Coordinate
$point2 Location\Coordinate
return float Bearing Angle
    public function calculateBearing(Coordinate $point1, Coordinate $point2)
    {
        $lat1 = deg2rad($point1->getLat());
        $lat2 = deg2rad($point2->getLat());
        $lng1 = deg2rad($point1->getLng());
        $lng2 = deg2rad($point2->getLng());
        $y = sin($lng2 - $lng1) * cos($lat2);
        $x = cos($lat1) * sin($lat2) - sin($lat1) * cos($lat2) * cos($lng2 - $lng1);
        $bearing = rad2deg(atan2($y, $x));
        if ($bearing < 0) {
            $bearing = fmod($bearing + 360, 360);
        }
        return $bearing;
    }

Usage Example

 public function testIfCalculateBearingSouthWesternWorksAsExpected()
 {
     $point1 = new Coordinate(0, 0);
     $point2 = new Coordinate(-0.1, -0.1);
     $bearingCalculator = new BearingSpherical();
     $this->assertEquals(225.0, $bearingCalculator->calculateBearing($point1, $point2), '', 0.1);
 }