cocos2d-x 3.0
- 首页 - 相关页面 - 模块 - 命名空间 - - 文件 -
Public 成员函数 - 图1 Public 成员函数 - 图2)
- 类列表 - 类索引 - 类继承关系 - 类成员

全部)) 命名空间) 文件) 函数) 变量) 类型定义) 枚举) 枚举值) 属性) 友元) 宏定义)))

Public 成员函数 | 静态 Public 成员函数 | Public 属性 | 友元 | 所有成员列表

Quaternion类 参考

在空间中定义一个四元数代码一个对象的方向 更多…

#include

## Public 成员函数
Quaternion ()
构造一个四元数并初始化为(0,0,0,1)。 更多…
Quaternion (float xx, float yy, float zz, float ww)
构造一个四元数并用给定的值进行初始化 更多…
Quaternion (float array)
根据指定数组的值构造一个新的四元数。 更多…
Quaternion (const Mat4 &m)
根据指定矩阵的旋转部分构造一个四元数 更多…
Quaternion (const Vec3 &axis, float angle)
根据指定的旋转轴和角度的旋转构造一个四元数 更多…
Quaternion (const Quaternion &copy)
根据指定的四元数复制一个新的四元数 更多…
~Quaternion ()
析构函数. 更多…
bool isIdentity () const
判断当前四元数是否单位四元数 更多…
bool isZero () const
判断当前四元数是否全部为零 更多…
void conjugate ()
设置当前四元数与自身共轭. 更多…
Quaternion getConjugated () const
获取当前四元数的共轭. 更多…
bool inverse ()
设置当前四元数与自身相反. 更多…
Quaternion getInversed () const
获取四元数的倒数 更多…
void multiply (const Quaternion &q)
与指定的四元数相乘,并把结果储存到指定传入的四元数中。 更多…
void normalize ()
归一化四元数有利于它有统一的单位长度 更多…
Quaternion getNormalized () const
获取归一处理的四元数 更多…
void set (float xx, float yy, float zz, float ww)
根据指定的值设置四元数的元素 更多…
void set (float array)
根据指定的数组设置四元数的元素 更多…
void set (const Mat4 &m)
设置四元数等于指定矩阵的旋转部分 更多…
void set (const Vec3 &axis, float angle)
设置四元数等于指定指定旋转轴和角度的旋转 更多…
void set (const Quaternion &q)
复制四元数的元素到指定的四元数的副本。 更多…
void setIdentity ()
设置四元数为该单位四元数 更多…
float toAxisAngle (Vec3 e) const
把四元数转换为转角符号。该轴是归一化的。 更多…
const Quaternion [operator](../../dc/de3/class_quaternion.html#aa489ebccab55634d1c99f63b311fb207) (const Quaternion &q) const
计算当前四元数与指定四元数的乘积的四元数。 更多…
Quaternion & operator*= (const Quaternion &q)
计算当前四元数与指定四元数的乘积。 更多…
## 静态 Public 成员函数
static const Quaternion & identity ()
返回单位四元数. 更多…
static const Quaternion & zero ()
返回全是零的四元数. 更多…
static void createFromRotationMatrix (const Mat4 &m, Quaternion dst)
根据指定矩阵的旋转部分创建一个四元数,并储存在指定的四元数中 更多…
static void createFromAxisAngle (const Vec3 &axis, float angle, Quaternion dst)
根据指定旋转轴和角度创建一个四元数,并储存在指定的四元数中 更多…
static void multiply (const Quaternion &q1, const Quaternion &q2, Quaternion dst)
把两个指定的四元数相乘,并把结果储存到dst(指定的四元数引用) 更多…
static void lerp (const Quaternion &q1, const Quaternion &q2, float t, Quaternion dst)
把两个四元数使用线性插值进行插值。 更多…
static void slerp (const Quaternion &q1, const Quaternion &q2, float t, Quaternion dst)
把两个四元数使用球形线性插值进行插值。 更多…
static void squad (const Quaternion &q1, const Quaternion &q2, const Quaternion &s1, const Quaternion &s2, float t, Quaternion dst)
使用球形样条插值修改一系列的四元数。 更多…
## Public 属性
float x
四元数的向量分量x值 更多…
float y
四元数的向量分量y值 更多…
float z
四元数的向量分量z值 更多…
float w
四元数的标量分量 更多…
## 友元
class Curve
class Transform

详细描述

在空间中定义一个四元数代码一个对象的方向

四元数通常用来替换欧拉角,旋转矩阵,以此来实现平滑插补,避免万向节死锁。

要注意四元数类(Quaternion)不会自动保持四元数归一化。因此,必要时必需通过调用归一的方法把四元数归一化。

lerp(线性插值):它的插补曲线给出了在四元数空间中的直线。这是简单和快速地计算。唯一的问题是,它不提供恒角速度。注意一个恒定的速度不一定是一条曲线的要求; slerp(球形线性插值):它的插补曲线构成的四元数单位球面上有很大的弧线。 Slerp提供恒定角速度; squad(球形样条插值):在使用slerp(球形线性插值)一系列的旋转进行插值时导致了以下问题:

  • 曲线的控制点不平滑
  • 角速度不是恒定的;
  • 角速度的控制点不是连续的

由于squad(球形样条插值是连续可微的,它可以补救上面提到的第一个和第三个问题。 这里提供的slerp(球形线性插值)方法用于主旋转的插值。它把+q和-q作为同一主转动,并且可以随意地输入负数。由此产生的路径总是短弧。

这里提供的lerp(线性插值)方法在四元数空间严格插值。需要注意的是如果一个四元数和它的确切负数之间进行插值,产生的路径可能经过原点。

例如,考虑下面的四元数:

q1 = (0.6, 0.8, 0.0, 0.0), q2 = (0.0, 0.6, 0.8, 0.0), q3 = (0.6, 0.0, 0.8, 0.0), 和 q4 = (-0.8, 0.0, -0.6, 0.0). For the point p = (1.0, 1.0, 1.0), the following figures show the trajectories of p using lerp, slerp, and squad. 对于点p = (1.0, 1.0, 1.0), 以下数据显示了点p使用lerp(线性插值),slerp(球形线性插值)和squad(球形样条插值)的轨迹。

构造及析构函数说明

Quaternion ( )

构造一个四元数并初始化为(0,0,0,1)。

Quaternion ( float xx,
float yy,
float zz,
float ww
)

构造一个四元数并用给定的值进行初始化

  • 参数
  • xx四元数的x分量 yy四元数的y分量 zz四元数的z分量 ww四元数的w分量

Quaternion ( float * array)

根据指定数组的值构造一个新的四元数。

  • 参数
  • array构造四元数的数组

Quaternion ( const Mat4 & m)

根据指定矩阵的旋转部分构造一个四元数

  • 参数
  • mThe matrix.

Quaternion ( const Vec3 & axis,
float angle
)

根据指定的旋转轴和角度的旋转构造一个四元数

  • 参数
  • axis描述旋转轴的矢量。 angle旋转角度(弧度)。

Quaternion ( const Quaternion & copy)

根据指定的四元数复制一个新的四元数

  • 参数
  • copy要复制的四元数

~Quaternion ( )

析构函数.

成员函数说明

void conjugate ( )

设置当前四元数与自身共轭.

static void createFromAxisAngle ( const Vec3 & axis,
float angle,
Quaternion * dst
)

static

根据指定旋转轴和角度创建一个四元数,并储存在指定的四元数中

  • 参数
  • axis描述旋转轴的矢量。 angle旋转角度(弧度)。 dst储存结果的四元数。

static void createFromRotationMatrix ( const Mat4 & m,
Quaternion * dst
)

static

根据指定矩阵的旋转部分创建一个四元数,并储存在指定的四元数中

  • 参数
  • m矩阵。 dst储存结果的四元数。

Quaternion getConjugated ( ) const

获取当前四元数的共轭.

Quaternion getInversed ( ) const

获取四元数的倒数

需要注意的是四元数的倒数等于它的共轭时,四元数是统一单位长度。出于这个原因,当四元数已经统一单位长度时,它是使用共轭方法时更直接有效的。

  • 返回
  • 获取四元数的倒数

Quaternion getNormalized ( ) const

获取归一处理的四元数

如果这个四元数是有单位长度或者为零,只是返回该四元数.

static const Quaternion& identity ( )

static

返回单位四元数.

  • 返回
  • 单位四元数。

bool inverse ( )

设置当前四元数与自身相反.

需要注意的是四元数的倒数等于它的共轭时,四元数是单位长度。出于这个原因,当四元数已经单位长度时,它是使用共轭方法时更直接有效的。

  • 返回
  • 如果当前四元数是可以倒置计算的返回true,否则返回false。

bool isIdentity ( ) const

判断当前四元数是否单位四元数

  • 返回
  • 如果是单位四元数返回true,否则返回false。

bool isZero ( ) const

判断当前四元数是否全部为零

  • 返回
  • 如果四元数全部为零返回true,否则返回false。

static void lerp ( const Quaternion & q1,
const Quaternion & q2,
float t,
Quaternion * dst
)

static

把两个四元数使用线性插值进行插值。

四元数之间线性插值的插值曲线给出了在四元数空间中的直线。

  • 参数
  • q1第一个四元数。 q2第二个四元数。 t内插系数。 dst储存结果的四元数。

void multiply ( const Quaternion & q)

与指定的四元数相乘,并把结果储存到指定传入的四元数中。

  • 参数
  • q相乘的四元数。

static void multiply ( const Quaternion & q1,
const Quaternion & q2,
Quaternion * dst
)

static

把两个指定的四元数相乘,并把结果储存到dst(指定的四元数引用)

  • 参数
  • q1第一个四元数。 q2第二个四元数。 dst储存结果的四元数引用。

void normalize ( )

归一化四元数有利于它有统一的单位长度

如果四元数已经有单位长度或者四元数的长度为零,则此方法不执行任何操作。

const Quaternion operator* ( const Quaternion & q) const

inline

计算当前四元数与指定四元数的乘积的四元数。

注意:该方法不修改当此四元数。

  • 参数
  • q要相乘的四元数。

  • 返回
  • 两个四元数的乘积的四元数。

Quaternion& operator*= ( const Quaternion & q)

inline

计算当前四元数与指定四元数的乘积。

  • 参数
  • q要相乘的四元数。

  • 返回
  • 相乘之后的四元数。

void set ( float xx,
float yy,
float zz,
float ww
)

根据指定的值设置四元数的元素

  • 参数
  • xx新的x值 yy新的y值 zz新的z值 ww新的w值

void set ( float * array)

根据指定的数组设置四元数的元素

  • 参数
  • array一个包含四元数x,y,z,w分量的数组

void set ( const Mat4 & m)

设置四元数等于指定矩阵的旋转部分

  • 参数
  • m矩阵。

void set ( const Vec3 & axis,
float angle
)

设置四元数等于指定指定旋转轴和角度的旋转

  • 参数
  • axis旋转轴。 angle旋转的角度(以弧度为单位)。

void set ( const Quaternion & q)

复制四元数的元素到指定的四元数的副本。

  • 参数
  • q四元数的副本。

void setIdentity ( )

设置四元数为该单位四元数

static void slerp ( const Quaternion & q1,
const Quaternion & q2,
float t,
Quaternion * dst
)

static

把两个四元数使用球形线性插值进行插值。

球形线性插值提供不同方向的平滑过渡往往在动画的三维模型或摄像机非常有用。

注:为了精确插值,输入四元数必须在(或接近)单位长度。此方法不会自动归一化牏输入的四元数,如有必要,它是由调用者来确保他们都归一化。

  • 参数
  • q1第一个四元数。 q2第二个四元数。 t内插系数。 dst储存结果的四元数。

static void squad ( const Quaternion & q1,
const Quaternion & q2,
const Quaternion & s1,
const Quaternion & s2,
float t,
Quaternion * dst
)

static

使用球形样条插值修改一系列的四元数。

球形样条插值提供不同方向平滑的过渡往往在动画的三维模型或摄像机非常有用。

注:为了精确插值,输入四元数必须是单位。 此方法不会自动归一化处理输入的四元数,如果必要,它是由调用者来确保他们都归一化。

  • 参数
  • q1第一个四元数。 q2第二个四元数。 s1第一个控制点。 s2第丙个控制点。 t内插系数。 dst储存结果的四元数。

float toAxisAngle ( Vec3 * e) const

把四元数转换为转角符号。该轴是归一化的。

  • 参数
  • e储存该轴的Vec3f。

  • 返回
  • 角度(以弧度为单位)

static const Quaternion& zero ( )

static

返回全是零的四元数.

  • 返回
  • 全是零的四元数.

友元及相关函数文档

friend class Curve

friend

friend class Transform

friend

类成员变量说明

float w

四元数的标量分量

float x

四元数的向量分量x值

float y

四元数的向量分量y值

float z

四元数的向量分量z值


该类的文档由以下文件生成:

  • /Users/zeroyang/Documents/github/cocos2d-x/cocos/math/Quaternion.h
  • Quaternion
  • 生成于 2014年 五月 29日 星期四 09:41:43 , 为 cocos2d-x使用 doxygen 1.8.6