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

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

[复制链接]

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

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

admin 楼主

2014-8-25 15:14:54

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

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

x

# q& f+ E: y' h$ U) L: |4 S0 z
2 [& t5 ^; J/ ?* i) F! f7 z
#include <math.h> 6 z7 M' I- h2 b5 n. N
//矩阵复制8 H; a' [+ A$ U& N& e; Y
void Project_Matrix_Copy(double from_mtx[4][4], double to_mtx[4][4])
; a* n# e4 h, u1 f, [, f' u% H& V{1 }* A/ b. [4 x, i0 ?, G0 t! q7 f
        int i,j;  W& w% _( i$ \/ J" F) U8 c
7 {' ]5 j; R5 L0 s" b$ a/ T
        for(i=0;i<4;i++)
, b& V. o8 v$ n1 z                for(j=0;j<4;j++)- e8 W5 v% q5 r  k" _
                        to_mtx[i][j]=from_mtx[i][j];
8 n+ U+ E7 h9 V4 ^9 y}
  D/ U) U0 [/ J% w4 k' `: u4 f//矩阵初始化
6 V; G. W9 w) l( H9 U' {void Project_Matrix_Identity(double mtx[4][4])
  |) g0 T: N3 O9 j- {{3 {/ P0 Z! A7 H! D! i
        int i,j;4 Y2 n, K% w) O. u: R) ]
       
6 B* J1 @, v0 J        for(i=0;i<4;i++)
! K6 f) f. h# }+ y1 G1 K- q# o                for(j=0;j<4;j++)
% N+ A/ @7 _; T* y4 n6 d7 Y                        if(i==j)
9 I: o9 c$ [% m                                mtx[i][j]=1.0;9 D' q* \- i& e2 ^& r, J
                        else/ x1 S) r. N" N) Z9 H# [
                                mtx[i][j]=0.0;6 p: f& L, }- g- I4 L
}
5 J- _/ J" H0 _, {: m- ~# o//矩阵相乘
! z$ b. |& x+ F$ Y! zvoid Project_Matrix_Product(double left_mtx[4][4],double right_mtx[4][4],double get_mtx[4][4])" R( a3 k" _: _- w6 O( N
{( l% R* j1 a$ @$ O, E8 J/ f7 q
: t% T% x: P5 S' E9 n1 Y7 ]
        int i,j,k;
+ M- U2 K8 ~$ y1 V        double left[4][4],right[4][4];: V. m& x) A+ f$ A  g& c
# L3 h7 ^9 Z# ]
        Project_Matrix_Copy(left_mtx,left);( W6 {. D, g' {/ t" @$ n2 }
        Project_Matrix_Copy(right_mtx,right);: u7 ?7 m) z1 `+ w# p; C
        for(i=0;i<4;i++)- s0 ?1 h- V3 m2 h) y
                for(j=0;j<4;j++)
) c2 U3 ?  @$ r* x# [5 s                {8 O4 Y! V5 _  \2 K+ g0 U5 h  ?
                        get_mtx[i][j]=0.0;
/ P* N3 p) p+ V6 y' o6 K8 O( G                        for(k=0;k<4;k++)* J# i) V; D2 S6 {
                                get_mtx[i][j]+=left[i][k]*right[k][j];
' E8 ^- `  L# E4 ~$ p4 T                }: S3 a2 l0 \6 @$ f( S
}; k$ @1 [& r- Y7 |4 L7 L
//转置矩阵3 ?% {6 P' u2 x0 R* x: q9 [, I
void Project_MatrixGet_Transpose(double mtx[4][4],double transpose_mtx[4][4])
( G/ r, ?; f- `2 R8 n$ h+ G9 N! j. j$ S{
7 {( b* T) ]- g7 O* H1 e        int i,j;
, s, q) t/ C& C- ^4 S! `' X        for(i=0;i<4;i++)
0 }& y) N# f5 _8 n# l5 A& t8 a& n5 }        {% ?0 z9 |5 F* f" D% w7 h
                for(j=0;j<4;j++)
5 z1 y( a! D& H1 X" e3 w1 {                {5 Q. X2 \# U5 x9 }/ I
                        transpose_mtx[i][j]=mtx[j][i];1 V& V% i. g+ [7 n3 g
                }0 {! V/ X" A& N5 i
        }
. q/ ]  {- D, r; T& }}
/ m4 h8 [" ]$ D//从11元组获取变换矩阵/ p5 `5 B! f2 L, I6 G
void Project_Matrix_Get_From_Move(double translation[3],double point[3],double rotation[3],double angle,double pos[4][4])
( @9 A) r6 n5 E- r{
: |# C3 F8 _5 h9 e( Y
) z: u$ c  i% [3 F        //Project_Matrix_Get_Rotation(rotation,point,angle,pos);
8 j# W! \5 e3 l# G4 Q$ j        int i,j;9 w9 i* G+ K3 Y, U, j" f, L+ i
        for(i=0;i<4;i++)
! J2 B! W5 O, m2 m: ]0 q        for(j=0;j<4;j++)
( n& k. K; `% l4 x                if(i==j)
7 t! p/ N) E3 D6 y2 K' _/ v                        pos[i][j]=1.0;
1 v# Q  ?. S1 F$ c! M" X' v8 C, z                else
. q& p8 I1 Y8 @- L                        pos[i][j]=0.0;
  ]; I8 b1 e# x6 v3 I* R5 d        pos[3][0]+=translation[0];
: T2 _. }, i0 d5 {. X/ E8 @5 I) `        pos[3][1]+=translation[1];  b! S% O. h9 o
        pos[3][2]+=translation[2];: k3 s1 C- l/ i  f
}( ^4 O& K, L5 [
//向量缩放# p2 k7 z% u4 y5 j0 b7 v( t
void Project_Vector_Scale(double a[3],double scale,double b[3])
. n, ]. S- ?% ?7 h{* H! O5 A: [' K/ q* |% f
        b[0]=a[0]*scale;9 w% {0 ~8 F- r9 A* A' T
        b[1]=a[1]*scale;
( d4 j/ W# h$ H& d        b[2]=a[2]*scale;
. Z' e$ x% {! E8 i0 [}
  w9 n5 V3 ^0 ]% {9 N3 M+ c: q* t+ ~9 c: B: g( f! P4 h
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了