ARQuat四元数
所有文档

          AR开放平台

          ARQuat四元数

          此类封装数学库,适用于2.6版本以上的SDK。

          ARQuat表示一个四元数,它代表了一个旋转,任何旋转都可以解析为绕某个轴转一定角度,包含四个float型成员w,x,y,z

          Fileds

          类型 成员变量
          float w
          float x
          float y
          float z

          ARQuat::w

          获取四元数的w的值

          Parameters

          Returns

          • float | w的值
          sample:
          local quat = ae.ARQuat:new_local(1, 1, 1, 1)
          local w_value = quat.w

          ARQuat::x

          获取四元数的x的值

          Parameters

          Returns

          • float | x的值
          sample:
          local quat = ae.ARQuat:new_local(1, 1, 1, 1)
          local x_value = quat.x

          ARQuat::y

          获取四元数的y的值

          Parameters

          Returns

          • float | y的值
          sample:
          local quat = ae.ARQuat:new_local(1, 1, 1, 1)
          local z_value = quat.y

          ARQuat::z

          获取四元数的z的值

          Parameters

          Returns

          • float | z的值
          sample:
          local quat = ae.ARQuat:new_local(1, 1, 1, 1)
          local z_value = quat.z

          Public Methods

          返回类型 函数名 备注
          ARQuat ARQuat() 构造函数
          ARQuat ARQuat(float w, float x, float y, float z)](#ARQuat::ARQuat(float w, float x, float y, float z) 构造函数
          ARQuat ARQuat(ARVec3 axis, float angle)](#ARQuat::ARQuat(ARVec3 axis, float angle) 构造函数
          string to_string() 转换为字符串
          void rotation(const ARVec3& src, const ARVec3& dst) 得到两个向量之间的旋转四元数
          float angle() 返回该四元数的旋转角度
          ARVec3 axis() 反回该四元数的旋转轴
          ARQuat operator*(const ARQuat& src) 四元数相乘
          ARVec3 operator*(const ARVec3& src) 计算某轴绕该四元数的旋转

          ARQuat::ARQuat()

          ARQuat ARQuat() 创建一个四元数,w、x、y、z全部为0

          Parameters

          Returns

          • ARQuat | 返回一个四元数
          sample:
          local quat = ae.ARQuat:new_local()

          ARQuat::ARQuat(float w, float x, float y, float z)

          ARQuat ARQuat(float w, float x, float y, float z) 通过四个float直接赋值创建一个四元数

          Parameters

          • w | float
          • x | float
          • y | float
          • z | float

          Returns

          • ARQuat | 返回一个四元数
          sample:
          local quat = ae.ARQuat:new_local(1,1,1,1)

          ARQuat::ARQuat(ARVec3 axis, float angle)

          ARQuat ARQuat(ARVec3 axis, float angle) 通过旋转轴与旋转角度创建一个四元数

          Parameters

          • axis | ARVec3 旋转轴
          • angle | float 旋转角度

          Returns

          • ARQuat | 返回一个四元数
          sample:
          local axis = ae.ARVec3:new_local(1, 1, 1)
          local angle = 0.5
          local quat = ae.ARQuat:new_local(axis, angle)

          ARQuat::to_string()

          string to_string() 获取四元数的字符串形式

          Parameters

          Returns

          • string | 返回四元数的字符串形式
          sample:
          local quat = ae.ARQuat:new_local(1,1,1,1)
          local str = quat:to_string()

          ARQuat::rotation(const ARVec3& src, const ARVec3& dst)

          void rotation(const ARVec3& src, const ARVec3& dst) 计算两个从src向量转到dst向量的四元数,并将值给到自己

          Parameters

          • src | ARVec3 初始向量
          • dst | ARVec3 目标向量

          Returns

          • void
          sample:
          local quat = ae.ARQuat:new_local()
          local src = ae.ARVec3:new_local(0, 0, 1)
          local dst = ae.ARVec3:new_local(1, 1, 1)
          
          quat:rotation(src, dst) //执行后四元数的值会变化,quat表示从src到dst的旋转

          ARQuat::angle()

          float angle() 获取该四元数的旋转角

          Parameters

          Returns

          • float | 获取该四元数的旋转角
          sample:
          local quat = ae.ARQuat:new_local()
          local src = ae.ARVec3:new_local(0, 0, 1)
          local dst = ae.ARVec3:new_local(1, 1, 1)
          quat:rotation(src, dst)
          
          local angle = quat:angle()

          ARQuat::axis()

          ARVec3 axis() 获取该四元数的旋转轴

          Parameters

          Returns

          • ARVec3 | 获取该四元数的旋转轴
          sample:
          local quat = ae.ARQuat:new_local()
          local src = ae.ARVec3:new_local(0, 0, 1)
          local dst = ae.ARVec3:new_local(1, 1, 1)
          quat:rotation(src, dst)
          
          local axis = quat:axis()

          ARQuat::operator*(const ARQuat& src)

          ARQuat operator*(const ARQuat& src) 两个四元数相乘,返回一个新的四元数

          Parameters

          • src | ARQuat

          Returns

          • ARQuat | 返回一个新的四元数
          sample:
          //创建四元数ARQuat  quat_a quat_b
          
          local result = quat_a * quat_b

          ARQuat::operator*(const ARVec3& src)

          ARVec3 operator*(const ARVec3& src) 四元数代表一个旋转,本函数计算src向量进行本次旋转后的向量

          Parameters

          • src | ARVec3 待旋转的向量

          Returns

          • ARVec3 | 旋转后的向量
          sample:
          //创建四元数ARQuat  quat 
          //创建一个待旋转的向量 ARVec3  axis
          local axis_after_rotation = quat * axis
          上一篇
          ARMat44
          下一篇
          ARVec2