From 83abd94dd04f807ba20ff81270e3449e818af68d Mon Sep 17 00:00:00 2001 From: Robby Findler Date: Mon, 12 May 2014 21:37:14 -0500 Subject: [PATCH] fix angle conversion problem --- pkgs/htdp-pkgs/htdp-lib/2htdp/private/img-err.rkt | 6 ++++-- pkgs/htdp-pkgs/htdp-test/2htdp/tests/test-image.rkt | 5 +++++ 2 files changed, 9 insertions(+), 2 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 af69319fbc..297b9a2f88 100644 --- a/pkgs/htdp-pkgs/htdp-lib/2htdp/private/img-err.rkt +++ b/pkgs/htdp-pkgs/htdp-lib/2htdp/private/img-err.rkt @@ -349,8 +349,10 @@ (equal? arg +nan.0))))) (define (angle->proper-range α) - (define whole-part (modulo (round α) 360)) - (define decimal-part (- α (round α))) + (define eα (inexact->exact α)) + (define rα (round eα)) + (define whole-part (modulo rα 360)) + (define decimal-part (- eα rα)) (if (and (zero? whole-part) (negative? decimal-part)) (+ 360 decimal-part) diff --git a/pkgs/htdp-pkgs/htdp-test/2htdp/tests/test-image.rkt b/pkgs/htdp-pkgs/htdp-test/2htdp/tests/test-image.rkt index d163ee9454..56ac9cbf64 100644 --- a/pkgs/htdp-pkgs/htdp-test/2htdp/tests/test-image.rkt +++ b/pkgs/htdp-pkgs/htdp-test/2htdp/tests/test-image.rkt @@ -996,6 +996,11 @@ => (rectangle 100 10 'solid (color 0 255 0))) +;; make sure that rotation with a very small negative number doesn't crash +(test (image? (rotate -0.0000000000000001 (rectangle 10 10 'solid 'blue))) + => + #t) + ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; ;; regular polygon