How to convert a degree to a compass direction in C++

1 Answer

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

#include <iostream>
#include <string>
#include <vector>
#include <cmath> 

std::string degreesToDirection(double degrees) {
    // Normalize degrees to (0, 360)
    degrees = fmod((degrees + 360), 360);

    // Define compass directions
    std::vector<std::string> directions = {
        "North", "North-East", "East", "South-East",
        "South", "South-West", "West", "North-West"
    };

    // Each direction covers 45 degrees
    int index = static_cast<int>((degrees + 22.5) / 45) % 8;
    //int index = static_cast<int>((degrees / 45) + .5) % 8;

    return directions[index];
}

int main() {
    double degrees = 120;

    std::cout << "For " << degrees << " degrees, Compass direction: " << degreesToDirection(degrees);
}



/*
run:
 
For 120 degrees, Compass direction: South-East
 
*/

 



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