首页 > 其他 > 详细

NX二次开发-将3X3矩阵修正为正交且长度为单位长度的矩阵

时间:2020-03-23 12:12:51      阅读:115      评论:0      收藏:0      [点我收藏+]

函数:UF_MTX3_ortho_normalize()

函数说明:将矩阵修正为正交且xyz长度为单位长度的矩阵。下图中输入的矩阵为三条线段的端点,经过修正后,生成一个坐标系。

技术分享图片

 

 

 1 #include "Text.h"
 2 extern DllExport void ufsta(char *param, int *returnCode, int rlen)
 3 {
 4     UF_initialize();
 5 
 6     double douMatrixValues[9] = {1, 1, 1, 1, 0 ,0, 0, 0, 1};
 7     
 8     tag_t tagLine;
 9     UF_CURVE_line_t tLin;
10     tLin.start_point[0] = 0;
11     tLin.start_point[1] = 0;
12     tLin.start_point[2] = 0;
13     tLin.end_point[0] = douMatrixValues[0];
14     tLin.end_point[1] = douMatrixValues[1];
15     tLin.end_point[2] = douMatrixValues[2];
16     UF_CURVE_create_line(&tLin, &tagLine);
17     tLin.end_point[0] = douMatrixValues[3];
18     tLin.end_point[1] = douMatrixValues[4];
19     tLin.end_point[2] = douMatrixValues[5];
20     UF_CURVE_create_line(&tLin, &tagLine);
21     tLin.end_point[0] = douMatrixValues[6];
22     tLin.end_point[1] = douMatrixValues[7];
23     tLin.end_point[2] = douMatrixValues[8];
24     UF_CURVE_create_line(&tLin, &tagLine);
25 
26     UF_MTX3_ortho_normalize(douMatrixValues);
27 
28     //通过数组创建矩阵
29     tag_t tagMatrixId = NULL_TAG;
30     UF_CSYS_create_matrix(douMatrixValues, &tagMatrixId);
31         
32     double douCsysOrigin[3] = { 0,0,0 };
33     //创建坐标系
34     tag_t tagCSYS = NULL_TAG;
35     UF_CSYS_create_csys(douCsysOrigin, tagMatrixId, &tagCSYS);
36     UF_terminate();
37 }
38 
39 extern int ufusr_ask_unload(void)
40 {
41     return (UF_UNLOAD_IMMEDIATELY);
42 }

 

NX二次开发-将3X3矩阵修正为正交且长度为单位长度的矩阵

原文:https://www.cnblogs.com/KMould/p/12550904.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!