查看: 3706|回复: 0

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

[复制链接]

4

主题

3

回帖

44

积分

管理员

积分
44
发表于 2014-8-25 15:14:54 | 显示全部楼层 |阅读模式

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

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

×

) h; {  y2 M; l: |4 [& c' C
6 p5 L4 \, D% z2 e  o" u" w/ p" V1 s) ?9 m
#include <math.h>
5 l0 U6 L0 D( K8 ~  B/ S# w4 R* I//矩阵复制) I5 C. C+ L- U2 o3 O
void Project_Matrix_Copy(double from_mtx[4][4], double to_mtx[4][4])
; R; z$ G, w% \& h{
1 o, l  @6 F  [% C7 ?        int i,j;
2 x& `* Y6 x2 [4 E5 ~* x- r* |: \  L1 g; w
        for(i=0;i<4;i++); ~" @: ]" W$ m, m! S$ C
                for(j=0;j<4;j++), m% E  q9 a3 c' U5 I; L1 K
                        to_mtx[i][j]=from_mtx[i][j];
: _4 ?2 P0 L6 _; |/ s! b}7 C. l* n% G4 w7 N
//矩阵初始化! s* X# {5 e3 ?  I* u
void Project_Matrix_Identity(double mtx[4][4]): o, z6 y! k( A# i$ Z7 u3 R
{
2 J# ?8 b0 x  C* e) \- J! Z        int i,j;
. R" g3 t8 F# ~" F7 t3 }  K       
4 ?0 z5 g/ |7 a5 C& Y2 w        for(i=0;i<4;i++)5 I. ^, D8 J) Q+ P- o4 b& u8 N) Y
                for(j=0;j<4;j++): J) Q, j4 a6 R+ L; n
                        if(i==j)
1 }; w9 p! R' i4 H0 L9 o2 n* I4 H                                mtx[i][j]=1.0;
  A% T  x% Q( S) h; i0 y! P6 j$ C                        else
! p( A) |: T8 B7 G0 _                                mtx[i][j]=0.0;
6 e7 G7 ~; Y1 _: }4 n) u, }/ C9 v}
. }9 M+ ?" d& m//矩阵相乘. q6 G6 X; V+ M! C3 R
void Project_Matrix_Product(double left_mtx[4][4],double right_mtx[4][4],double get_mtx[4][4])
/ y2 m  x, M4 I1 @8 h{
, }6 L  N) @+ ~% U( K
0 j0 C# t- w. Y, z% D        int i,j,k;
: P4 F" w4 q' p0 w1 ]+ o        double left[4][4],right[4][4];
, I5 a/ B% ^2 Z5 |' z
( ~* V6 l( o. ]* p4 j% i        Project_Matrix_Copy(left_mtx,left);
; T! X- V0 {1 R' E6 _, H' p        Project_Matrix_Copy(right_mtx,right);( @5 n- a- }4 f9 w1 v
        for(i=0;i<4;i++)7 f' A% ^6 k& q2 e( z
                for(j=0;j<4;j++)
% }: Z) |4 R" ^# ]1 I                {2 G. M! _0 Q! i, c0 K
                        get_mtx[i][j]=0.0;; ?5 f! J0 M" B7 @5 z. D% v6 S$ F
                        for(k=0;k<4;k++)
: W8 B" r+ l& B  u* I3 V* ~                                get_mtx[i][j]+=left[i][k]*right[k][j];# E) R6 n  v6 W
                }
& Y1 q9 r+ _4 n8 i, h}
. b& ]! [( |3 e; u4 D: I2 e//转置矩阵
+ C: ^; Q3 Y6 c; o- [void Project_MatrixGet_Transpose(double mtx[4][4],double transpose_mtx[4][4])7 w6 k* v8 H8 O* e( y
{
' X- D& L5 l+ ]5 O5 U2 b, t2 ]        int i,j;
& f+ {3 H& y9 l, w. m) M8 E        for(i=0;i<4;i++)" ?7 d, V- s$ j4 a" Q2 R
        {& t0 l8 {, s! f' W' X  O7 l
                for(j=0;j<4;j++)" r6 X6 V' @1 {1 K6 E7 r
                {& c8 r. h( @# }% \% l/ N
                        transpose_mtx[i][j]=mtx[j][i];
4 V3 Z' o% `. G( ^3 z                }
: Q) u- u% l; Y& f1 Z! a# J- k        }
6 V$ P" y. v3 F% T+ F* h}8 T6 ?3 t; I8 i' U
//从11元组获取变换矩阵
$ J4 m. K# L: C; M, S' bvoid Project_Matrix_Get_From_Move(double translation[3],double point[3],double rotation[3],double angle,double pos[4][4])
$ K4 f% \8 Y0 G1 @{
' a, n8 @+ _+ D' K: g' w
: j+ B8 w8 y  T- _5 E# I2 c, ]4 K        //Project_Matrix_Get_Rotation(rotation,point,angle,pos);$ l  a( n6 o3 B
        int i,j;& ^8 \4 V0 Y- b/ [: A$ l; ^
        for(i=0;i<4;i++)2 g" \* |5 w) Q" c7 X1 w* \
        for(j=0;j<4;j++)
4 Z3 N! h" t) U  [2 r4 u                if(i==j)
9 X9 W) ^3 I/ n                        pos[i][j]=1.0;, {8 \  i0 `- e. O/ N# ?1 M: p
                else  X: Q2 y) O0 p) B3 V
                        pos[i][j]=0.0;" d( t' U4 M; K
        pos[3][0]+=translation[0];
- s. W( D. c  q5 B7 C! U        pos[3][1]+=translation[1];- V  q% T% W! j8 }9 g2 _' J7 w0 N
        pos[3][2]+=translation[2];& y5 y% |3 G6 H2 n, k9 d7 ]
}6 H; K) ~9 Y! v9 J. D3 A
//向量缩放* _/ a8 K. ?! h: i* W
void Project_Vector_Scale(double a[3],double scale,double b[3])
$ c3 R) e/ P9 z( w$ C# \{% L- {8 T; r; d& O  A
        b[0]=a[0]*scale;
8 t. O& A% g- b8 T* i        b[1]=a[1]*scale;' a2 f2 x* w2 K
        b[2]=a[2]*scale;0 {$ M+ D' e# u# Q
}0 o3 Y5 f- [0 |. e
+ w; n9 T) o" R, W
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.doteam.tech
回复

使用道具 举报

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

本版积分规则

在本版发帖
关注公众号
QQ客服返回顶部