1 #include "transforms.h"
2
3 namespace Geom {
4
operator *(Translate const & t,Scale const & s)5 Matrix operator*(Translate const &t, Scale const &s) {
6 Matrix ret(s);
7 ret[4] = t[X] * s[X];
8 ret[5] = t[Y] * s[Y];
9 return ret;
10 }
11
operator *(Translate const & t,Rotate const & r)12 Matrix operator*(Translate const &t, Rotate const &r) {
13 Matrix ret(r);
14 ret.setTranslation(t.vec * ret);
15 return ret;
16 }
17
operator *(Scale const & s,Translate const & t)18 Matrix operator*(Scale const &s, Translate const &t) {
19 return Matrix(s[0], 0,
20 0 , s[1],
21 t[0], t[1]);
22 }
23
operator *(Scale const & s,Matrix const & m)24 Matrix operator*(Scale const &s, Matrix const &m) {
25 Matrix ret(m);
26 ret[0] *= s[X];
27 ret[1] *= s[X];
28 ret[2] *= s[Y];
29 ret[3] *= s[Y];
30 return ret;
31 }
32
operator *(Matrix const & m,Translate const & t)33 Matrix operator*(Matrix const &m, Translate const &t) {
34 Matrix ret(m);
35 ret[4] += t[X];
36 ret[5] += t[Y];
37 return ret;
38 }
39
operator *(Matrix const & m,Scale const & s)40 Matrix operator*(Matrix const &m, Scale const &s) {
41 Matrix ret(m);
42 ret[0] *= s[X]; ret[1] *= s[Y];
43 ret[2] *= s[X]; ret[3] *= s[Y];
44 ret[4] *= s[X]; ret[5] *= s[Y];
45 return ret;
46 }
47
48 }
49