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

静态数据成员

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插值过程中的某一线段的起点和终点(控制点连线)。




你可能感兴趣的:(vector,Matrix)