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

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

[复制链接]

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

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

admin 楼主

2014-8-25 15:14:54

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

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

x

! K9 ]8 V6 C% b0 N& f/ I7 c6 Y7 `, @  o! V
1 V5 {4 H4 v# K/ i+ w( i
#include <math.h> $ _8 A$ G) A! P( _! y% z
//矩阵复制7 |( ~  @6 E3 E- _9 m* |, r$ |
void Project_Matrix_Copy(double from_mtx[4][4], double to_mtx[4][4]), U6 G2 S- Q6 T; X9 h% r- z) e, B
{. G# V9 r! V) a/ B8 S  {& Y
        int i,j;5 J* i9 \' q( _4 \# E! E

+ a! ?, U. Z/ P  v1 y! M2 O        for(i=0;i<4;i++)3 v4 f* E: R' n; a! v% W+ k& W! w
                for(j=0;j<4;j++)& {4 H' A+ Y4 A; H3 X( ?
                        to_mtx[i][j]=from_mtx[i][j];/ `* h% f" b7 G3 ]1 J
}) K# k- R; n9 S5 ~
//矩阵初始化
* R3 W$ g! {% R: K2 c$ S- jvoid Project_Matrix_Identity(double mtx[4][4])  I, G0 i1 Q8 L1 m
{
9 Z/ d4 T7 R% i! p+ \* ~, J        int i,j;
* E0 ^$ e4 y' B        0 J2 M  X- r8 X. F4 R5 l9 y/ x
        for(i=0;i<4;i++)
0 x4 \& r1 U: r+ }3 N                for(j=0;j<4;j++)/ u/ }( C  e& D3 d, ]9 Z8 Z9 D
                        if(i==j)
* `+ f1 f* e+ m4 }                                mtx[i][j]=1.0;
: A7 \$ M3 c6 C3 U                        else2 @9 O# c( R3 L0 E# X
                                mtx[i][j]=0.0;
; N' b- j" r2 o! r}
: o" e% W- y6 X( Y+ v, s) B//矩阵相乘0 c5 v* B. g; A. `; _
void Project_Matrix_Product(double left_mtx[4][4],double right_mtx[4][4],double get_mtx[4][4])
9 T  w/ d8 [3 C2 U& v; a{
+ e% x! _& o% }3 p: J  Q0 r
/ ?% t9 }" W+ o3 s- m* {        int i,j,k;: W, l2 L+ |# K$ i
        double left[4][4],right[4][4];4 H4 S; l* Q6 ^! L5 z

7 d: m! S- p( C! m3 K* U        Project_Matrix_Copy(left_mtx,left);
+ E% |7 W+ J: i" ^& N1 ]* g" D+ m- O        Project_Matrix_Copy(right_mtx,right);
6 S/ a) ~9 W. T        for(i=0;i<4;i++)$ |0 j6 g; |0 }; p6 U
                for(j=0;j<4;j++)6 m1 }, D9 u2 ~$ ^) ]. L
                {
$ K: }: J4 e" n2 b                        get_mtx[i][j]=0.0;
& N" a$ p1 @- U/ Q7 Y8 W+ m                        for(k=0;k<4;k++)
' @! M" \5 D3 u; v" W7 H                                get_mtx[i][j]+=left[i][k]*right[k][j];  ^) U- P. o0 r
                }  I( @5 U: z8 B; ~1 K9 L
}
9 q, X0 r" W$ p4 [. x# H//转置矩阵" O% b8 `6 ^: ~9 w. K0 P
void Project_MatrixGet_Transpose(double mtx[4][4],double transpose_mtx[4][4])
$ O! r+ R/ S5 X{
9 {& l. h. q/ {        int i,j;
% B3 |& r2 N1 y3 \        for(i=0;i<4;i++)( m1 T8 q2 v$ h( D3 E
        {+ E5 I5 x6 ^' G
                for(j=0;j<4;j++)
: N5 [% ]$ M: M; ]/ D4 I                {" O* i% @+ v/ z5 j: l7 Z) T
                        transpose_mtx[i][j]=mtx[j][i];* V% L! r1 t6 O* s$ f+ ^/ ]+ e
                }
- _4 m( T) o% Z; ^' T        }
- t2 H3 d& j" ?% \2 I. ]! ^0 P9 N  B3 Z}6 j# c4 `4 h6 y$ J) o8 ~
//从11元组获取变换矩阵
3 @. w% m0 Y& G6 B$ N& K: Pvoid Project_Matrix_Get_From_Move(double translation[3],double point[3],double rotation[3],double angle,double pos[4][4])
% a; m7 v+ V2 Y" _, j! A$ ~{7 m7 t# H8 v4 J

5 ?. N# l6 w7 s: Q0 ^        //Project_Matrix_Get_Rotation(rotation,point,angle,pos);1 U& G, O9 o$ H5 _% i3 o5 q5 Y2 f: o! t
        int i,j;7 R# X* L* G  ]) o
        for(i=0;i<4;i++)
" H, e6 s% w3 q( _        for(j=0;j<4;j++)
, D* _/ d: `6 O  |, A( M  b* \  B9 Q                if(i==j)/ b3 f; A' C# _+ [: [
                        pos[i][j]=1.0;
( ^+ s, Q% F6 L7 H3 n- B                else  C9 m$ {* B. j
                        pos[i][j]=0.0;1 N4 [9 ?5 o* S; ]3 p7 @
        pos[3][0]+=translation[0];
! N$ R  a! z0 k, z8 S1 e3 k        pos[3][1]+=translation[1];3 M: Y! M( n- |. m
        pos[3][2]+=translation[2];
0 c+ j- `  O) ^5 u, w; k}7 ?5 |  Y, u+ }
//向量缩放
5 Z5 t8 c3 m. z1 j. p) gvoid Project_Vector_Scale(double a[3],double scale,double b[3])" ^- @6 b% S8 Q/ i) o
{
7 @# P" \/ i: U, i        b[0]=a[0]*scale;6 l; W3 u- V3 Z2 \' P
        b[1]=a[1]*scale;, U2 @: g4 l5 `8 v( \
        b[2]=a[2]*scale;
* ^6 d1 ^/ ]( S- _$ c}8 i, y& l  s4 W( ~( m( H+ k5 r, f
6 Q1 y+ O+ q0 }$ p
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了