开放能力
开发平台
行业应用
生态合作
开发与教学
资讯 社区 控制台
技术能力
语音技术
文字识别
人脸与人体
图像技术
语言与知识
视频技术
AR与VR
数据智能
场景方案
部署方案
行业应用
智能教育
智能医疗
智能零售
智能工业
企业服务
智能政务
信息服务
智能园区

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