PLM之家PLMHome-工业软件践行者

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

[复制链接]

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

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

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

x

- Y. i9 z1 m" o; ^: B( d/ }) ~! ^( y- H+ }! ~
, t  m: t$ Q/ E
#include <math.h>
( @* `! Q+ e) _% W' V4 J; J: }//矩阵复制+ [& F7 @3 Y2 z, z
void Project_Matrix_Copy(double from_mtx[4][4], double to_mtx[4][4])
/ b4 Y7 H# z/ ]4 s{
1 {* l8 M: l% U( J( X1 V4 q+ C        int i,j;
. ^3 e  R3 q( V
0 R% ~" |/ j* G2 w7 H& ]8 G        for(i=0;i<4;i++)
, [1 {* Q, A' ^                for(j=0;j<4;j++)4 j) T" w. B3 C2 g
                        to_mtx[i][j]=from_mtx[i][j];, p* Z' N8 c5 O3 {7 |4 ^
}/ P0 r* x3 W; ], G
//矩阵初始化
) l+ K6 l/ Q% I1 avoid Project_Matrix_Identity(double mtx[4][4]): v$ _4 o5 o3 g! {. a
{6 J* q" @/ a& C" S  X
        int i,j;
& A2 l8 c. D; R: J8 ^9 ^; t9 r2 d       
* A% i' S* v1 i& f% A        for(i=0;i<4;i++)& D$ d* g2 s  K7 F3 w, B1 @
                for(j=0;j<4;j++)8 A! \8 ^$ O# W4 L) A2 S/ M# J
                        if(i==j)
7 v( b* z" x& u% R8 I( b                                mtx[i][j]=1.0;
8 [3 D1 e) f4 |1 e                        else! \9 W( {# V! H& e% }
                                mtx[i][j]=0.0;
3 Y: g1 {# L5 @& M/ k! e4 g' z! }0 P}
$ d! [* w, x% |: z! Q//矩阵相乘- f* ^0 {; P$ C! I
void Project_Matrix_Product(double left_mtx[4][4],double right_mtx[4][4],double get_mtx[4][4])
8 o# y! ^% z' R3 {% o{
( }* |3 d& Y& S% [5 U. c* y$ P1 D. E8 N& u* S
        int i,j,k;5 t4 X! A/ c2 B0 Z, S+ h' e
        double left[4][4],right[4][4];5 p, r3 L2 E$ n" V; B5 k
4 I5 h1 W0 G% a1 [2 T  {! E7 `
        Project_Matrix_Copy(left_mtx,left);
2 x4 V5 v6 v5 h, d  e9 y        Project_Matrix_Copy(right_mtx,right);
- q( j! R  |' e/ x/ F        for(i=0;i<4;i++)
% a  ~, s5 R3 a4 _# Y7 v                for(j=0;j<4;j++)
( s% C* W& b3 e; g  B$ c7 v                {6 \" ]/ o) J/ d  f
                        get_mtx[i][j]=0.0;4 f) V7 K2 r6 o
                        for(k=0;k<4;k++)
, u$ r+ Q9 E# |# L8 ]                                get_mtx[i][j]+=left[i][k]*right[k][j];
2 M" Z4 v7 }  N                }% k. H+ M8 f$ h$ r$ Z8 T
}
  H4 |) S5 _8 F" Q  U! M//转置矩阵
4 ~4 b9 \8 \& ~. Xvoid Project_MatrixGet_Transpose(double mtx[4][4],double transpose_mtx[4][4])
: Z0 b) T2 ^- a3 v5 Z& Q) j{1 N+ z' i0 p! C
        int i,j;. U$ y+ t3 r0 h9 U+ S
        for(i=0;i<4;i++): Z* o* n+ a: {' b4 x" u% L: F
        {
4 }# O2 \  f/ w                for(j=0;j<4;j++)! q: c* E! h6 t* ^
                {
' a" m9 e4 @" l7 u6 @2 [8 r3 ~7 z* w                        transpose_mtx[i][j]=mtx[j][i];0 J. B: P& @! Q1 b" G* J  N2 a
                }/ [+ L/ Y6 k9 j, c5 s/ x
        }
# G5 ~  ~9 h# S8 s( l. \}
: d0 ]. X) F& [. |6 a+ Z//从11元组获取变换矩阵/ Q, r3 r, p5 g$ @, c" W& u5 K
void Project_Matrix_Get_From_Move(double translation[3],double point[3],double rotation[3],double angle,double pos[4][4])- y3 j8 @, t: s% L" u+ `
{
# H) {! M3 w  X' W3 J) E7 ~, u2 v0 s
        //Project_Matrix_Get_Rotation(rotation,point,angle,pos);
: [6 [% `  ~2 A8 K        int i,j;
! B  y" R7 m. c( B$ U8 }& T        for(i=0;i<4;i++)$ T  Q2 y4 k9 a7 p# L* @
        for(j=0;j<4;j++)( [3 A) H$ T& i
                if(i==j)
7 C  f' c1 ?+ N5 l+ v1 Z                        pos[i][j]=1.0;# r2 L0 X: R/ }0 s. n& e
                else& k. d$ N$ N) Y# v" M  I: [
                        pos[i][j]=0.0;7 ~# K1 K( [8 m3 ?$ z7 ]
        pos[3][0]+=translation[0];
* p/ g' j% n! @7 Q  B, O' x0 ?        pos[3][1]+=translation[1];" m7 d1 n4 W2 U% o6 Y, j. Q7 o
        pos[3][2]+=translation[2];
# \/ z1 J8 K# v! }( _6 c, e) W}
. v! E; ^) _( m8 ?5 a2 Y//向量缩放. |. k5 M8 r) \8 K! K  }- T
void Project_Vector_Scale(double a[3],double scale,double b[3])
  Y' t* C( p  j1 W4 A: a6 \0 S% d$ I{
1 H  a. u% U' ?3 O! A5 T3 s1 ]        b[0]=a[0]*scale;
2 ^' Z" [& D" K& C5 {5 f        b[1]=a[1]*scale;1 |) B( z0 j6 F" d7 ]5 P
        b[2]=a[2]*scale;/ y# Y7 s7 J4 e
}7 S. A. w' R7 s

6 Z! S* [0 |+ e, t& l
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了