|
我有一个管状模型沿着X轴放置,另外还有点A,B。
现在希望能通过矩阵旋转到AB直线平行,直接通过在模型父节点加载矩阵来实现,代码如下:- osg::MatrixTransform * mt=new osg::MatrixTransform;
- osg::Matrix m;
- m=osg::Matrix::rotate(osg::Quat(-asin(deltaz),osg::Y_AXIS))*osg::Matrix::rotate(quat);
- m= osg::Matrixd::rotate(osg::Quat(ang1,osg::Vec3(0.0,0.0,1.0)))*
- osg::Matrixd::rotate(osg::Quat(ang2,osg::Vec3(0.0,1.0,0.0)))*
- osg::Matrixd::rotate(osg::Quat(ang3,osg::Vec3(1.0,0.0,0.0)))*
- osg::Matrix::translate(position);
- mt->setMatrix(m);
- mt->addChild(pNode);
复制代码 其中角度是通过两点的三角函数计算得来的,觉得不太合理,觉得角度这样算好像不对。所以想请教一下各位,我这样有什么不对的地方,或者能否提供一些更好的主意 :p |
|