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]