您的位置:首页 > 其它

关于Ogre四元数类的一些解释

2011-07-22 14:45 337 查看
静态数据成员
Quaternion Quaternion::ZRE)(0.0, 0.0, 0.0, 0.0); 零四元数
Quaternion Quaternion::IDENTITY(1.0, 0.0, 0.0, 0.0) 单位四元数

构造函数
Ogre::Quaternion::Quaternion(Real fW =
1.0
,
Real fX =
0.0
,
Real fY =
0.0
,
Real fZ =
0.0
)
Ogre::Quaternion::Quaternion(const Matrix3 & rot) 从一个3*3旋转矩阵构造一个四元数
Ogre::Quaternion::Quaternion (const Radian & rfAngle, const Vector3 & rkAxis ) 角度和坐标轴构造一个四元数

点乘,四元数的点乘表示的是旋转的相似程度,结果是个实数,值越大,表示旋转的方式越相似。

Real Ogre::Quaternion::Dot(const Quaternion & rkQ) const
由3*3旋转矩阵生成四元数,参数是旋转矩阵。
void Quaternion::FromRotationMatrix (const Matrix3& kRot)

将四元数转换为旋转矩阵,参数是回传参数,接收得到的旋转矩阵。
void Quaternion::ToRotationMatrix (Matrix3& kRot) const

由四元数生成轴、角表示法的角和轴。参数是引用参数,回传用途。
void Quaternion::ToAngleAxis (Real& rfAngle, Vector3& rkAxis) const
由3个向量表达的旋转矩阵生成四元数,参数是指针指向的多个向量表达的旋转矩阵(一般为3个)
void Quaternion::FromAxes (const Vector3* akAxis)
由3个向量表达的旋转矩阵生成四元数
void FromAxes (const Vector3& xAxis, const Vector3& yAxis, const Vector3& zAxis);
由四元数生成旋转矩阵,该矩阵由指针指向的多个(3个)向量表达。
void ToAxes (Vector3* akAxis) const;
由四元数生成旋转矩阵,该矩阵由3个向量表达。
void ToAxes (Vector3& xAxis, Vector3& yAxis, Vector3& zAxis);
重载=操作符
Quaternion& operator= (const Quaternion& rkQ);
重载+操作符
Quaternion operator+ (const Quaternion& rkQ) const;
重载-操作符
Quaternion operator- (const Quaternion& rkQ) const;
重载*操作符,四元数*四元数。
Quaternion operator* (const Quaternion& rkQ) const;
重载*操作符,四元数*标量。
Quaternion operator* (Real fScalar) const;
重载*操作符,四元数*四元数。重载为友员方式。
friend Quaternion operator* (Real fScalar, const Quaternion& rkQ);
重载负号操作符
Quaternion operator- () const;
重载==操作符
bool operator== (const Quaternion& rhs) const;
四元数点乘
Real Dot (const Quaternion& rkQ) const;
四元数求模
Real Norm () const;
四元数求倒数,要求本四元数非0
Quaternion Inverse () const;
单位四元数求倒数,要求本四元数为单位四元数。
Quaternion UnitInverse () const; // apply to unit-length quaternion
求四元数的指数,即e的四元数次方
Quaternion Exp () const;
以e为底求四元数的对数
Quaternion Log () const;
用四元数旋转向量(似乎nVidia的SDK才支持)。
Vector3 operator* (const Vector3& rkVector) const;
静态成员函数,球面线性插值。参数fT为0-1的时间因子。
static Quaternion Slerp (Real fT, const Quaternion& rkP, const Quaternion& rkQ);
静态成员函数,带干扰因子的球面线性插值。参数fT为0-1的时间因子。
static Quaternion SlerpExtraSpins (Real fT, const Quaternion& rkP, const Quaternion& rkQ,
int iExtraSpins);
静态成员函数,目前不清楚用途。
static void Intermediate (const Quaternion& rkQ0,
const Quaternion& rkQ1, const Quaternion& rkQ2,
Quaternion& rka, Quaternion& rkB);
静态成员函数,样条插值(二次插值)。目的是在已知样条形状的情况下,通过插值得到平滑的目的线条。fT为0-1的时间因子。rkP和rkQ为样条的起点和终点,而rkA和为rkB插值过程中的某一线段的起点和终点(控制点连线)。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: