From 5782a98041a40b3237c685bf8a47d6afbbd3593e Mon Sep 17 00:00:00 2001 From: Guillaume Chazarain Date: Sat, 24 Apr 2010 19:57:00 +0200 Subject: [PATCH] Fix is_matrix_symmetry() to correctly choose between c1 and s1. --- src/matrix.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/matrix.c b/src/matrix.c index d94b423..531e252 100644 --- a/src/matrix.c +++ b/src/matrix.c @@ -71,7 +71,7 @@ G_GNUC_PURE gfloat get_matrix_zoom(void) { /* * c1 == zoom*cos, s1 == zoom*sin - * cos^2 + sin^2 == 1 => c1^2 + s1^2 == zoom^2 + * cos² + sin² == 1 => c1² + s1² == zoom² */ return hypotf(MATRIX_C1, MATRIX_S1); } @@ -222,10 +222,10 @@ G_GNUC_PURE gboolean is_matrix_symmetry(void) * c1 == c2 => rotation, c1 == -c2 => symmetry. * s1 == -s2 => rotation, s1 == s2 => symmetry. * - * Since c1^2 + s1^2 == 1, we use c1 only if far enough from 0. + * Since (c1/zoom)² + (s1/zoom)² == 1, we use c1 only if far enough from 0. */ - return (MATRIX_C1 < -0.5 || MATRIX_C1 > 0.5) ? + return fabsf(MATRIX_C1) > fabsf(MATRIX_S1) ? !float_equal(MATRIX_C1, MATRIX_C2) : !float_equal(MATRIX_S1, -MATRIX_S2); } -- 2.11.4.GIT