关于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 Matrix3rot ) 从一个3*3旋转矩阵构造一个四元数  

 Ogre::Quaternion::Quaternion (const RadianrfAngle, const Vector3rkAxis )  角度和坐标轴构造一个四元数


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

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




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值