NX二次开发UF_VEC(向量运算)常用函数

目录

一、概述

二、函数的介绍

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向量的运算同理这里就不进行说明了,具体查看开发文档就行可,我们要知道的是是否有这个函数以及会用即可。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/564151.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【状态机dp 动态规划】100290. 使矩阵满足条件的最少操作次数

本文涉及知识点 动态规划汇总 状态机dp LeetCode100290. 使矩阵满足条件的最少操作次数 给你一个大小为 m x n 的二维矩形 grid 。每次 操作 中&#xff0c;你可以将 任一 格子的值修改为 任意 非负整数。完成所有操作后&#xff0c;你需要确保每个格子 grid[i][j] 的值满足…

人人可拥有刘强东同款数字人分身!

每个人都可以拥有东哥同款数字人分身直播间进行直播带货&#xff0c;怎样克隆自己的数字人形象&#xff1f; 青否数字人克隆源码的克隆效果媲美真人&#xff1a; 仅需将真人录制的2-6分钟视频上传至克隆端后台&#xff0c;系统便会自动启动自动克隆。3-5小时后&#xff0c;即可…

LR系统关联错误

报错提示&#xff1a; 開日&#xff1a;Vuser艳湾辫触?mdrv.dat函欢?CCI聞/珞涓ECCIDebug剧涓?off&#xff1f;璀&#xff1a;十cciext.dll钙筑婧&#xff1f;ExtPerProcessInitialize踩整伴叔璇&#xff1f;-19797&#xff1a;缩跨v涓&#xff1f;璋幂椹下动清鳄"叶璐…

Oracle交换分区测试

