PLM之家PLMHome-国产软件践行者

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

[复制链接]

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

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

admin 楼主

2014-8-25 15:14:54

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

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

x

; m* I" I/ d: H0 Q3 L! g' _+ X1 ]2 s% Q. @4 S! w: w; J

( _3 ]$ v2 Q; W#include <math.h>
4 d% D$ g3 s- }! M% c//矩阵复制
6 _5 v! ?* p$ ^$ c" yvoid Project_Matrix_Copy(double from_mtx[4][4], double to_mtx[4][4])5 B& s+ {/ T0 f3 D0 H
{
# t3 Y! C# T, V/ M        int i,j;
; h# H- U# ^: y; {* ^; C$ w! }: g4 Q6 N
        for(i=0;i<4;i++)
+ [1 f0 B* X: k8 m; ?                for(j=0;j<4;j++)/ @* w2 k. u, E
                        to_mtx[i][j]=from_mtx[i][j];) ~- w. X" n8 A# p6 I
}5 ~9 a  P7 |$ _. ~! A+ Y
//矩阵初始化) V% t4 d2 z( Q" w5 {3 w
void Project_Matrix_Identity(double mtx[4][4])
& l% j' {1 t# o{1 H3 _+ P. n* H. A! w$ m4 k
        int i,j;
- }9 ^( H& Z9 {; d2 A& X6 i       
; P6 C4 _$ i) I$ L! V. C1 g6 `        for(i=0;i<4;i++)# a7 L1 L4 h2 R$ X& `- H8 k6 X
                for(j=0;j<4;j++): `! s- ^* `( E0 r" S3 B0 V
                        if(i==j)
4 M" M3 u6 p$ o3 v: \& F                                mtx[i][j]=1.0;% i. K! _1 Q# d" [3 N7 j
                        else
9 F+ A( V3 S% ?" L% o" W0 U                                mtx[i][j]=0.0;
. J0 e) H1 P# {3 L4 @3 [}
8 ~. M, G# c2 b& F- r4 K; K* }//矩阵相乘
5 d- ?  R8 w- |& X4 Y  n! d9 [& mvoid Project_Matrix_Product(double left_mtx[4][4],double right_mtx[4][4],double get_mtx[4][4])
$ r( j' j. ^: y& l) w2 v{
' o% z1 A/ r$ h7 H1 C$ k# b
& z$ C& M) v. b+ K1 P        int i,j,k;1 J& v' F( y+ B6 z" K
        double left[4][4],right[4][4];
" T: u7 A' }& K0 G2 ~
1 f  }/ Q9 k6 t- u% }        Project_Matrix_Copy(left_mtx,left);
6 R$ x0 f  K7 _! |2 x! X        Project_Matrix_Copy(right_mtx,right);# V! ^4 @3 D3 |
        for(i=0;i<4;i++)
; ^3 ^+ ?1 D/ }                for(j=0;j<4;j++)
, C, n) [: q4 p+ N( R: ?& M$ d                {" j; u; u- x% k1 j( N
                        get_mtx[i][j]=0.0;, |6 k; [; _) U9 b  I. J
                        for(k=0;k<4;k++)6 y8 P; _. X2 Y. `( M. f* f
                                get_mtx[i][j]+=left[i][k]*right[k][j];3 a/ ]/ z- J/ X; W9 F
                }- V1 s( w9 J* C; Q. {6 I
}
$ [6 Q5 ~8 ^) K5 `8 K& D//转置矩阵% e% q& j1 X; C4 x
void Project_MatrixGet_Transpose(double mtx[4][4],double transpose_mtx[4][4])( Q  I) o0 |1 g+ m- n& e( F
{
7 ?: _1 j9 G* c  B) p4 w2 z* t3 _3 p        int i,j;1 @0 ?9 W7 I- U* V+ H! d8 p( P+ p
        for(i=0;i<4;i++)
) B1 k( N+ f! |. O9 C        {
+ t" z) l* q$ o5 l3 m5 a1 H                for(j=0;j<4;j++)
. ~, C9 d4 D, W) [: ]6 c- {' X% \                {
0 B: J% Z0 G8 L" U! R6 B                        transpose_mtx[i][j]=mtx[j][i];7 M! o  n7 N1 B0 {+ n; u
                }
  o5 e( H( J; W' s& e        }
. h2 @9 y0 q! D2 t* G}4 g# ~7 y, R9 E8 p- j6 L
//从11元组获取变换矩阵
+ v& e! x, O7 }7 A8 ^; f! I6 v1 Mvoid Project_Matrix_Get_From_Move(double translation[3],double point[3],double rotation[3],double angle,double pos[4][4])
! u- r0 H* a* ]{
  t( ^; ?) F$ V+ t5 T9 m/ n* ~
$ R% n" ~9 B" l% P6 ]        //Project_Matrix_Get_Rotation(rotation,point,angle,pos);
: Q6 l( H  K! o# S        int i,j;
! }5 j8 U5 |3 s        for(i=0;i<4;i++)& w5 B8 k* s2 g) H# z: c8 O
        for(j=0;j<4;j++)- o0 E/ a( r+ y2 e$ j/ X7 {. _- e0 Y
                if(i==j)
( `: C0 o  e) x                        pos[i][j]=1.0;( T0 M' _7 i6 [
                else
% L3 L  I+ A$ h% G) h( J                        pos[i][j]=0.0;
; _+ E9 S2 w1 s3 ]1 r        pos[3][0]+=translation[0];- {6 _: E  x! Z4 x8 T) X% @# {
        pos[3][1]+=translation[1];
" o* c$ L- h& f" m3 K9 u3 a# H, C9 t        pos[3][2]+=translation[2];
: |" J- b5 D7 d- J6 K) o}* e' e5 h7 ]+ J3 J' y9 p: f
//向量缩放
" ^2 K3 y' C) \# j9 s9 u$ \void Project_Vector_Scale(double a[3],double scale,double b[3])9 b  |2 a6 v( \9 R
{" I% u. [+ R7 d8 J8 O/ S4 O
        b[0]=a[0]*scale;- M! r5 b, C7 P6 A1 E+ O
        b[1]=a[1]*scale;
8 s* R  |5 e& b( ?$ S1 b0 x% ~        b[2]=a[2]*scale;
; P8 a5 P: T4 w$ p! V9 R' z2 G}+ y5 k3 t1 ?( u+ L! I4 m6 L
9 q# b+ S  [! V# i  Y
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了