资讯 社区 文档
技术能力
语音技术
文字识别
人脸与人体
图像技术
语言与知识
视频技术

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