How to convert a degree to a compass direction in PHP

1 Answer

0 votes
/*
0° → North
45° → North-East
90° → East
135° → South-East
180° → South
225° → South-West
270° → West
315° → North-West
*/

function degreesToDirection(float $degrees): string {
    // Normalize degrees to (0, 360)
    $degrees = fmod(($degrees + 360), 360);

    // Define compass directions
    $directions = [
        "North", "North-East", "East", "South-East",
        "South", "South-West", "West", "North-West"
    ];

    // Each direction covers 45 degrees
    $index = (int)(($degrees + 22.5) / 45) % 8;
    // Alternative: $index = (int)(($degrees / 45) + 0.5) % 8;

    return $directions[$index];
}

$degrees = 120;
echo "For $degrees degrees, Compass direction: " . degreesToDirection($degrees);



/*
run:

For 120 degrees, Compass direction: South-East

*/

 



answered Nov 24, 2025 by avibootz
edited Nov 24, 2025 by avibootz
...