|
楼主 |
发表于 2013-10-14 22:27:54
|
显示全部楼层
wangshaomeng 发表于 2013-10-14 21:49
我也这样试过,这样定义这个四元数不正确,应该是用方向向量的单位向量。方向向量若不单位化,总会时不时 ... - osg::Vec3 eye;
- osg::Vec3 center;
-
- osg::Vec3 direction=center-eye;
- direction.normalize();
- osg::Vec3 right=direction ^ osg::Vec3(0,0,1);
- right.normalize();
- osg::Vec3 up=right ^ direction;
- up.normalize();
- osg::Matrix mat(right[0],up[0],-direction[0],0,
- right[1],up[1],-direction[1],0,
- right[2],up[2],-direction[2],0,
- 0,0,0,0
- );
- osg::Quat rotate=mat.getRotate().inverse();
复制代码 找到了一个博客 通过eye和center 求quat的 你可以试试 另外 求解一个向量的单位向量 直接调用normalize()就可以了 不需要算长度 再除 |
|