From 16778910f5bb2b25fe3ec6b9a2bd559f7e535200 Mon Sep 17 00:00:00 2001 From: Robby Findler Date: Thu, 3 Oct 2013 19:05:09 -0500 Subject: [PATCH] fix the conversion to a [0,360) interval for angles in 2htdp/image closes PR 14071 --- pkgs/htdp-pkgs/htdp-lib/2htdp/private/img-err.rkt | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/pkgs/htdp-pkgs/htdp-lib/2htdp/private/img-err.rkt b/pkgs/htdp-pkgs/htdp-lib/2htdp/private/img-err.rkt index 1c786a7413..0739ec0f4c 100644 --- a/pkgs/htdp-pkgs/htdp-lib/2htdp/private/img-err.rkt +++ b/pkgs/htdp-pkgs/htdp-lib/2htdp/private/img-err.rkt @@ -348,8 +348,12 @@ (equal? arg +nan.0))))) (define (angle->proper-range α) - (+ (modulo (round α) 360) - (- α (round α)))) + (define whole-part (modulo (round α) 360)) + (define decimal-part (- α (round α))) + (if (and (zero? whole-part) + (negative? decimal-part)) + (+ 360 decimal-part) + (+ whole-part decimal-part))) (module+ test (require rackunit) @@ -357,4 +361,7 @@ (check-equal? (angle->proper-range 361) 1) (check-equal? (angle->proper-range 0.5) 0.5) (check-equal? (angle->proper-range -1) 359) - (check-equal? (angle->proper-range -1.5) 358.5)) \ No newline at end of file + (check-equal? (angle->proper-range -1.5) 358.5) + (check-equal? (angle->proper-range -.1) 359.9) + (check-equal? (angle->proper-range #i-7.347880794884119e-016) + (+ 360 #i-7.347880794884119e-016)))