transforms.cpp revision e88f1eca443c9f97550088469932d9cea9ac0475
981b809bc6ed10a21e89444d9447e5475801874fjohanengelen#include "transforms.h"
981b809bc6ed10a21e89444d9447e5475801874fjohanengelen
981b809bc6ed10a21e89444d9447e5475801874fjohanengelennamespace Geom {
981b809bc6ed10a21e89444d9447e5475801874fjohanengelen
981b809bc6ed10a21e89444d9447e5475801874fjohanengelenMatrix operator*(Translate const &t, Scale const &s) {
981b809bc6ed10a21e89444d9447e5475801874fjohanengelen Matrix ret(s);
981b809bc6ed10a21e89444d9447e5475801874fjohanengelen ret[4] = t[X] * s[X];
981b809bc6ed10a21e89444d9447e5475801874fjohanengelen ret[5] = t[Y] * s[Y];
981b809bc6ed10a21e89444d9447e5475801874fjohanengelen return ret;
981b809bc6ed10a21e89444d9447e5475801874fjohanengelen}
981b809bc6ed10a21e89444d9447e5475801874fjohanengelen
981b809bc6ed10a21e89444d9447e5475801874fjohanengelenMatrix operator*(Translate const &t, Rotate const &r) {
981b809bc6ed10a21e89444d9447e5475801874fjohanengelen Matrix ret(r);
981b809bc6ed10a21e89444d9447e5475801874fjohanengelen ret.setTranslation(t.vec * ret);
981b809bc6ed10a21e89444d9447e5475801874fjohanengelen return ret;
981b809bc6ed10a21e89444d9447e5475801874fjohanengelen}
981b809bc6ed10a21e89444d9447e5475801874fjohanengelen
981b809bc6ed10a21e89444d9447e5475801874fjohanengelenMatrix operator*(Scale const &s, Translate const &t) {
981b809bc6ed10a21e89444d9447e5475801874fjohanengelen return Matrix(s[0], 0,
981b809bc6ed10a21e89444d9447e5475801874fjohanengelen 0 , s[1],
981b809bc6ed10a21e89444d9447e5475801874fjohanengelen t[0], t[1]);
981b809bc6ed10a21e89444d9447e5475801874fjohanengelen}
981b809bc6ed10a21e89444d9447e5475801874fjohanengelen
981b809bc6ed10a21e89444d9447e5475801874fjohanengelenMatrix operator*(Scale const &s, Matrix const &m) {
981b809bc6ed10a21e89444d9447e5475801874fjohanengelen Matrix ret(m);
981b809bc6ed10a21e89444d9447e5475801874fjohanengelen ret[0] *= s[X];
981b809bc6ed10a21e89444d9447e5475801874fjohanengelen ret[1] *= s[X];
981b809bc6ed10a21e89444d9447e5475801874fjohanengelen ret[2] *= s[Y];
981b809bc6ed10a21e89444d9447e5475801874fjohanengelen ret[3] *= s[Y];
981b809bc6ed10a21e89444d9447e5475801874fjohanengelen return ret;
981b809bc6ed10a21e89444d9447e5475801874fjohanengelen}
981b809bc6ed10a21e89444d9447e5475801874fjohanengelen
981b809bc6ed10a21e89444d9447e5475801874fjohanengelenMatrix operator*(Matrix const &m, Translate const &t) {
981b809bc6ed10a21e89444d9447e5475801874fjohanengelen Matrix ret(m);
981b809bc6ed10a21e89444d9447e5475801874fjohanengelen ret[4] += t[X];
981b809bc6ed10a21e89444d9447e5475801874fjohanengelen ret[5] += t[Y];
981b809bc6ed10a21e89444d9447e5475801874fjohanengelen return ret;
981b809bc6ed10a21e89444d9447e5475801874fjohanengelen}
981b809bc6ed10a21e89444d9447e5475801874fjohanengelen
981b809bc6ed10a21e89444d9447e5475801874fjohanengelenMatrix operator*(Matrix const &m, Scale const &s) {
981b809bc6ed10a21e89444d9447e5475801874fjohanengelen Matrix ret(m);
29684a16b6c92bee28a94fdc2607bcc143950fa8johanengelen ret[0] *= s[X]; ret[1] *= s[Y];
981b809bc6ed10a21e89444d9447e5475801874fjohanengelen ret[2] *= s[X]; ret[3] *= s[Y];
981b809bc6ed10a21e89444d9447e5475801874fjohanengelen ret[4] *= s[X]; ret[5] *= s[Y];
981b809bc6ed10a21e89444d9447e5475801874fjohanengelen return ret;
981b809bc6ed10a21e89444d9447e5475801874fjohanengelen}
981b809bc6ed10a21e89444d9447e5475801874fjohanengelen
981b809bc6ed10a21e89444d9447e5475801874fjohanengelen}
981b809bc6ed10a21e89444d9447e5475801874fjohanengelen
981b809bc6ed10a21e89444d9447e5475801874fjohanengelen/*
981b809bc6ed10a21e89444d9447e5475801874fjohanengelen Local Variables:
981b809bc6ed10a21e89444d9447e5475801874fjohanengelen mode:c++
981b809bc6ed10a21e89444d9447e5475801874fjohanengelen c-file-style:"stroustrup"
981b809bc6ed10a21e89444d9447e5475801874fjohanengelen c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +))
981b809bc6ed10a21e89444d9447e5475801874fjohanengelen indent-tabs-mode:nil
981b809bc6ed10a21e89444d9447e5475801874fjohanengelen fill-column:99
981b809bc6ed10a21e89444d9447e5475801874fjohanengelen End:
981b809bc6ed10a21e89444d9447e5475801874fjohanengelen*/
981b809bc6ed10a21e89444d9447e5475801874fjohanengelen// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:encoding=utf-8:textwidth=99 :
981b809bc6ed10a21e89444d9447e5475801874fjohanengelen