39 #ifndef SURGSIM_GRAPHICS_OSGMATRIXCONVERSIONS_H
40 #define SURGSIM_GRAPHICS_OSGMATRIXCONVERSIONS_H
44 #include <osg/Matrixf>
45 #include <osg/Matrixd>
46 #include <osg/Uniform>
55 template <
int MOpt>
inline
56 const osg::Matrix2
toOsg(
const Eigen::Matrix<float, 2, 2, MOpt>& matrix)
58 osg::Matrix2 osgMatrix;
59 Eigen::Map<Eigen::Matrix<float, 2, 2, Eigen::ColMajor>>(osgMatrix.ptr()) = matrix;
64 template <
int MOpt>
inline
65 const osg::Matrix2d
toOsg(
const Eigen::Matrix<double, 2, 2, MOpt>& matrix)
67 osg::Matrix2d osgMatrix;
68 Eigen::Map<Eigen::Matrix<double, 2, 2, Eigen::ColMajor>>(osgMatrix.ptr()) = matrix;
73 inline const Eigen::Matrix<float, 2, 2, Eigen::RowMajor>
fromOsg(
const osg::Matrix2& matrix)
75 return Eigen::Map<const Eigen::Matrix<float, 2, 2, Eigen::ColMajor>>(matrix.ptr());
78 inline const Eigen::Matrix<double, 2, 2, Eigen::RowMajor>
fromOsg(
const osg::Matrix2d& matrix)
80 return Eigen::Map<const Eigen::Matrix<double, 2, 2, Eigen::ColMajor>>(matrix.ptr());
84 template <
int MOpt>
inline
85 const osg::Matrix3
toOsg(
const Eigen::Matrix<float, 3, 3, MOpt>& matrix)
87 osg::Matrix3 osgMatrix;
88 Eigen::Map<Eigen::Matrix<float, 3, 3, Eigen::ColMajor>>(osgMatrix.ptr()) = matrix;
93 template <
int MOpt>
inline
94 const osg::Matrix3d
toOsg(
const Eigen::Matrix<double, 3, 3, MOpt>& matrix)
96 osg::Matrix3d osgMatrix;
97 Eigen::Map<Eigen::Matrix<double, 3, 3, Eigen::ColMajor>>(osgMatrix.ptr()) = matrix;
102 inline const Eigen::Matrix<float, 3, 3, Eigen::RowMajor>
fromOsg(
const osg::Matrix3& matrix)
104 return Eigen::Map<const Eigen::Matrix<float, 3, 3, Eigen::ColMajor>>(matrix.ptr());
108 inline const Eigen::Matrix<double, 3, 3, Eigen::RowMajor>
fromOsg(
const osg::Matrix3d& matrix)
110 return Eigen::Map<const Eigen::Matrix<double, 3, 3, Eigen::ColMajor>>(matrix.ptr());
114 template <
int MOpt>
inline
115 const osg::Matrixf
toOsg(
const Eigen::Matrix<float, 4, 4, MOpt>& matrix)
117 osg::Matrixf osgMatrix;
118 Eigen::Map<Eigen::Matrix<float, 4, 4, Eigen::ColMajor>>(osgMatrix.ptr()) = matrix;
123 inline const Eigen::Matrix<float, 4, 4, Eigen::RowMajor>
fromOsg(
const osg::Matrixf& matrix)
125 return Eigen::Map<const Eigen::Matrix<float, 4, 4, Eigen::ColMajor>>(matrix.ptr());
129 template <
int MOpt>
inline
130 const osg::Matrixd
toOsg(
const Eigen::Matrix<double, 4, 4, MOpt>& matrix)
132 osg::Matrixd osgMatrix;
133 Eigen::Map<Eigen::Matrix<double, 4, 4, Eigen::ColMajor>>(osgMatrix.ptr()) = matrix;
138 inline const Eigen::Matrix<double, 4, 4, Eigen::RowMajor>
fromOsg(
const osg::Matrixd& matrix)
140 return Eigen::Map<const Eigen::Matrix<double, 4, 4, Eigen::ColMajor>>(matrix.ptr());
147 #endif // SURGSIM_GRAPHICS_OSGMATRIXCONVERSIONS_H