NX二次开发-向量乘矩阵的几何意义
函数:UF_MTX3_vec_multiply_t() 或者UF_MTX3_vec_multiply()。推荐使用UF_MTX3_vec_multiply_t()
函数说明:将向量按照矩阵进行变换:绝对坐标系下有向量vec,矩阵tagMatrix直接用WCS坐标系的矩阵。vec与tagMatrix乘积得到vec_product。为了更直观我们使用UF_CURVE_create_line创建一条直线来看一下。

结果:红色矢量为vec、绿色矢量为vec_product。红色向量与ABS坐标的相对位置 ,和绿色向量与tagMatrix矩阵坐标系(WCS)的位置是一致的。结论:使用UF_MTX3_vec_multiply_t()将矢量乘一个矩阵的几何意义就是将矢量与之前的坐标相对位置,转换为此矩阵坐标系下对应的位置。
1 #include "Text.h"
2 extern DllExport void ufsta(char *param, int *returnCode, int rlen)
3 {
4 UF_initialize();
5
6 //获取WCS标识
7 tag_t tagWCS = NULL_TAG;
8 UF_CSYS_ask_wcs(&tagWCS);
9
10 //获取WCS的原点坐标和矩阵标
11 tag_t tagCsys; //原点坐标
12 tag_t tagMatrix; //矩阵标识
13 double couCsysOrigin[3];
14 UF_CSYS_ask_csys_info(tagWCS, &tagMatrix, couCsysOrigin);
15
16 //获取指定矩阵标识的矩阵值
17 double douMatrixValues[9];
18 UF_CSYS_ask_matrix_values(tagMatrix, douMatrixValues);
19
20 double vec[3] = { 1,1,1 };
21 double startPoint[3] = { 0,0,0 };
22 UF_CURVE_line_t tLin;
23 tLin.start_point[0] = startPoint[0];
24 tLin.start_point[1] = startPoint[1];
25 tLin.start_point[2] = startPoint[2];
26 tLin.end_point[0] = vec[0];
27 tLin.end_point[1] = vec[1];
28 tLin.end_point[2] = vec[2];
29
30 tag_t tagLine;
31 UF_CURVE_create_line(&tLin, &tagLine);
32
33 double vec_product[3];
34 UF_MTX3_vec_multiply_t(vec, douMatrixValues, vec_product);//向量乘矩阵
35
36 tLin.end_point[0] = vec_product[0];
37 tLin.end_point[1] = vec_product[1];
38 tLin.end_point[2] = vec_product[2];
39 UF_CURVE_create_line(&tLin, &tagLine);
40
41 UF_terminate();
42 }
43
44 extern int ufusr_ask_unload(void)
45 {
46 return (UF_UNLOAD_IMMEDIATELY);
47 }
NX二次开发-向量乘矩阵的几何意义的更多相关文章
- NX二次开发-通过3x3矩阵获取XYZ轴矢量
函数:UF_CSYS_ask_wcs() 函数说明:通过3x3矩阵获取XYZ轴矢量 用法: 1 #include <uf.h> 2 #include <uf_mtx.h> 3 ...
- NX二次开发-UFUN圆弧矩阵标记、起始角和结束角(弧度测量)、圆弧中心坐标和圆弧半径UF_CURVE_ask_arc_data(边可以用)
1 NX11+VS2013 2 3 #include <uf.h> 4 #include <uf_ui.h> 5 #include <uf_modl.h> 6 #i ...
- NX二次开发-将3X3矩阵修正为正交且长度为单位长度的矩阵
函数:UF_MTX3_ortho_normalize() 函数说明:将矩阵修正为正交且xyz长度为单位长度的矩阵.下图中输入的矩阵为三条线段的端点,经过修正后,生成一个坐标系. 1 #include ...
- NX二次开发-获取WCS坐标系的原点坐标和矩阵标识
函数:UF_CSYS_ask_csys_info() 函数说明:获取工作坐标系对象的标识符. 用法: #include <uf.h> #include <uf_csys.h> ...
- 【NX二次开发】获取指定矩阵标识的矩阵值
函数:UF_CSYS_ask_matrix_values () 函数说明:获取指定矩阵标识的矩阵值. 用法: #include <uf.h> #include <uf_csys.h& ...
- NX二次开发-获取WCS标识
函数:UF_CSYS_ask_wcs() 函数说明:获取工作坐标系对象的标识. 用法: 1 #include <uf.h> 2 #include <uf_csys.h> 3 e ...
- 【NX二次开发】移动WCS坐标系
说明:移动WCS坐标系 用法: #include <uf.h> #include <uf_csys.h> extern DllExport void ufusr(char *p ...
- NX二次开发-创建(临时)坐标系
函数:UF_CSYS_create_csys() . UF_CSYS_create_temp_csys() 函数说明:创建坐标系 .创建临时坐标系 用法: #include <uf.h> ...
- 【NX二次开发】根据视图名称旋转视图,在布局中替换视图uc6464
uc6464("布局名","旧视图名","新视图名");输入布局名.旧视图名.新视图名.如果布局名为空则更新当前布局.如果旧视图名为空,则工 ...
随机推荐
- spring和mybatis整合时Access denied for user '***'@'localhost' (using password: YES)错误的解决方案
参考文章:博客园文章 参考解决办法: 将数据库配置文件格式 key=value 改为 jdbc.key=value 以下为问题分析 使用Spring + Mybatis + Mysql整合时,测试报错 ...
- 公网IP和私有IP的区别和用途
在Internet网络上有上千百万台主机,为了能够将这些主机区分开来,于是就给每台主机都分别配了一个专门的地址,称为IP地址. 通过IP地址就可以访问到每一台主机.IP地址由4部分数字组成,ghost ...
- app.json文件配置
pages 页面路径的存放列表 通过手写页面路径可以在对应目录下自动创建对应文件 "pages": [ "pages/demo3/demo3", "p ...
- BUA软件工程个人博客作业
写在前面 项目 内容 所属课程 2020春季计算机学院软件工程(罗杰 任健) (北航) 作业要求 个人博客作业 课程目标 培养软件开发能力 本作业对实现目标的具体作用 阅读教材,了解软件工程,并比较各 ...
- 【BUAA 软工个人项目作业】玩转平面几何
BUAA 软件工程个人项目作业 项目 内容 课程:2020春季软件工程课程博客作业(罗杰,任健) 博客园班级链接 作业:BUAA软件工程个人项目作业 作业要求 课程目标 学习大规模软件开发的技巧与方法 ...
- oo——第三单元总结
前言 第三单元是我们学习oo以来第一次接触JML.这一单元的三次作业和以前一样,采用了难度递进的方式,而且前一次作业的设计思路在下一次作业都多多少少有些体现(或者说是在其基础上做出的改进).而且本单元 ...
- 在C++中调用Python
技术背景 虽然现在Python编程语言十分的火爆,但是实际上非要用一门语言去完成所有的任务,并不是说不可以,而是不合适.在一些特定的.对于性能要求比较高的场景,还是需要用到传统的C++来进行编程的.但 ...
- MSSQL·CLI执行T-SQL
阅文时长 | 0.44分钟 字数统计 | 480.8字符 主要内容 | 1.引言&背景 2.详细步骤&排坑指南 3.中途执行异常处理方式 4.声明与参考资料 『MSSQL·CLI执行T ...
- java基础——简易计算器的实现
计算器: import java.util.Scanner;public class CalculateDemo { public static void main(String[] args ...
- zimbra安装ssl证书
zimbra在后台安装证书签发机构签发证书出现时候出现错误:{RemoteManager: mail.domain.com->zimbra@mail.domain.com:22} com.zim ...