1 #ifndef MSLANG_AFFINETRANSFORMATION_H
2 #define MSLANG_AFFINETRANSFORMATION_H
15 (*this)(0, 0) = row0[0];
16 (*this)(0, 1) = row0[1];
17 (*this)(0, 2) = row0[2];
18 (*this)(1, 0) = row1[0];
19 (*this)(1, 1) = row1[1];
20 (*this)(1, 2) = row1[2];
41 double det = (*this)(0, 0) * (*
this)(1, 1) - (*
this)(1, 0) * (*
this)(0, 1);
43 Ret(0, 0) = (*this)(1, 1) / det;
44 Ret(1, 0) = -(*this)(1, 0) / det;
45 Ret(0, 1) = -(*this)(0, 1) / det;
46 Ret(1, 1) = (*this)(0, 0) / det;
48 Ret(0, 2) = - Ret(0, 0) * (*this)(0, 2) - Ret(0, 1) * (*this)(1, 2);
49 Ret(1, 2) = - Ret(1, 0) * (*this)(0, 2) - Ret(1, 1) * (*this)(1, 2);
56 return Vector_t(-(*
this)(0, 2), -(*
this)(1, 2), 0.0);
60 return atan2((*
this)(1, 0), (*
this)(0, 0));
69 return Vector_t(w(0, 0), w(1, 0), 0.0);
boost::numeric::ublas::matrix< double > matrix_t
T det(const AntiSymTenzor< T, 3 > &)
Vektor< double, 3 > Vector_t
AffineTransformation mult(const AffineTransformation &B)
PETE_TBTree< FnArcTan2, PETE_Scalar< Vektor< T1, Dim > >, typename T2::PETE_Expr_t > atan2(const Vektor< T1, Dim > &l, const PETE_Expr< T2 > &r)
Vector_t transformTo(const Vector_t &v) const
T::PETE_Expr_t::PETE_Return_t prod(const PETE_Expr< T > &expr)
AffineTransformation(const Vector_t &row0, const Vector_t &row1)
Vector_t transformFrom(const Vector_t &v) const
Vector_t getOrigin() const
AffineTransformation getInverse() const