目录
一、概述
二、函数的介绍
2.1 UF_MTX3_copy(复制原来矩阵)
2.2 UF_MTX3_determinant(计算矩阵的行列式)
2.3 UF_MTX3_identity(单位矩阵)
2.4 UF_MTX3_initialize(可以根据X、Y方向向量获得Z方向向量)
2.5 UF_MTX3_initialize_x(可以根据X方向向量获得Y、Z方向向量)
2.6 UF_MTX3_initialize_z(可以根据Z方向向量获得X、Y方向向量)
2.7 UF_MTX3_mtx4 (3D转4D)
2.8 UF_MTX3_multiply (点乘)
2.9 UF_MTX3_multiply_t (mtx_product = trns(mtx1) X mtx2)
2.10 UF_MTX3_ortho_normalize (正交标准化矩阵)
2.11 UF_MTX3_rotate_about_axis(指定轴旋转一个角度后的旋转矩阵)
2.12 UF_MTX3_transpose (矩阵的转置transpose_mtx = trns(mtx))
2.13 UF_MTX3_vec_multiply(vec_product = vec X mtx)
2.14 UF_MTX3_vec_multiply_t (vec_product = vec X trns(mtx))
2.15 UF_MTX3_x_vec (获得x方向向量)
2.16 UF_MTX3_y_vec (获得y方向向量)
2.15 UF_MTX3_z_vec (获得z方向向量)
三、总结
一、概述
在NX二次开发中矩阵运算用处很大,例如坐标转化等常常会用到,现在学习记录一下常用到的矩阵运算函数。主要记录矩阵的复制、加、减、乘矩阵、行列式、单位矩阵,以及转置矩阵等。矩阵运算函数的帮助文档在uf_mtx.h头文件中。(主要介绍三维,个人感觉会三维矩阵运算就很容易推广到二维)。
二、函数的介绍
2.1 UF_MTX3_copy(复制原来矩阵)
(1)概述
将矩阵元素从原3x3矩阵复制到目标3x3矩阵矩阵。
(2)用法说明
const double mtx_src[9] Input(输入) 原矩阵
double (实数型) mtx_dst[9] Output(输出) 目标矩阵
2.2 UF_MTX3_determinant(计算矩阵的行列式)
(1)概述
计算一个3 × 3矩阵的行列式。
(2)用法说明
const double mtx[9] Input(输入) 要计算行列式的矩阵
double (实数型) mtx_dst[9] Output(输出) 矩阵的行列式
2.3 UF_MTX3_identity(单位矩阵)
1)概述
返回一个单位矩阵。
(2)用法说明
double (实数型) identity_mtx [ 9 ] Output(输出) 输出一个单位矩阵
2.4 UF_MTX3_initialize(可以根据X、Y方向向量获得Z方向向量)
1)概述
返回由一个3x3矩阵,输入由两个3D向量组成的。大概意思通过x方向向量与y方向向量叉乘生成z方向向量,把三个方向向量存到一个3x3矩阵中。
(2)用法说明
const double x_vec[3] Input(输入) X方向的方向向量
const double y_vec[3] Input(输入) Y方向的方向向量
double (实数型) mtx[9] Output(输出) 包含X、Y、Z方向向量的3x3矩阵
2.5 UF_MTX3_initialize_x(可以根据X方向向量获得Y、Z方向向量)
1)概述
给定X方向向量,获得任意的Y和Z方向向量。
(2)用法说明
const double x_vec[3] Input(输入) X方向的方向向量
double (实数型) mtx[9] Output(输出) 包含X、Y、Z方向向量的3x3矩阵
2.6 UF_MTX3_initialize_z(可以根据Z方向向量获得X、Y方向向量)
1)概述
给定Z方向向量,获得任意的X和Y方向向量。
(2)用法说明
const double z_vec[3] Input(输入) Z方向的方向向量
double (实数型) mtx[9] Output(输出) 包含X、Y、Z方向向量的3x3矩阵
2.7 UF_MTX3_mtx4 (3D转4D)
1)概述
将3D矩阵转换为4D矩阵,比例为1.0,平移向量为零,即将三维坐标转化为四位坐标。
(2)用法说明
const double mtx_3D [9] Input(输入) 3D 矩阵
double (实数型) mtx_4D [16] Output(输出) 4D 矩阵
2.8 UF_MTX3_multiply (点乘)
1)概述
从两个输入矩阵返回一个3x3矩阵乘积(点乘)。
(2)用法说明
const double mtx1[9] Input(输入) 矩阵1
const double mtx2[9] Input(输入) 矩阵2
double (实数型) mtx_product[9] Output(输出) 新矩阵 新矩阵=矩阵1x矩阵2
2.9 UF_MTX3_multiply_t (mtx_product = trns(mtx1) X mtx2)
1)概述
对前面的第一个矩阵进行转置,返回一个3x3矩阵乘积执行乘法运算。
(2)用法说明
const double mtx1[9] Input(输入) 矩阵1
const double mtx2[9] Input(输入) 矩阵2
double (实数型) mtx_product[9] Output(输出) 新矩阵 mtx_product = trns(mtx1) X mtx2
2.10 UF_MTX3_ortho_normalize (正交标准化矩阵)
1)概述
返回一个3 × 3矩阵,其方向向量是正交的单位长度(将3 × 3矩阵修正为正交且长度为单位长度的矩阵)。
(2)用法说明
double (实数型) mtx[9] Input / Output 输入一个矩阵,输出一个正交标准化的矩阵
2.11 UF_MTX3_rotate_about_axis(指定轴旋转一个角度后的旋转矩阵)
1)概述
返回一个3x3旋转矩阵,围绕一个轴并通过一个指定的旋转角度。
(2)用法说明
const double rotation_axis [3] Input(输入) 旋转轴的向量
double (实数型) rotation_angle Input(输入) 旋转角度(弧度单位)
double (实数型) mtx[9] Output(输出) 旋转矩阵
2.12 UF_MTX3_transpose (矩阵的转置transpose_mtx = trns(mtx))
1)概述
返回一个3x3矩阵的转置。
(2)用法说明
const double mtx[9] Input(输入) 要转置的矩阵
double (实数型) transpose_mtx[9] Output(输出) 转置后的矩阵transpose_mtx = trns(mtx)
2.13 UF_MTX3_vec_multiply(vec_product = vec X mtx)
1)概述
返回一个向量,它是一个3D向量并且是一个3x3的矩阵。
(2)用法说明
const double vec [3] Input(输入) 要相乘的向量
const double mtx [9] Input(输入) 要相乘的矩阵
double (实数型) vec_product[3] Output(输出) Product (a vector) vec_product = vec X mtx
2.14 UF_MTX3_vec_multiply_t (vec_product = vec X trns(mtx))
1)概述
返回一个向量,它是一个3D向量并且是一个转置的乘积3 x3矩阵。
(2)用法说明
const double vec[3] Input(输入) 要相乘的向量
const double mtx[9] Input(输入) 要转置的矩阵
double (实数型) vec_product[3] Output(输出) Product (a vector) vec_product = vec X trns(mtx)
2.15 UF_MTX3_x_vec (获得x方向向量)
1)概述
返回矩阵的x方向向量。
(2)用法说明
const double mtx[9] Input(输入) 3x3 的矩阵
double (实数型) x_vec[3] Output(输出) X方向的向量
2.16 UF_MTX3_y_vec (获得y方向向量)
1)概述
返回矩阵的y方向向量。
(2)用法说明
const double mtx[9] Input(输入) 3x3 的矩阵
double (实数型) y_vec[3] Output(输出) y方向的向量
2.15 UF_MTX3_z_vec (获得z方向向量)
1)概述
返回矩阵的x方向向量。
(2)用法说明
const double mtx[9] Input(输入) 3x3 的矩阵
double (实数型) y_vec[3] Output(输出) y方向的向量
三、总结
以上是3x3矩阵的运算,同理有关2x2、4x4矩阵的运算同理这里就不进行说明了,具体查看开发文档就行可,我们要知道的是是否有这个函数以及会用即可。