目录
一、概述
二、函数的介绍
2.1 UF_VEC3_add(两向量相加)
2.2 UF_VEC3_affine_comb(未缩放和缩放后的和)
2.3 UF_VEC3_angle_between(使用第三个向量确定连个向量的夹角)
2.4 UF_VEC3_ask_perpendicular (获得一个向量的垂直向量)
2.5 UF_VEC3_convex_comb (获得通过直线的两个端点来确定位置)
2.6 UF_VEC3_copy (复制向量)
2.7 UF_VEC3_cross (计算两个向量的外积,叉乘)
2.8 UF_VEC3_distance (计算两个点间的距离)
2.8 UF_VEC3_distance_to_plane (计算一个点到一个平面的法向距离)
2.9 UF_VEC3_dot (计算两个向量的点乘)
2.10 UF_VEC3_is_equal (确定两个向量是否在指定的公差范围内相等)
2.11 UF_VEC3_is_parallel (确定矢量是否在输入公差范围内平行)
2.12 UF_VEC3_is_perpendicular (确定两个矢量是否垂直于输入公差)
2.13 UF_VEC3_is_zero (判断在给定的公差内是否为0向量)
2.14 UF_VEC3_linear_comb (两个向量等比缩放求和)
2.15 UF_VEC3_mag (计算向量的大小)
2.16 UF_VEC3_midpt (计算线段中点的坐标)
2.17 UF_VEC3_negate(计算一个向量的负数)
2.18 UF_VEC3_scale (缩放一个向量的坐标)
2.19 UF_VEC3_sub (两个向量相减,求差)
2.20 UF_VEC3_triple (计算三个向量的三重标量积)
2.21 UF_VEC3_unitize (对一个向量进行单位化)
2.22 UF_VEC3_unitize (三维转二维,去除Z坐标)
2.23 UF_VEC3_vec4 (三维转四维,添加权重为1的齐次矢量坐标)
2.24 UF_VEC3_vec4_homogen (三维转四维,添加权重为1的齐次矢量坐标)
三、总结
一、概述
在NX二次开发中向量运算用处很大,常常与矩阵相结合进行使用,例如坐标转化等常常会用到,现在学习记录一下常用到的向量运算函数。主要记录向量的复制、加法、相乘、仿射等。向量运算函数的帮助文档在uf_vec.h头文件中。(主要介绍三维,个人感觉会三维向量运算就很容易推广到二维)。
二、函数的介绍
2.1 UF_VEC3_add(两向量相加)
(1)概述
两个三维向量相加求和。
(2)用法说明
const double vec1[3] Input(输入) 第一个三维向量
const double vec2[3] Input(输入) 第二个三维向量
double (实数型) vec_sum[3] Output(输出) 求和vec_sum = vec1 + vec2
2.2 UF_VEC3_affine_comb(未缩放和缩放后的和)
(1)概述
执行向量仿射组合,该组合包括将未缩放向量添加到缩放向量。第一个参数是输入一个向量未缩放的向量vec[3]。第二个参数输入缩放比例,第三个数输入按照缩放比例缩放后的缩放向量。结果向量是输出一个未缩放和缩放后的向量之和,存到vec_comb[3]。
(2)用法说明
const double vec[3] Input(输入) 未缩放的向量
double (实数型) scale Input(输入) 缩放比例(用于vec_to_scale)
const double vec_to_scale[3] Input(输入) 第二个缩放后的三维向量。
double (实数型) vec_comb [3] Output(输出) 未缩放向量和缩放向量的和。where vec_comb = vec + (scale vec_to_scale)
2.3 UF_VEC3_angle_between(使用第三个向量确定连个向量的夹角)
(1)概述
使用第三个矢量计算两个矢量之间的夹角以确定方向。第三个向量是垂直的向量vec_from和vec_to向量。例如,如果两个向量在x-y平面上,那么第三个向量平行于z轴。
(2)用法说明
const double vec_from[3] Input(输入) Vector to calculate angle from
const double vec_to[3] Input(输入) Vector to calculate angle to
const double vec_ccw[3] Input(输入) Vector to define counter-clockwise orientation(逆时针)
double * (实数型指针) angle Output(输出) Angle between vec_from and vec_to using vec_ccw to determine positive orientation. The angle is in radians and 0.0 <= (angle) < 2 PI.
2.4 UF_VEC3_ask_perpendicular (获得一个向量的垂直向量)
(1)概述
返回一个垂直于输入向量的3D向量。
(2)用法说明
const double vec1[3] Input(输入) 3D 向量
double (实数型) vec_perp[3] Output(输出) 垂直于3D 向量的一个向量
2.5 UF_VEC3_convex_comb (获得通过直线的两个端点来确定位置)
(1)概述
计算线段的两个端点之间的点的位置。线段上的点定义为:Pnt_on_seg =(参数pnt1) +((1.0 -参数)pnt2)。
(2)用法说明
double (实数型) parameter Input(输入) (计算点在直线上的位置设直线的距离长度为1,若parameter=0.5则表示该长度的一半)Parameter of point to calculate
const double pnt1[3] Input(输入) (线段的第一个端点坐标)First end point of line segment
const double pnt2[3] Input(输入) (线段的第二个端点坐标)Second end point of line segment
double (实数型) pnt_on_seg[3] Output(输出) (点在线上位置的坐标)Point on line segment
2.6 UF_VEC3_copy (复制向量)
(1)概述
将矢量坐标从原矢量复制到目标矢量(vec_dst = vec_src)。
(2)用法说明
const double vec_src[3] Input(输入) 原向量
double (实数型) vec_dst[3] Output(输出) 目标向量
2.7 UF_VEC3_cross (计算两个向量的外积,叉乘)
(1)概述
计算两个向量的外积,叉乘。
(2)用法说明
const double vec1[3] Input(输入) Vector 1
const double vec2[3] Input(输入) Vector 2
double (实数型) cross_product[3] Output(输出) The cross product of vec1 and vec2
cross_product = vec1 vec2
2.8 UF_VEC3_distance (计算两个点间的距离)
(1)概述
计算两点之间的距离。
(2)用法说明
const double pnt1[3] Input(输入) Point 1
const double pnt2[3] Input(输入) Point 2
double * (实数型指针) distance Output(输出) The distance between pnt1 and pnt2
(distance = ||pnt1 - pnt2||)
2.9 UF_VEC3_distance_to_plane (计算一个点到一个平面的法向距离)
(1)概述
计算一个点到一个平面的法向距离。
(2)返回
0 = Success (distance can be calculated) 返回0成功;
1 = The plane normal is zero 返回1,平面法线是0。
平面法线为0表示该平面是与平面法向量垂直的,也就是说,该平面是水平的,没有倾斜。
(3)用法说明
const double pnt1[3] Input(输入) 计算距离的点
const double pnt_on_plane[3] Input(输入) 位于平面上的点
const double plane_normal[3] Input(输入) 平面法向
double (实数型) tolerance Input(输入) 用于检查的公差值
double * (实数型指针) distance Output(输出) 从点到平面的法向距离
2.10 UF_VEC3_dot (计算两个向量的点乘)
(1)概述
计算vec1和vec2的点积,计算的到值。
(2)用法说明
const double vec1 [ 3 ] Input(输入) Vector 1
const double vec2 [ 3 ] Input(输入) Vector 2
double * (实数型指针) dot_product Output(输出) 点乘 dot_product = vec1 (dot) vec2
2.11 UF_VEC3_is_equal (确定两个向量是否在指定的公差范围内相等)
(1)概述
确定两个向量是否在指定的公差范围内相等。
(2)用法说明
const double vec1[3] Input(输入) Vector 1
const double vec2[3] Input(输入) Vector 2
double (实数型) tolerance Input(输入) Tolerance value to use for checking
int * (整数型指针) is_equal Output(输出) is_equal等于0,不相等;等于1相等。0 = Vectors are not equal;1 = Vectors are equal
2.12 UF_VEC3_is_parallel (确定矢量是否在输入公差范围内平行)
(1)概述
确定矢量是否在输入公差范围内平行。
(2)用法说明
const double vec1[3] Input(输入) 3D vector
const double vec2[3] Input(输入) 3D vector
double (实数型) tolerance Input(输入) tolerance
int * (整数型指针) is_parallel Output(输出) = 0 两个向量不平行;= 1 两个向量平行
2.13 UF_VEC3_is_perpendicular (确定两个矢量是否垂直于输入公差)
(1)概述
确定连个矢量是否垂直于输入公差。
(2)用法说明
const double vec1[3] Input(输入) 3D vector
const double vec2[3] Input(输入) 3D vector
double (实数型) tolerance Input(输入) tolerance
int * (整数型指针) is_perp Output(输出) = 0 两个向量不垂直;= 1 两个向量垂直
2.14 UF_VEC3_is_zero (判断在给定的公差内是否为0向量)
(1)概述
确定矢量是否在指定公差范围内为零向量。
(2)用法说明
const double vec[3] Input(输入) 测试向量
double (实数型) tolerance Input(输入) 公差
int * (整数型指针) is_zero Output(输出) 0 不是0向量;1 是0向量
2.15 UF_VEC3_linear_comb (两个向量等比缩放求和)
(1)概述
计算具有指定比例值的两个向量的向量线性组合。
(2)用法说明
double (实数型) scale1 Input(输入) 第一个向量的缩放比例
const double vec1[3] Input(输入) 第一个向量
double (实数型) scale2 Input(输入) 第二个向量缩放比例
const double vec2[3] Input(输入) 第二个向量
double (实数型) vec_comb[3] Output(输出) 向量求和 combination vec_comb = (scale vec1) + (scale2 vec2)
2.16 UF_VEC3_mag (计算向量的大小)
(1)概述
计算向量的大小。
(2)用法说明
const double vec[3] Input(输入) 向量
double * (实数型指针) magnitude Output(输出) 计算向量的大小 magnitude = ||vec||
2.17 UF_VEC3_midpt (计算线段中点的坐标)
(1)概述
计算线段中点的坐标。
(2)用法说明
const double pnt1[3] Input(输入) 第一个点
const double pnt2[3] Input(输入) 第二个点
double (实数型) mid_pnt[3] Output(输出) 中点向量mid_pnt = (0.5 pnt1) + (0.5 pnt2)
2.18 UF_VEC3_negate(计算一个向量的负数)
(1)概述
计算一个向量的负数。
(2)用法说明
const double vec [3] Input(输入) 原向量
double (实数型) negated_vec[3] Output(输出) 负向量negated_vec = (-1.0) vec
2.19 UF_VEC3_scale (缩放一个向量的坐标)
(1)概述
缩放一个向量的坐标。
(2)用法说明
double (实数型) scale Input(输入) 缩放比例
const double vec[3] Input(输入) 要缩放的向量
double (实数型) scaled_vec[3] Output(输出) 缩放后的向量scaled_vec = (scale x vec)
2.20 UF_VEC3_sub (两个向量相减,求差)
(1)概述
用一个向量减去另一个向量。
(2)用法说明
const double vec1[3] Input(输入) Vector to subtract from
const double vec2[3] Input(输入) Vector to subtract
double (实数型) vec_diff[3] Output(输出) Vector difference vec_diff = vec1 - vec2
2.21 UF_VEC3_triple (计算三个向量的三重标量积)
(1)概述
计算三个向量的三重标量积(三个向量相称的结果)。
参考:三个坐标向量相乘怎么算?三重积是什么?坐标向量相乘怎么算?_看点时报
(2)用法说明
const double vec1 [ 3 ] Input(输入) Vector #1
const double vec2 [ 3 ] Input(输入) Vector #2
const double vec3 [ 3 ] Input(输入) Vector #3
double * (实数型指针) triple_product Output(输出) The triple scalar product triple_product = vec1 (dot) (vec2 x vec3)
2.22 UF_VEC3_unitize (对一个向量进行单位化)
(1)概述
对一个向量进行单位化。
(2)用法说明
const double vec [3] Input(输入) 要单位化的向量
double (实数型) tolerance Input(输入) 公差
double * (实数型指针) magnitude Output(输出) 向量的大小 Vector magnitude = ||vec||
double (实数型) unit_vec [3] Output(输出) 单位向量 Unitized vector = vec/||vec||
2.23 UF_VEC3_unitize (三维转二维,去除Z坐标)
(1)概述
将3D矢量转换为2D矢量。剥离3d向量的z坐标。
(2)用法说明
const double vec_3D[3] Input(输入) 3D vector to convert to 2D
double (实数型) vec_2D[2] Output(输出) 2D vector
2.24 UF_VEC3_vec4 (三维转四维,添加权重为1的齐次矢量坐标)
(1)概述
将3D矢量转换为权重为1.0的4D齐次矢量。
(2)用法说明
const double vec_3D[3] Input(输入) 3D vector to convert to 2D
double (实数型) vec_4D[4] Output(输出) 4D vector
2.25 UF_VEC3_vec4_homogen (三维转四维,添加权重为1的齐次矢量坐标)
(1)概述
将给定权值的3D向量转换为4D齐次向量。3D坐标乘以指定的权重。如果三维坐标为(x,y,z),权重= h,则四维坐标为(hx,hy,hz,h)。
(2)用法说明
const double vec_3D[3] Input(输入) 3D vector to convert
double (实数型) weight Input(输入) Weight to be used
double (实数型) vec_4D[4] Output(输出) 4D homogeneous vector
三、总结
以上是3x3向量运算,同理有关2x2、4x4向量的运算同理这里就不进行说明了,具体查看开发文档就行可,我们要知道的是是否有这个函数以及会用即可。