From 498187eb3ef005678e9fa92f4db892e4872ccadc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Deuc=D0=B5?= <shurd@sasktel.net> Date: Tue, 11 May 2021 12:02:39 -0400 Subject: [PATCH] Fix angle calculations on Win32 Do multiple before divide, and use an lround() to get the same results on Win32 with mingw32 as Clang on FreeBSD. --- src/syncterm/ripper.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/syncterm/ripper.c b/src/syncterm/ripper.c index 8e127ba2c5..1c1a574e78 100644 --- a/src/syncterm/ripper.c +++ b/src/syncterm/ripper.c @@ -9869,9 +9869,10 @@ full_ellipse(int xc, int yc, int sa, int ea, int a, int b, bool fill, uint32_t c double qangle; while(y>=0 && x<=a) { - angle = atan((x * (M_PI / 180.0)) / (y *(M_PI / 180.0))); - angle /= (M_PI / 180.0); - angle = 90 - angle; + angle = atan((x * M_PI / 180.0) / (y * M_PI / 180.0)); + angle *= 180.0; + angle /= M_PI; + angle = lround(90.0 - angle); if (!skip) { if(x!=0 || y!=0) { // Top-left quadrant. -- GitLab