**Integer math for an integer problem** Consider a variation on [Bresenham's circle algorithm](https://en.wikipedia.org/wiki/Midpoint_circle_algorithm) for an integer only solution: faster and precise. Note: Graphics processors use integer math for drawing circles on a screen, not floating point. **1 degree steps**? On high precision monitors, (think 2k * 2k or more) the result may look more circular (not a polygon) with finer steps. Above integer solution provides the best digitized circle. **Not standard C code** Good idea to use the systems best machine π, yet `double global_variable = acos(-1.0)` is not valid. I suspect OP is not using a standard C compiler. Alternative. Since π does not change, let the system derive the best _machine π_ by providing code that the compiler will use even if `double` is many more than 64-bit. // const double RADIANS_PER_DEGREE = acos(-1.0) / 180.0; // acos(-1.0) = Pi const double RADIANS_PER_DEGREE = 3.1415926535897932384626433832795028841971 / 180.0; Or define it #ifdef M_PI // some implementation will define this, use if available. #define MY_PI M_PI #else #define MY_PI 3.1415926535897932384626433832795028841971 #endif const double RADIANS_PER_DEGREE = MY_PI / 180.0; Pedantically, in rare cases, performing math like `MY_PI / 180.0` will **not** result in the best `RADIANS_PER_DEGREE` and code could directly use const double RADIANS_PER_DEGREE = 0.01745329251994329576923690768489; **Manually formatting?** Below hints that OP is not using an auto formatter. Code looks nice. Yet I would rather oblige a SW team to use auto formatting that spend time formatting. int APIENTRY wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR lpCmdLine, int nCmdShow) Save time and increase productivity: auto-format. **