PLM之家PLMHome-工业软件与AI结合践行者

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

[复制链接]

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

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

admin 楼主

2014-8-25 15:14:54

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

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

x

6 w0 O8 z8 w/ a2 l; }6 u3 }  h  I. L; O6 w

0 m# U1 m( E" Z& o" r& ]0 Q( o, S#include <math.h>
% Z$ P& T) w3 }2 Z//矩阵复制( r1 t) I. R1 `& f( y- f
void Project_Matrix_Copy(double from_mtx[4][4], double to_mtx[4][4])! w3 C  F  R) H6 ^" @
{
: w/ i( a8 O$ I7 h" k( M; Z        int i,j;
6 w1 _5 w$ ~. k( K0 ~7 u5 a1 b8 }0 C6 N, j7 i
        for(i=0;i<4;i++)! \% m9 a; M3 _8 I, c3 D: t$ F
                for(j=0;j<4;j++)
/ j* N6 H/ Q' {3 X+ W                        to_mtx[i][j]=from_mtx[i][j];
, u* v% _) O/ n% q+ x}% D$ }  b& O2 W0 F5 ~
//矩阵初始化
2 {( f* s8 G" c* v. o, evoid Project_Matrix_Identity(double mtx[4][4])) g- f( A/ j' ~. H+ i4 x
{& }9 k8 |, G8 F
        int i,j;
( l0 ]1 h1 ?. \8 U5 j        ' C/ E: O3 N4 O- o( \* _  U2 z
        for(i=0;i<4;i++)
7 I2 l5 ?3 O& d& T( V8 |# R& c* _                for(j=0;j<4;j++)
6 S; ?3 z2 [- v% R; X                        if(i==j)
: d1 B9 j9 l" b7 M( d7 b; z2 H                                mtx[i][j]=1.0;
+ w, V' [7 v/ ~0 X- m' Y                        else+ J. H" `. v- J' d9 M0 t
                                mtx[i][j]=0.0;, O) T5 o5 n* Q; L) J
}
( a1 y- C/ \) t& `% e" q8 h//矩阵相乘6 {; }; p/ p& }8 Q/ G; q& a
void Project_Matrix_Product(double left_mtx[4][4],double right_mtx[4][4],double get_mtx[4][4])
" Q# u. }4 L) m0 D* d. O' ?{1 j0 K4 s; ?1 C# Z; L$ |
0 w0 E  I0 `2 K% Y8 v$ u
        int i,j,k;
/ A  X1 g! v6 E3 ?& X/ x        double left[4][4],right[4][4];
4 d" a, W+ d% {; h$ E
/ }3 I% p% e. z9 @        Project_Matrix_Copy(left_mtx,left);
+ s8 N8 d& \1 c! g6 R- r* b        Project_Matrix_Copy(right_mtx,right);
" I" ~* S5 C8 |5 {  v, K        for(i=0;i<4;i++)
6 m$ v$ r0 k" M8 T4 q8 S- P9 }                for(j=0;j<4;j++)4 Q% c6 E, @0 c: p
                {
& c0 C2 S& X. \& q                        get_mtx[i][j]=0.0;) |* P0 T. p7 ^4 y# X
                        for(k=0;k<4;k++)8 g+ I& m4 ~* \$ |9 u$ X
                                get_mtx[i][j]+=left[i][k]*right[k][j];3 C7 `3 j. ]% _0 V0 @( {
                }
  M9 l) I3 w3 I}9 C7 |6 w8 `5 }9 J. [
//转置矩阵
; `6 `8 t/ k$ e; N3 Uvoid Project_MatrixGet_Transpose(double mtx[4][4],double transpose_mtx[4][4])
' m- K# K, p. A8 W( R) x{
3 O: w0 T# B+ }* n! [        int i,j;* V3 G  H$ H6 C5 D4 k0 p' S6 W7 U
        for(i=0;i<4;i++)
5 s% T& A0 P& M2 i$ _        {+ ?% B4 i9 ]; T& I! v- B
                for(j=0;j<4;j++)8 A; ]$ A- T5 g* l
                {
/ G/ v, a  y5 ]: t0 f                        transpose_mtx[i][j]=mtx[j][i];  O9 h# H/ ]: u7 G
                }3 A* P( D) I4 D# Z# x$ u& J
        }( X4 r/ y5 Z: Q: ]
}9 l+ a1 G% K% G+ C1 ~1 w' \& R
//从11元组获取变换矩阵" F- J2 z: r( j0 R; l- O. ^! M
void Project_Matrix_Get_From_Move(double translation[3],double point[3],double rotation[3],double angle,double pos[4][4])1 G: d1 f7 e( \4 d- F0 }
{9 s! b& @7 _. d$ _0 I' Q2 O2 d

/ G2 p3 e, b; Z3 ~8 o# }3 A        //Project_Matrix_Get_Rotation(rotation,point,angle,pos);2 i" }9 R! ~6 x2 c- S
        int i,j;
9 b4 r, Q, i; d- T, D$ a2 A& k        for(i=0;i<4;i++)) d! w, X# G  B: y
        for(j=0;j<4;j++); V8 B" }- L* I: w9 G8 h0 @
                if(i==j)5 ]0 \  s" ~9 N9 T0 m0 c2 W  v7 j* m
                        pos[i][j]=1.0;  P+ O7 R% w0 q
                else
$ j( R' B9 A0 {9 S7 h2 A0 c/ y/ d                        pos[i][j]=0.0;
) A" V: a& R$ @) m! R        pos[3][0]+=translation[0];% Y9 k& ]. G' T: D" F8 u* ]5 h
        pos[3][1]+=translation[1];
; G8 x* |( R+ e7 K: ?        pos[3][2]+=translation[2];0 Q7 z. N1 r) {1 A2 A) m
}
- L# e6 P9 O! `//向量缩放6 T2 S/ r6 D2 K* z$ {- _
void Project_Vector_Scale(double a[3],double scale,double b[3])
+ y$ L  R$ `4 r" Y8 a, {5 K5 R{
, g: W( \  |# _# u# I        b[0]=a[0]*scale;
1 m, m! s0 [( y% o- o7 q% J6 ~0 S        b[1]=a[1]*scale;4 P, Q' N' |6 K5 [
        b[2]=a[2]*scale;
9 F. `' x! ~$ P# Q}% i, Z  C. D1 I2 r3 Y
" [2 `3 C2 v5 T3 S' M3 X
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了