1 #ifndef TIL_MATRIX3_TOOLS_H 2 #define TIL_MATRIX3_TOOLS_H 13 template <
typename T1,
typename T2,
typename T3 >
22 for (std::size_t j = 0; j < 3; ++j)
24 vecout[j] = mat(0,j) * vec[0];
26 for (std::size_t i = 1; i < 3; ++i)
29 for (std::size_t j = 0; j < 3; ++j)
31 vecout[j] += mat(i,j) * veci ;
39 template <
typename T1,
typename T2,
typename T3 >
48 for (std::size_t j = 0; j < 3; ++j)
50 vecout[j] = mat(j,0) * vec[0];
52 for (std::size_t i = 1; i < 3; ++i)
55 for (std::size_t j = 0; j < 3; ++j)
57 vecout[j] += mat(j,i) * veci;
78 template <
typename T >
81 return m(0,0)*m(1,1)*m(2,2)+m(1,0)*m(2,1)*m(0,2)+m(2,0)*m(0,1)*m(1,2) -
82 m(0,2)*m(1,1)*m(2,0)-m(1,2)*m(2,1)*m(0,0)-m(2,2)*m(0,1)*m(1,0);
INLINE void apply(const Affine< T1 > &a, const numeric_array< T2, 3 > &in, numeric_array< typename combine< T1, T2 >::type, 3 > &out)
Belongs to package Box Do not include directly, include til/Box.h instead.
void apply_t(Matrix3< T1 > const &mat, numeric_array< T2, 3 > const &vec, numeric_array< T3, 3 > &vecout)
compute transpose(mat) * in
T det(const Matrix3< T > &m)