AcGeMatrix3d与osg::Matrixd

  • AcGeMatrix3d与osg::Matrixd是互为转置
  • ObjectArx矩阵采用后乘,也叫右乘(与OpenGL一致),坐标使用列向量形式
  • DXF笔记:AcGeMatrix3d与osg::Matrixd对比_AcGeMatrix3d后乘

  • Osg矩阵采用前乘,也叫左乘(与DirectX一致), 坐标使用行向量的形式
  • DXF笔记:AcGeMatrix3d与osg::Matrixd对比_3d_02

代码验证

以下代码演示了,将一个模型绕X轴平移2500, 绕Z轴旋转90度,以及一个在Y方向错切45度的结果。

//osg
//pos * 错切 * 旋转 * 平移
osg::Matrixd mFinalMatrix = obliqueMatrix * mRotateMatrix * translateMatrix;

//objectArx或opengl
//平移 * 旋转 * 错切 * pos
AcGeMatrix3d mAcgeFinalMatrix = mTranslateMatrix *mRotationMatrix *mObliqueMatrix;

DXF笔记:AcGeMatrix3d与osg::Matrixd对比_3d_03