summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>2019-06-17 10:43:31 +0900
committerYAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>2019-06-17 10:43:31 +0900
commit8c56eb0525c22acee713434840c2ef0a1a3811cc (patch)
tree4d2c2bd7f292cab24a7d60ce6728249f0da4cd1c
parent421220e2946dadab77fbfc79cf4f0daa49961c41 (diff)
downloademacs-8c56eb0525c22acee713434840c2ef0a1a3811cc.tar.gz
Avoid rounding error in image rotation
* src/image.c (image_set_rotation): Halve translations as double values.
-rw-r--r--src/image.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/src/image.c b/src/image.c
index a3747cfa6b7..c08b898e7d8 100644
--- a/src/image.c
+++ b/src/image.c
@@ -2139,7 +2139,7 @@ image_set_rotation (struct image *img, matrix3x3 tm)
matrix3x3 t
= { [0][0] = 1,
[1][1] = 1,
- [2][0] = img->width >> 1, [2][1] = img->height >> 1, [2][2] = 1 };
+ [2][0] = img->width * .5, [2][1] = img->height * .5, [2][2] = 1 };
matrix3x3 tmp;
matrix3x3_mult (t, tm, tmp);
@@ -2151,8 +2151,8 @@ image_set_rotation (struct image *img, matrix3x3 tm)
matrix3x3_mult (rot, tmp, tmp2);
/* Translate back. */
- t[2][0] = - (width >> 1);
- t[2][1] = - (height >> 1);
+ t[2][0] = - (width * .5);
+ t[2][1] = - (height * .5);
matrix3x3_mult (t, tmp2, tm);
img->width = width;