PLM之家PLMHome-国产软件践行者

[二次开发源码] UG NX二次开发源码分享:矩阵操作的基础算法代码

[复制链接]

2014-8-25 15:14:54 3528 0

admin 发表于 2014-8-25 15:14:54 |阅读模式

admin 楼主

2014-8-25 15:14:54

请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!

您需要 登录 才可以下载或查看,没有账号?注册

x

  v7 u& C4 ~" y$ L7 d# u
: `! `% w4 v' R! d0 ?3 p: u9 ~( R( r
#include <math.h>
) ]2 N0 U: i1 Q//矩阵复制4 F" h: h3 O& W; r6 q
void Project_Matrix_Copy(double from_mtx[4][4], double to_mtx[4][4])
2 @& I  f4 c) u5 _9 U{
1 k/ P$ x: h9 j7 h        int i,j;' m* [! M8 I2 V& @' J4 \9 h

( S* d* J# r; I4 O6 ?2 D& S1 B        for(i=0;i<4;i++)7 x2 v7 u6 t* V" e5 i% |" Y
                for(j=0;j<4;j++)
, b5 l0 c! c4 l9 q) I                        to_mtx[i][j]=from_mtx[i][j];
9 y" B0 `- s" n9 G' f0 i7 K! o}% ^% {1 s6 [5 }$ Q. w/ P- P
//矩阵初始化5 g# _: i+ \, T' l" z
void Project_Matrix_Identity(double mtx[4][4])
9 g: N9 ]. ?& \) L% D2 ?{* U5 [% t; {1 S1 o! \
        int i,j;: }7 _/ t3 B2 V# I! o% _7 z
       
* f: n. p+ p* Z3 \2 T        for(i=0;i<4;i++)
1 g+ Q2 Z+ h: {                for(j=0;j<4;j++)( I5 h  L- A  w
                        if(i==j)/ w! o" N  o9 K$ Y& Y4 j
                                mtx[i][j]=1.0;. v# T) O" U. h# Z- Y; f0 R
                        else
0 ~# P) P2 q% Y1 D; e                                mtx[i][j]=0.0;8 t2 J8 w8 w' O' Y. i
}
& n; B. M* s( A' C" r% e7 J9 G//矩阵相乘9 J' b9 {2 F8 W  t8 Q, @
void Project_Matrix_Product(double left_mtx[4][4],double right_mtx[4][4],double get_mtx[4][4])
0 k6 |1 Y) `2 a+ ?{; }: B9 e" {8 V4 V) p; q
: w" M, M% a) u& }
        int i,j,k;
- v0 P4 r: K6 b* M  {        double left[4][4],right[4][4];. g/ z/ n. R8 D: I9 J) C) U

+ A1 d) J* N" f1 ?$ z! j7 R' R0 Y* p        Project_Matrix_Copy(left_mtx,left);+ m6 b* G' V% }1 @" H6 x% X9 R$ C
        Project_Matrix_Copy(right_mtx,right);
" W$ T+ G5 L* H  N; d  @        for(i=0;i<4;i++)4 w- b- \+ b+ b. F1 I  U
                for(j=0;j<4;j++)
: t# b- U" O: n) q) x% x                {' y* w# }8 T& I0 I0 o! H
                        get_mtx[i][j]=0.0;
7 U) c' V4 N. l6 X                        for(k=0;k<4;k++). W4 e4 o, S' R1 L. d
                                get_mtx[i][j]+=left[i][k]*right[k][j];
: g  J, b- c) m0 `& s# D                }
+ ^5 m& p% h# E# K}+ @" }- A/ _  L' ~
//转置矩阵5 m1 s, n, a- E$ S& x
void Project_MatrixGet_Transpose(double mtx[4][4],double transpose_mtx[4][4])
, A3 i0 Z! v4 t1 v+ p6 o{
* m0 y8 ~+ v# Y. |5 |9 h& L7 a        int i,j;; L+ n! Z5 p7 N: N' Y9 O
        for(i=0;i<4;i++)
7 V5 }; F; P+ N) v        {
( O2 j' x+ {$ l% C                for(j=0;j<4;j++)
/ n' g. c, b$ r: J$ J+ w                {- N$ x8 Q) H. }; }3 `# D
                        transpose_mtx[i][j]=mtx[j][i];5 N( l  E" _7 g
                }2 i2 ^' z2 v% m' Q$ n
        }8 f7 M3 h8 k& ?0 X! `
}+ d% l4 V! B8 m1 ?( O! i
//从11元组获取变换矩阵
* ^6 K1 H7 u, O/ ~+ t. Tvoid Project_Matrix_Get_From_Move(double translation[3],double point[3],double rotation[3],double angle,double pos[4][4])* p2 P* ~) r# r! x  x
{3 V/ s+ O, p" W/ ?. ^# K" T
9 O; ^( x0 n& a/ T* _
        //Project_Matrix_Get_Rotation(rotation,point,angle,pos);8 u. e/ R; n- D+ }
        int i,j;
/ j* Y2 h4 w! ~1 q1 C/ D        for(i=0;i<4;i++)$ g# Z6 j3 B( D; j# v
        for(j=0;j<4;j++)
7 b. C+ ~- E) C4 s" {4 J8 }, Q; \                if(i==j)
- Q2 R0 ~0 L; ^& S& U0 u                        pos[i][j]=1.0;6 e: \' `5 L  Y$ d- V. _3 c
                else
% c3 X7 T0 T6 J' m4 u                        pos[i][j]=0.0;$ ^8 Y% w9 Z7 M+ |
        pos[3][0]+=translation[0];
5 Y9 z2 S  R8 `& D0 n        pos[3][1]+=translation[1];
8 P+ }" ]" l6 P2 O+ R  _7 A        pos[3][2]+=translation[2];
% K, K# Z$ _' C8 U$ Q+ G}
' l  S' w0 \: p1 J//向量缩放
, H2 A' U2 g! l& s( p: I0 i' yvoid Project_Vector_Scale(double a[3],double scale,double b[3])2 J( R; V' q- ?7 h
{
& f2 _9 x0 v$ Z( U        b[0]=a[0]*scale;2 v' p- L2 ?: F, T, Z7 |- ?: A
        b[1]=a[1]*scale;
6 T. u5 a! \( k! X        b[2]=a[2]*scale;! Y) y  T( z- b& n" L" w
}
6 F: e/ e7 C$ X2 w/ q7 U8 e" I( R
' z' K* `+ s, ^) v$ L/ n
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 doTeam.tech
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 注册

返回列表 本版积分规则

  • 发布新帖

  • 在线客服

  • 微信

  • 客户端

  • 返回顶部

  • x
    温馨提示

    本网站(plmhome.com)为PLM之家工业软件学习官网站

    展示的视频材料全部免费,需要高清和特殊技术支持请联系 QQ: 939801026

    PLM之家NX CAM二次开发专题模块培训报名开始啦

    我知道了