ARMat22
此类封装数学库,适用于2.6版本以上的SDK。
ARMat22表示一个 二维矩阵,包含两个ARVec2型成员x,y
Fileds
| 类型 | 成员变量 |
|---|---|
| ARVec2 | x |
| ARVec2 | y |
ARMat22::x
获取二维矩阵中的x向量,这个向量是一个二维向量
Parameters
- 无
Returns
- ARVec2 | 向量 : x
sample:
local x_vec = ae.ARVec2:new_local(2,1)
local y_vec = ae.ARVec2:new_local(4,1)
local data = ae.ARMat22:new_local(x_vec, y_vec)
local x = data.xARMat22::y
获取二维矩阵中的y向量,这个向量是一个二维向量
Parameters
- 无
Returns
- ARVec2 | 向量 : y
DEMO:
sample:
local x_vec = ae.ARVec2:new_local(2,1)
local y_vec = ae.ARVec2:new_local(4,1)
local data = ae.ARMat22:new(x_vec, y_vec)
local y = data.yPublic Methods
| 返回类型 | 函数名 | 备注 |
|---|---|---|
| ARMat22 | ARMat22() | 构造函数 |
| ARMat22 | ARMat22(ARVec2& x, ARVec2& y) | 构造函数 |
| ARMat22 | inverse() | 返回逆矩阵 |
| string | to_string() | 转换为字符串 |
| ARMat22 | operator+(const ARMat22& src) | + 号操作符 |
| ARMat22 | operator-(const ARMat22& src) | - 号操作符 |
| ARMat22 | operator*(const ARMat22& src) | * 号操作符(矩阵相乘) |
| ARVec2 | operator*(const ARVec2& src) | * 号操作符(矩阵乘以向量) |
| ARMat22 | operator/(const ARMat22& src) | / 号操作符 |
| bool | operator==(const ARMat22& src) | ==号操作符 |
| ARVec2& | operator[](unsigned i) | []号操作符 |
ARMat22()::ARMat22()
ARMat22 ARMat22()
构造函数,不传入任何参数,向量x与向量y的值默认为0
Parameters
- 无
Returns
- ARMat22 : 一个新的ARMat22
返回值为ARMat22
DEMO:
local data = ae.ARMat22:new_local()ARMat22::ARMat22(ARVec2& x, ARVec2& y)
ARMat22 ARMat22(ARVec2& x, ARVec2& y)`
构造函数,传入两个ARVec2的向量
Parameters
- x | ARVec2
- y | ARVec2
Returns
- ARMat22 | 一个新的ARMat22
sample:
local x_vec = ae.ARVec2:new_local(2,1)
local y_vec = ae.ARVec2:new_local(4,1)
local data = ae.ARMat22:new_local(x_vec, y_vec)ARMat22::inverse()
ARMat22 inverse()
返回该矩阵的逆矩阵,调用时请保证该矩阵可逆
Parameters
- 无
Returns
- ARMat22 : 返回这个矩阵的逆矩阵
sample:
local x_vec = ae.ARVec2:new_local(-0.5,0.5)
local y_vec = ae.ARVec2:new_local(2,-1)
local mat22 = ae.ARMat22:new_local(x_vec, y_vec)
local inverse_mat22 = mat22:inverse()ARMat22::to_string()
string to_string()
返回此矩阵的字符串表示
Parameters
- 无
Returns
- string : 返回此矩阵的字符串表示
sample:
local x_vec = ae.ARVec2:new_local(-0.5,0.5)
local y_vec = ae.ARVec2:new_local(2,-1)
local mat22 = ae.ARMat22:new_local(x_vec, y_vec)
local string_mat = mat22:to_string()ARMat22::operator+(const ARMat22& src)
ARMat22 operator+(const ARMat22& src) 重载加号运算符,两个矩阵相加,矩阵中的每一个值都对应相减
Parameters
- src | ARMat22
Returns
- ARMat22 : 一个新的ARMat22
sample:
-- 创建ARMat22 mat_a,mat_b
local mat_result = mat_a + mat_bARMat22::operator-(const ARMat22& src)
ARMat22 operator-(const ARMat22& src) 重载减号运算符,两个矩阵相减,矩阵中的每一个值都对应相减
Parameters
- src | ARMat22
Returns
- ARMat22 : 一个新的ARMat22
sample:
-- 创建ARMat22 mat_a,mat_b
local mat_result = mat_a - mat_bARMat22::operator*(const ARMat22& src)
ARMat22 operator*(const ARMat22& src) 重载乘号运算符,两个矩阵相乘,按照矩阵乘法的规则进行乘
Parameters
- src | ARMat22
Returns
- ARMat22 : 一个新的ARMat22
sample:
-- 创建ARMat22 mat_a,mat_b
local mat_result = mat_a * mat_bARMat22::operator*(const ARVec2& src)
ARVec2 operator*(const ARVec2& src) 重载乘号运算符,矩阵与向量相乘,按照矩阵向量乘法的规则进行乘
Parameters
- src | ARVec2
Returns
- ARVec2 : 返回一个二维向量
sample:
--创建ARMat22 mat
--创建ARVec2 vec
local result = mat * vecARMat22::operator/(const ARMat22& src)
ARMat22 operator/(const ARMat22& src) 重载除号运算符,两个矩阵相除,每个分量分别相除
Parameters
- src | ARMat22
Returns
- ARMat22 : 一个新的ARMat22,返回一个ARMat22
sample:
-- 创建ARMat22 mat_a,mat_b
local mat_result = mat_a / mat_bARMat22::operator==(const ARMat22& src)
bool operator==(const ARMat22& src) 重载等于号运算符,判断两个矩阵的每个分量是否相等
Parameters
- src | ARMat22
Returns
- bool : true或者false
sample:
-- 创建ARMat22 mat_a,mat_b
if (mat_a == mat_b) then
else
endARMat22::operator[](unsigned i)
ARVec2 operator[](unsigned i)
重载[]运算符,获取相应分量,[0]表示获取x二维向量,[1]表示获取y二维向量 注意:调用1以上会造成数组越界,是非法操作
Parameters
- i | int : 表示序列数index
Returns
- ARVec2 : 返回x向量、 y向量中的一个
sample:
-- 创建ARMat22 mat_a
local x = mat_a[0]
local y = mat_a[1]