How to convert a degree to a compass direction in Rust

1 Answer

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

// degrees_to_direction converts degrees into a compass direction.
fn degrees_to_direction(degrees: f64) -> &'static str {
    // Normalize degrees to (0, 360)
    let degrees = (degrees + 360.0) % 360.0;

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

    // Each direction covers 45 degrees
    let index = (((degrees + 22.5) / 45.0) as usize) % 8;
    // Alternative: let index = (((degrees / 45.0) + 0.5) as usize) % 8;

    directions[index]
}

fn main() {
    let degrees = 120.0;
    println!(
        "For {} degrees, Compass direction: {}",
        degrees,
        degrees_to_direction(degrees)
    );
}



/*
run:

For 120 degrees, Compass direction: South-East

*/

 



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