src/Bearing/BearingSpherical.php
public function calculateDestination(Coordinate $point, float $bearing, float $distance): Coordinate
    {
        $D = $distance / static::EARTH_RADIUS;
        $B = deg2rad($bearing);
        $φ = deg2rad($point->getLat());
        $λ = deg2rad($point->getLng());

        $Φ = asin(sin($φ) * cos($D) + cos($φ) * sin($D) * cos($B));
        $Λ = $λ + atan2(sin($B) * sin($D) * cos($φ), cos($D) - sin($φ) * sin($φ));

        return new Coordinate(rad2deg($Φ), rad2deg($Λ));
    }
public function calculateDestination(Coordinate $point, float $bearing, float $distance): Coordinate
    {
        $D = $distance / static::EARTH_RADIUS;
        $B = deg2rad($bearing);
        $φ = deg2rad($point->getLat());
        $λ = deg2rad($point->getLng());

        $Φ = asin(sin($φ) * cos($D) + cos($φ) * sin($D) * cos($B));
        $Λ = $λ + atan2(sin($B) * sin($D) * cos($φ), cos($D) - sin($φ) * sin($φ));

        return new Coordinate(rad2deg($Φ), rad2deg($Λ));
    }
Calculates a destination point for the given point, bearing angle,
and distance.

@param Coordinate $point
@param float $bearing the bearing angle between 0 and 360 degrees
@param float $distance the distance to the destination point in meters

@return Coordinate
@throws InvalidArgumentException