X-Git-Url: https://git.dogcows.com/gitweb?p=chaz%2Fyoink;a=blobdiff_plain;f=src%2FMoof%2Fcml%2Fmathlib%2Fmatrix_translation.h;h=664c5778da27d18b6a2d6419c17b964ba61902f3;hp=dadf4c53c0bcf66f7784aa75bec6c6fe3663c0e5;hb=50c1239917f5e443b8ec91773c85ceb3db7da67b;hpb=c2321281bf12a7efaedde930422c7ddbc92080d4 diff --git a/src/Moof/cml/mathlib/matrix_translation.h b/src/Moof/cml/mathlib/matrix_translation.h index dadf4c5..664c577 100644 --- a/src/Moof/cml/mathlib/matrix_translation.h +++ b/src/Moof/cml/mathlib/matrix_translation.h @@ -104,6 +104,26 @@ matrix_get_translation(const MatT& m) ); } +/** Get the translation of a 3D affine transform */ +template < class MatT > void +matrix_get_translation( + const MatT& m, + typename MatT::value_type& t1, + typename MatT::value_type& t2, + typename MatT::value_type& t3 + ) +{ + typedef typename MatT::value_type value_type; + typedef vector< value_type, fixed<3> > vector_type; + + /* Checking */ + detail::CheckMatAffine3D(m); + + t1 = m.basis_element(3,0); + t2 = m.basis_element(3,1); + t3 = m.basis_element(3,2); +} + /** Get the translation of a 2D affine transform */ template < class MatT > vector< typename MatT::value_type, fixed<2> > matrix_get_translation_2D(const MatT& m) @@ -117,6 +137,24 @@ matrix_get_translation_2D(const MatT& m) return vector_type(m.basis_element(2,0), m.basis_element(2,1)); } +/** Get the translation of a 2D affine transform */ +template < class MatT > void +matrix_get_translation_2D( + const MatT& m, + typename MatT::value_type& t1, + typename MatT::value_type& t2 + ) +{ + typedef typename MatT::value_type value_type; + typedef vector< value_type, fixed<2> > vector_type; + + /* Checking */ + detail::CheckMatAffine2D(m); + + t1 = m.basis_element(2,0); + t2 = m.basis_element(2,1); +} + ////////////////////////////////////////////////////////////////////////////// // Function for getting the translation of a 3D view matrix //////////////////////////////////////////////////////////////////////////////