+template<typename T, unsigned D>
+inline AffineTransformation<T, D> &AffineTransformation<T, D>::operator*=(const AffineTransformation<T, D> &other)
+{
+ matrix *= other.get_matrix();
+ return *this;
+}
+
+template<typename T, unsigned D>
+inline AffineTransformation<T, D> operator*(const AffineTransformation<T, D> &at1, const AffineTransformation<T, D> &at2)
+{
+ AffineTransformation<T, D> r = at1;
+ return r *= at2;
+}
+
+template<typename T, unsigned D>
+inline AffineTransformation<T, D> &AffineTransformation<T, D>::invert()
+{
+ matrix.invert();
+ return *this;
+}
+
+template<typename T, unsigned D>
+inline AffineTransformation<T, D> invert(const AffineTransformation<T, D> &at)
+{
+ AffineTransformation<T, D> r = at;
+ return r.invert();
+}
+