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