突然发现在Ogre里面Vector3居然没有相关的旋转的方法,不过这样也合理,设计Vector3不需要考虑到这个。
还好,用Ogre里面的四元数Quaternion可以很容易做到按照任意轴旋转一个Vector3。只需要构造一个旋转四元数就可以,使用该接口:
Quaternion::FromAngleAxis ( const Radian & rfAngle, const Vector3 & rkAxis )
rfAngle :旋转的角度
rkAxis :旋转的参考轴
例如:将一个Vector3按照Y轴旋转45度可以这样用:
而且可以从运算结果看到旋转是按照顺时针旋转的。
其次,这样写是编译不过的:test = test * rotate 。
这是因为四元数重载了操作符“*”:
Vector3 Ogre::Quaternion::operator * ( const Vector3 & rkVector ) const
而Vector3没有重载支持四元数的 * 操作符 。。
没什么技术含量,写下来方便自己记忆而已。
By: 洪庚伟