现在的位置: 首页 > 综合 > 正文

在Ogre中旋转一个Vector3

2012年03月11日 ⁄ 综合 ⁄ 共 431字 ⁄ 字号 评论关闭

突然发现在Ogre里面Vector3居然没有相关的旋转的方法,不过这样也合理,设计Vector3不需要考虑到这个。

还好,用Ogre里面的四元数Quaternion可以很容易做到按照任意轴旋转一个Vector3。只需要构造一个旋转四元数就可以,使用该接口:

Quaternion::FromAngleAxis ( const Radian & rfAngle, const Vector3 & rkAxis )
rfAngle :旋转的角度
rkAxis  :旋转的参考轴

例如:将一个Vector3按照Y轴旋转45度可以这样用:
image 
而且可以从运算结果看到旋转是按照顺时针旋转的。
其次,这样写是编译不过的:test = test * rotate 。
这是因为四元数重载了操作符“*”:
Vector3 Ogre::Quaternion::operator * ( const Vector3 & rkVector ) const
而Vector3没有重载支持四元数的 * 操作符 。。

没什么技术含量,写下来方便自己记忆而已。

By: 洪庚伟

抱歉!评论已关闭.