25 #ifndef INCLUDED_MatrixEigenAssign_h_GUID_23E844E3_DFBB_468C_1CD9_2BD88AA51871
26 #define INCLUDED_MatrixEigenAssign_h_GUID_23E844E3_DFBB_468C_1CD9_2BD88AA51871
50 template <
typename Scalar,
typename T>
53 typedef Eigen::Matrix<Scalar, 4, 4> TargetType;
54 static_assert(!TargetType::IsRowMajor,
"This and other code depends on "
55 "Eigen matrices being column "
59 EIGEN_STATIC_ASSERT_FIXED_SIZE(T);
61 EIGEN_STATIC_ASSERT_MATRIX_SPECIFIC_SIZE(T, 4, 4);
63 const bool needsTransposeFromColMaj =
64 detail::matrixNeedsTranspose(flags);
68 const bool needsTranspose = (T::IsRowMajor) ? !needsTransposeFromColMaj
69 : needsTransposeFromColMaj;
70 Eigen::Map<TargetType> destMat(dest);
72 destMat = src.template cast<Scalar>().transpose();
74 destMat = src.template cast<Scalar>();
81 #endif // INCLUDED_MatrixEigenAssign_h_GUID_23E844E3_DFBB_468C_1CD9_2BD88AA51871
The main namespace for all C++ elements of the framework, internal and external.
Header wrapping include of and for warning quieting.
uint16_t OSVR_MatrixConventions
Type for passing matrix convention flags.
void matrixEigenAssign(T const &src, OSVR_MatrixConventions flags, Scalar *dest)
Helper function template to assign/convert matrices as required.
double Scalar
Common scalar type.