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

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

[复制链接]

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

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

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

x
" e4 `1 q; Q8 K9 G1 V6 R6 C- V
" k5 V! m9 m9 N8 q

1 F9 l& N( E4 j( |#include <math.h>
+ W; [9 h7 B3 j3 h//矩阵复制9 @3 x  u; R+ a' \
void Project_Matrix_Copy(double from_mtx[4][4], double to_mtx[4][4])
% N" `/ K3 m; D& z# n9 ]) ]{
* @% W7 _8 W- F- d. N! M, e4 R( I        int i,j;
, l" O* G+ k5 }. q. r7 q0 ~% o7 o
6 p% v2 M' j) d- E- O  L        for(i=0;i<4;i++)( P1 y6 v6 ]7 h
                for(j=0;j<4;j++)4 n, z6 G3 v, ^3 D; x- ?( Y
                        to_mtx[i][j]=from_mtx[i][j];4 ]4 k; [( u! s
}
4 a; F& d: X, [//矩阵初始化
! t! p0 v' S/ }, A5 q& p3 Rvoid Project_Matrix_Identity(double mtx[4][4])0 ~  a# ^- T: W7 f; j  T& i9 N
{! O5 x2 O  C3 ~& c" W
        int i,j;
5 d+ n5 F/ Q/ q        $ D; n  t$ x  ^5 g. y
        for(i=0;i<4;i++)
) b' k5 v% R: J. B* T3 L' E- Q5 `4 N                for(j=0;j<4;j++); |" d, E) w8 c* g5 F
                        if(i==j); H: E+ T% p4 m, [% J6 j9 A
                                mtx[i][j]=1.0;( a/ D8 P# d( m0 k( V
                        else/ g! g9 ]" }" L% ~5 g
                                mtx[i][j]=0.0;* [* |5 S4 _  a7 C- g: A
}0 N3 t9 K; C- q8 l0 h+ Y/ a% a. B
//矩阵相乘# m$ P4 _- g! w% Z
void Project_Matrix_Product(double left_mtx[4][4],double right_mtx[4][4],double get_mtx[4][4])& d, }% T5 S! K" Y; [$ M
{
1 w0 B& P% G. ^6 f/ O
, b  H; S9 X0 z  p, T        int i,j,k;9 L2 p1 B5 b2 i* J
        double left[4][4],right[4][4];
1 y4 q( u: z# m- ]1 C9 p- f- x/ }% D0 z& `
        Project_Matrix_Copy(left_mtx,left);: j/ w5 \9 }4 k2 B( W; q' Q4 ]
        Project_Matrix_Copy(right_mtx,right);3 S; j  f5 G* h( ?. ]6 {/ {
        for(i=0;i<4;i++)
, ~* M. i+ H* Y" s                for(j=0;j<4;j++)
! J3 e+ X( F# d, Q% a, Z9 t                {
) u( p% l' T4 i+ P2 k* |9 K                        get_mtx[i][j]=0.0;1 o7 S3 @4 l, q/ m9 O
                        for(k=0;k<4;k++)
% T; B  i6 {6 \0 i1 E                                get_mtx[i][j]+=left[i][k]*right[k][j];6 G1 S  s! B2 M! q6 l4 x
                }$ H+ c% n4 c; A* _/ p
}
: f" s2 u7 G/ a+ x' Q//转置矩阵& a7 r$ B+ `; F$ j
void Project_MatrixGet_Transpose(double mtx[4][4],double transpose_mtx[4][4])4 p/ ?  O" A* F( K$ l
{
& ?( y: _# E  j- ]6 i$ P        int i,j;
# I. A' a: z% ?3 |  y: W% a        for(i=0;i<4;i++): F( s% ]- Q9 \5 h5 ^1 w) I0 H3 ]
        {
- E8 s, \6 [( i1 ]  d) o; s- X                for(j=0;j<4;j++)
/ I. I$ ~5 {) O                {6 x$ p+ h5 {- ^3 V! v8 G; t
                        transpose_mtx[i][j]=mtx[j][i];! s0 z* g  q6 r- D$ q4 s
                }( g, h5 _+ M# v( X! Z
        }: h3 x6 z7 X; }9 m, z9 u2 d
}
/ s% q8 U2 m3 }! l; E//从11元组获取变换矩阵. T# ~& p$ l) T+ [; f8 q
void Project_Matrix_Get_From_Move(double translation[3],double point[3],double rotation[3],double angle,double pos[4][4])% E6 j, H7 @% {, A
{
* Y  j" o3 w! h9 J4 j  i5 K4 O* r$ t( ^6 k3 _" q# E4 P0 |
        //Project_Matrix_Get_Rotation(rotation,point,angle,pos);
( e* s8 Z; @4 d7 y  B        int i,j;% {. \/ Q4 x7 v& `" J+ M# M8 H' s
        for(i=0;i<4;i++)7 n2 {1 i; p4 w+ Y! ]
        for(j=0;j<4;j++)' z% R( }& j. ~& Q- r
                if(i==j)
$ h# _( p/ Y& g$ F1 K4 v& ]; d                        pos[i][j]=1.0;! A# u1 r! i' z' D5 H, `+ g& c
                else. ~% q" z. z4 N5 J7 N  f9 U
                        pos[i][j]=0.0;
6 q" c2 N. Y! B' y% ~        pos[3][0]+=translation[0];
8 i* F% V7 l# s, X, X6 E        pos[3][1]+=translation[1];1 n9 K- T' f  ^9 C6 U4 f7 i6 ^' z3 ]8 h
        pos[3][2]+=translation[2];
0 y% ?8 f1 p; w. i2 X9 ~' U}
9 f& [$ S+ x- O6 Q) Y//向量缩放
( T5 K$ X+ f4 ]3 {' Z4 R+ _void Project_Vector_Scale(double a[3],double scale,double b[3])
9 Z1 Y$ @+ T$ |2 S{, Y3 @. E7 ?" [6 |6 C' n
        b[0]=a[0]*scale;
) I* S* U) [* R" [        b[1]=a[1]*scale;0 ]+ p/ h. t" O& s, I
        b[2]=a[2]*scale;
6 r) w$ g: e2 Q! R}+ s% A" N4 Z, G/ S- a* ]

7 a, ^7 r# m. ^0 `' o% |
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了