bdb6bcad3271bdc19fd59c9a6ce62c043c5b90ce
1 #include "transforms.h"
3 namespace Geom {
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 }
12 Matrix operator*(Translate const &t, Rotate const &r) {
13 Matrix ret(r);
14 ret.setTranslation(t.vec * ret);
15 return ret;
16 }
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 }
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 }
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 }
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 }
48 }
50 /*
51 Local Variables:
52 mode:c++
53 c-file-style:"stroustrup"
54 c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +))
55 indent-tabs-mode:nil
56 fill-column:99
57 End:
58 */
59 // vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:encoding=utf-8:textwidth=99 :