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

ARVec3

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

ARVec3表示一个三维向量,包含三个float型成员x、y、z。

Fields

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

ARVec3::x

获取三维向量中的x的值

Parameters

Returns

  • float : x的值
sample:
local vec3 = ae.ARVec3:new_local(30,50,70)
local x_value = vec3.x

ARVec3::y

获取三维向量中的y的值

Parameters

Returns

  • float : y的值

DEMO:

sample:
local vec3 = ae.ARVec3:new_local(30,50,70)
local y_value = vec3.y

ARVec3::z

获取三维向量中的z的值

Parameters

Returns

  • float : z的值

DEMO:

sample:
local vec3 = ae.ARVec3:new_local(30,50,70)
local z_value = vec3.z

Public Methods

返回类型 函数名 备注
ARVec3 ARVec3() 构造函数
ARVec3 ARVec3(float x, float y, float z) 构造函数
float dot(ARVec3& data) 向量点乘
ARVec3 cross(ARVec3& data) 向量叉乘
ARVec3 normalize() 返回这个向量的单位向量
float length() 获取长度
ARVec3 to_euler_angles() 把一个方向转换为欧拉角
float vector_angle(const ARVec3& tar_vec) 获取两个向量之间的夹角
string to_string() 转换为字符串
ARVec3 operator+(const ARVec3& src) + 号操作符
ARVec3 operator-(const ARVec3& src) - 号操作符
ARVec3 operator*(const ARVec3& src) * 号操作符(向量相乘)
ARVec3 operator*(const float scale) * 号操作符(数字相乘)
ARVec3 operator/(const ARVec3& src) / 号操作符
bool operator==(const ARVec3& src) ==号操作符
float& operator[](unsigned i) []号操作符

ARVec3::ARVec3()

ARVec3 ARVec3()

构造函数,不传入任何参数,x、y、z的值默认为0

Parameters

Returns

  • ARVec3 : 一个新的ARVec3
sample:
local data = ae.ARVec3:new_local()

ARVec3::ARVec3(float x, float y, float z)

ARVec3 ARVec3(float x, float y, float z)

构造函数,传入参数x、y、z

Parameters

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

Returns

  • ARVec3 : 一个新的ARVec3
sample:
local data = ae.ARVec3:new_local(1,2,3)

ARVec3::dot(ARVec3& data)

float dot(ARVec3& data)

点乘

Parameters

  • data |ARVec3

Returns

  • float : 点乘的结果
sample:
local data = ae.ARVec3:new_local(1,2,3)
local data2 = ae.ARVec3:new_local(1,2,3)
local result = data:dot(data2)

ARVec3::cross(ARVec3& data)

ARVec3 cross(ARVec3& data)

叉乘

Parameters

  • data |ARVec3

Returns

  • ARVec3 : 一个新的ARVec3,叉乘的结果
sample:
local data = ae.ARVec3:new_local(1,2,3)
local data2 = ae.ARVec3:new_local(1,2,3)
local result = data:cross(data2)

ARVec3::normalize()

ARVec3 normalize()

返回这个向量的单位向量

Parameters

Returns

  • ARVec3 : 返回这个向量的单位向量
sample:
local data = ae.ARVec3:new_local(1,2,3)
local result = data:normalize()

ARVec3::length()

float length()

得到向量的长度

Parameters

Returns

  • float : 返回向量的长度
sample:
local data = ae.ARVec3:new_local(1,2,3)
local result = data:length()

ARVec3::to_euler_angles()

ARVec3 to_euler_angles()

如果这个向量代表一个方向,那么将其转换为欧拉角

Parameters

Returns

  • ARVec3 : 代表这个方向的欧拉角
sample:
local data = ae.ARVec3:new_local(1,2,3)
local eular = data:to_euler_angles()

ARVec3::vector_angle(const ARVec3& tar_vec)

float vector_angle(const ARVec3& tar_vec)

获取该向量与另一个向量之间的夹角

Parameters

  • tar_vec | ARVec3 传入的另一个向量

Returns

  • float : 夹角
sample:
local data = ae.ARVec3:new_local(1,2,3)
local data2 = ae.ARVec3:new_local(3,2,1)
local result = data:vector_angle(data2)

ARVec3::to_string()

string to_string()

获取向量的字符串表示

Parameters

Returns

  • string : 向量的字符串表示
sample:
local data = ae.ARVec3:new_local(1,2,3)
local result = data:to_string()

ARVec3::operator+(const ARVec3& src)

ARVec3 operator+(const ARVec3& src)

重载加号运算符,向量各个分量相加

Parameters

  • src |ARVec3

Returns

  • ARVec3 : 一个新的ARVec3
sample:
local data1 = ae.ARVec3:new_local(1,2,3)
local data2 = ae.ARVec3:new_local(1,2,3)
local result = data1 + data2

ARVec3::operator-(const ARVec3& src)

ARVec3 operator-(const ARVec3& src)

重载减号运算符,向量各个分量相减

Parameters

  • src | ARVec3

Returns

  • ARVec3 : 一个新的ARVec3
sample:
local data1 = ae.ARVec3:new_local(1,2,3)
local data2 = ae.ARVec3:new_local(1,2,3)
local result = data1 - data2

ARVec3::operator*(const ARVec3& src)

ARVec3 operator*(const ARVec3& src)

重载乘号运算符,向量各个分量相乘

Parameters

  • src | ARVec3

Returns

  • ARVec3 : 一个新的ARVec3
sample:
local data1 = ae.ARVec3:new_local(1,2,3)
local data2 = ae.ARVec3:new_local(1,2,3)
local result = data1 * data2

ARVec3::operator*(const float scale)

ARVec3 operator*(const float scale)

重载乘号运算符,与一个数相乘,向量各个分量分别与该数相乘

Parameters

  • scale | float : 表示放大系数

Returns

  • ARVec3 : 一个新的ARVec3
sample:
local data1 = ae.ARVec3:new_local(1,2,3)
local scale = 3.0
local result = data1 * scale

ARVec3::operator/(const ARVec3& src)

ARVec3 operator/(const ARVec3& src)

重载除号运算符,向量各个分量相除

Parameters

  • src | ARVec3

Returns

  • ARVec3 : 一个新的ARVec3
local data1 = ae.ARVec3:new_local(1,2,3)
local data2 = ae.ARVec3:new_local(1,2,3)
local result = data1 / data2

ARVec3::operator==(const ARVec3& src)

bool operator==(const ARVec3& src)

重载等于运算符,所有分量相等则相等

Parameters

  • src | ARVec3

Returns

  • bool : true或者false
sample:
local data1 = ae.ARVec3:new_local(1,2,3)
local data2 = ae.ARVec3:new_local(1,2,3)
if (data1 == data2) then

else

end

ARVec3::operator[](unsigned i)

float operator[](unsigned i)

重载[]操作符,[0]表示获取x的值,[1]表示获取y的值,[2]表示获取z的值 注意:调用2以上会造成数组越界,是非法操作

Parameters

  • i | int : 表示序列数index

Returns

  • float : x或y或z的值
local data = ae.ARVec3:new_local(1,2,3)
local x = data[0]
local y = data[1]
local z = data[2]
上一篇
ARVec2
下一篇
ARVec4