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

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

[复制链接]

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

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

admin 楼主

2014-8-25 15:14:54

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

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

x
. z; L; k) }) Y' @: |

8 S/ _* j' E" b+ G
% E. b) U2 Y, H. i) R5 F6 n. h9 c#include <math.h> + d6 N7 d* w; K7 Z% T
//矩阵复制
: L- g2 Z+ K; `void Project_Matrix_Copy(double from_mtx[4][4], double to_mtx[4][4]); ]: v) h; v: Y& `9 X: @
{
* E) ?0 o, Z% ]        int i,j;& i* h4 u/ H& ^: X& T  ?
+ m( Z  ~' o7 a! z# O" s6 L8 @% o
        for(i=0;i<4;i++)
8 k# W* `  U, {' h" W) X4 o                for(j=0;j<4;j++)
8 d9 }/ C. _* `0 P                        to_mtx[i][j]=from_mtx[i][j];
/ ]1 J/ S% g6 B- h) O; N}
. J5 h7 j) Y+ b8 d# g( @//矩阵初始化  K9 E+ }. f1 C7 {, A; r6 H
void Project_Matrix_Identity(double mtx[4][4])
, n7 W+ J2 a" o{' s8 E5 {* X7 }& z" {' X; H
        int i,j;
3 b" U* M) \& E- X        ! H) X& W; G* u
        for(i=0;i<4;i++)
  [3 d+ q4 S. H7 `; n7 b! u                for(j=0;j<4;j++)' J" c% B( L6 m5 N, k8 i) f
                        if(i==j)0 E; U1 M! o6 E  S, s' w$ y
                                mtx[i][j]=1.0;+ A3 I, K/ z- Y6 }8 o
                        else4 ?' Q8 A, ]* }: J9 b
                                mtx[i][j]=0.0;
. f% A3 f" W+ W) B% _$ Q}
' Q: l2 i  M5 i2 C; _- j8 f//矩阵相乘
5 ?+ {. G# `# X8 r1 \5 V" Nvoid Project_Matrix_Product(double left_mtx[4][4],double right_mtx[4][4],double get_mtx[4][4])5 T; z1 ?& w& d/ H" h, Z7 V( _
{" N+ I* E/ U: p  U' c6 @& I1 d% H

9 w# w4 I3 @/ p3 @5 b1 `        int i,j,k;! @/ n% \. C  ~- T# |. p
        double left[4][4],right[4][4];
3 J- s3 S9 [" d5 k3 ?9 [9 d5 @8 `; W. c) ~) H
        Project_Matrix_Copy(left_mtx,left);7 D, C9 T1 x1 S/ ]9 X5 ~
        Project_Matrix_Copy(right_mtx,right);" j2 f; p% M5 z* u4 Y5 Y
        for(i=0;i<4;i++)( ^" k. H7 Z# @" Z3 P
                for(j=0;j<4;j++)( Z3 \! p2 }" Q# k) h0 _* e
                {
: n8 E% i6 X$ L" @2 \                        get_mtx[i][j]=0.0;$ V* z" v; e9 |  y3 w
                        for(k=0;k<4;k++)
2 S& _$ S* v; e! }( ?                                get_mtx[i][j]+=left[i][k]*right[k][j];
! ?7 ~0 c) O, Z: o- C; i                }' O0 V& q0 a0 k3 L3 O3 U
}% q2 ^" K% U/ ]
//转置矩阵
4 B# z- o* f5 O: @8 bvoid Project_MatrixGet_Transpose(double mtx[4][4],double transpose_mtx[4][4])
4 v. y$ O/ O! I- x" w( {{! i% {% @/ w; o* V
        int i,j;; b( }0 \: p: }; m$ i( I
        for(i=0;i<4;i++). _0 m& W% a) `& h
        {
' \) [0 F0 b& ]3 U( i: F# W                for(j=0;j<4;j++)' S& K8 d7 w6 Z
                {6 s. {% p9 E$ y2 o* s2 O8 \
                        transpose_mtx[i][j]=mtx[j][i];
. l$ w' ?7 U+ m9 w2 P, i& r$ ?4 q                }
0 z$ }* v6 h$ U7 N7 R, V- t        }7 [9 a2 B/ g# A9 g$ ~$ h4 K# |
}" E3 H6 h! E+ I, t
//从11元组获取变换矩阵
( }5 ~4 r5 \2 ?4 v- m' [0 `3 Wvoid Project_Matrix_Get_From_Move(double translation[3],double point[3],double rotation[3],double angle,double pos[4][4])
/ X3 K$ c- D* F, r) F$ |, @{
/ T( w$ x" R  f
+ a; x; E7 {- [' `, y5 e0 }! D& ]        //Project_Matrix_Get_Rotation(rotation,point,angle,pos);
: ?0 n: u- ~3 l2 m) |/ x6 P        int i,j;
" R4 {2 M+ E" y5 j! I        for(i=0;i<4;i++)
) B; z+ @1 o, J9 y        for(j=0;j<4;j++)
. B0 x6 I" k% J# _8 ^                if(i==j)9 w1 }5 M2 g& q5 e
                        pos[i][j]=1.0;
! h7 J1 a/ ?5 t# B9 V' E0 [                else
/ @/ `6 n0 C; @" n% |                        pos[i][j]=0.0;+ E0 r" b5 F) Z) j
        pos[3][0]+=translation[0];
" ^  p+ b9 w) P5 }) l$ S        pos[3][1]+=translation[1];
! T7 T# W- {0 R8 ^+ P        pos[3][2]+=translation[2];
0 X# }& S" h' A0 j1 y4 H4 Z}
$ w, f3 W9 G: K; n9 E" S# G//向量缩放
4 }: n0 C# m, }void Project_Vector_Scale(double a[3],double scale,double b[3])
4 t, R: b5 f1 `: y1 I{: R5 i& T9 X( C2 O- D5 \
        b[0]=a[0]*scale;- |: X0 ?! o) i  R1 i2 G
        b[1]=a[1]*scale;
  p2 D9 x% f2 w3 W$ L/ Y4 ~9 |  u        b[2]=a[2]*scale;
7 q' ~  Q) U" O}& s# }3 _8 p' G( _8 i- v
; S* G) M' ?% I. K0 c
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了