1、用exchange分区表减少初始化过程中对业务中断的影响 2、创建分区表 create table t_p (id number,name varchar2(30),addr varchar2(50)) partition by range(id) (partition p1 values less than(10), partition p2 values less than(20), partition p3 values less …

免费听音乐,下载音乐mp3,mp4,歌词的网站分享(2024-04-22)

亲测&#xff01;&#xff01;&#xff01; 1、音乐客 免费听和免费下载 经典老歌 - 音乐客音乐客,yinyueke.net,免费音乐,免费在线音乐播放器,免费下载音乐,音乐&#xff0c;播放器&#xff0c;下载&#xff0c;播放&#xff0c;DJ&#xff0c;免费,mp3,高音质&#xff0c;…

A4云打印仅需5分/页?云打印多少钱?云打印怎么收费?

随着互联网技术的发展&#xff0c;越来越多的同学在打印资料的时候都开始转向线上&#xff0c;转向云打印服务了。云打印服务不仅可以给我们节省很多时间&#xff0c;价格方面较打印店也更有优势。那么云打印多少钱&#xff1f;云打印怎么收费&#xff1f;今天小易就带大家来了…

git 某个分支代码回滚到某次push的步骤

切换到需要操作的分支 git checkout 分支名称 命令&#xff1a; git log 获取代码的提交记录&#xff0c;按小写q退出当前命令对话。 获取某次提交或者合并的hash值&#xff1a;如&#xff1a;2cf0f19ab21aa62f5ebffa5f08caed3f63842346 使用reset命令对当前分支进行回退到某…

sklearn【AUC-ROC】原理,以及绘制ROC曲线!

一、AUC-ROC 介绍 在分类任务中&#xff0c;特别是当数据集中的类别分布不平衡时&#xff0c;评估模型的性能变得尤为重要。AUC-ROC&#xff08;Area Under the Receiver Operating Characteristic Curve&#xff0c;受试者工作特征曲线下的面积&#xff09;是一种有效的评估指…

Rancher 应用商店离线环境使用

前言 Rancher (v2.5 ) 应用商店可以方便的安装 Helm3 构建的应用&#xff0c;并且支持私有 helm 应用仓库&#xff0c;方便了内网离线环境下的使用。本文以内网离线环境为前提、以 MySQL 5.7.43 版本为应用举例&#xff0c;从零开始手把手教你如何制作并应用。 1、环境准备 1.…

自然资源领域-点状用地和乡村振兴产业用地办理指引

自然资源领域-点状用地和乡村振兴产业用地办理指引&#xff08;广州借鉴&#xff09; “点状供地”是相对于传统的“片状供地”而言的一种新型供地方式&#xff0c;是办理项目建设用地报批及供地手续的关键环节&#xff0c;也是项目开发建设的重要依据。 通俗说&#xff1a;“…

半导体制造工艺之分类浅述

半导体制造工艺分为逻辑制程(也叫逻辑工艺)和特殊制程(也叫特色工艺)。 1、逻辑工艺概述 随着集成电路行业沿着摩尔定律不断发展,晶体管数量增加的同时,工艺节点不断缩小。先进逻辑工艺是相对的概念,2005年全球先进逻辑工艺的工艺节点在65/55纳米,现在则变为3纳米。中…

AOP容器面向切面编程(动态代理)

aop面向切面编程 动态代理方式进行 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-aop</artifactId></dependency> 面向特定的方法进行编程 统计方法的执行耗时&#xff0c;要执行的是哪个方…

Vue前端框架如何调用天聚数行API?

Vue是一个业内优秀的前端解决方案&#xff0c;采用了最新流行的MVVM框架模式&#xff0c;深受web前端开发者的喜爱&#xff0c;在相关开发者社区也一直都是热门交流话题。那么&#xff0c;如何通过Vue调用天行数据的API接口呢&#xff0c;下面就具体给大家示例。 vue采用的是数…

【Interconnection Networks 互连网络】Flattened Butterfly 扁平蝶形拓扑

Flattened Butterfly 扁平蝶形拓扑 1. 传统蝶形网络 Butterfly Topology2. 扁平蝶形拓扑 Flattened Butterfly3.On-Chip Flattened Butterfly 扁平蝶形拓扑应用于片上网络 Flattened Butterfly 扁平蝶形拓扑 扁平蝶形拓扑是一种经济高效的拓扑&#xff0c;适用于高基数路由器…

护眼落地灯哪个牌子好?落地灯十大知名品牌

一款优异的落地灯不只有照明的作用&#xff0c;更有装修作用。只不过&#xff0c;市面上的落地灯产品很多&#xff0c;质量良莠不齐&#xff0c;很多人不知道怎么挑选是好。小编的主张是从品牌下手&#xff0c;挑选口碑上佳的品牌落地灯产品。若问护眼落地灯哪个牌子好&#xf…

【学习】人工智能在软件测试中的作用有哪些

随着科技的飞速发展&#xff0c;人工智能&#xff08;AI&#xff09;已经渗透到各个领域&#xff0c;并发挥着不可或缺的作用。其中&#xff0c;在软件测试方面&#xff0c;AI的应用也愈发普遍。本文将探讨人工智能在软件测试领域的关键作用以及其带来的积极影响。 一、提升测…

0.5W 3KVDC 隔离单、双输出 DC/DC 电源模块——TPV-W5 3.3V, 5V,12V 15V系列

TPV-W5系列提供正负双输出和单输出&#xff0c;工业级环境温度&#xff0c;用于PCB安装的国际标准结构。此系列产品小巧&#xff0c;效率高&#xff0c;低输出纹波及能承受3000V以上的耐压&#xff0c;用于需要正负电压或单输出和高隔离电压的场合。封装有SIP和DIP可选。

三、SpringBoot整合MyBatis

本章节主要描述MyBatis的整合&#xff0c;以及使用mybatis-generator-maven-plugin生成代码骨架&#xff0c;源码&#xff1a; jun/learn-springboot - Gitee.com 一、首先建数据库 本示例用的是MySQL8.0.23&#xff0c;建表t_goods、t_orders&#xff0c;略... 二、goods模块…

李廉洋:4.22现货黄金,WTI原油晚间行情走势分析及策略。

今年&#xff0c;全球金融市场正遭遇一股他们未曾预料到的力量&#xff1a;强势美元卷土重来&#xff0c;而且似乎将持续下去。根据美国商品期货交易委员会(CFTC)的数据&#xff0c;一项衡量交易员情绪的流行指标在今年年初指向看跌&#xff0c;但现在已转变为2019年以来最看涨…

模板建站的优缺点

模板建站是一种快速建立网站的方式&#xff0c;它可以通过使用预先设计好的页面模板&#xff0c;快速搭建出一个具有基本功能的网站&#xff0c;而无需手动编写网站代码。 模板建站具有以下优缺点。 优点&#xff1a; 1.快速建站&#xff1a;采用模板建站技术&#xff0c;可以…