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

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

[复制链接]

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

2470

主题

1275

回帖

8万

积分

管理员

PLM之家站长

积分
82170
QQ
发表于 2014-8-25 15:14:54 | 显示全部楼层 |阅读模式

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

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

x

1 q2 k6 N# ?# L# x8 x* o; H# K: c7 H& @7 q- i
/ \) n  S' G  s& H2 D" Q1 H
#include <math.h>
( |% c$ `/ b6 K6 d6 g0 i: Z% e//矩阵复制
- N# q5 o% V) U3 B( L& @% R4 }void Project_Matrix_Copy(double from_mtx[4][4], double to_mtx[4][4])) j- l! b% X# w; Q
{  ~$ `* T( M* D* `! t- P  z
        int i,j;  M; h3 R! D3 H' z- N1 i+ z
2 v3 o6 H- [/ ^. K- Q
        for(i=0;i<4;i++)
- J5 r4 b' b, F8 P9 ?                for(j=0;j<4;j++). l4 u( m& `* ^; O) N; |
                        to_mtx[i][j]=from_mtx[i][j];
- \, h8 h& Z. e- n  ^$ z7 p; k: H}/ k1 {9 @. r# U7 B2 k
//矩阵初始化9 T3 B" m! @, O: e  y/ d
void Project_Matrix_Identity(double mtx[4][4])# p* O/ K. V; e  c1 J
{- N- X: ]  J/ x3 ~! h" V
        int i,j;
+ K# l7 l! k1 `7 r8 Z, U7 F          x3 s! J7 p4 ~0 O4 g
        for(i=0;i<4;i++)
+ a( x) n6 R4 B2 U9 P. S4 }                for(j=0;j<4;j++); ~+ R% Q7 b9 m1 v8 _8 e3 ~
                        if(i==j)- Z+ n" X  s' C
                                mtx[i][j]=1.0;
& K) T3 V. H3 [/ J( f8 O                        else
: ?& \3 e  ^! W2 o                                mtx[i][j]=0.0;4 f  A7 ]& A  h/ f$ O
}$ r: t0 O1 t4 G) ^
//矩阵相乘2 v. j/ }* w* Q: H2 P9 [& W' N1 U8 N
void Project_Matrix_Product(double left_mtx[4][4],double right_mtx[4][4],double get_mtx[4][4])3 X; ?' n: [+ D0 |+ ?6 \. j
{
9 q9 |0 V5 y. w* T' r! t  y3 V/ R5 D+ Y4 U
        int i,j,k;# F/ F# A" I4 L0 h3 D
        double left[4][4],right[4][4];+ \6 l7 A5 i3 k

# v5 m9 \7 k3 @# P        Project_Matrix_Copy(left_mtx,left);
6 \$ Y# t# g0 o7 i        Project_Matrix_Copy(right_mtx,right);
- g; ~9 M) \" Q3 ?0 K: D8 Y        for(i=0;i<4;i++)5 n4 A6 N* a. N7 M& `5 _
                for(j=0;j<4;j++)  R* G# I" [% y6 F! M$ z
                {
# b/ l, `4 k' c. x# i# d8 z8 p                        get_mtx[i][j]=0.0;
% C3 ]; @; ]$ L- s                        for(k=0;k<4;k++)
' q0 t% |4 o7 ^9 _9 F                                get_mtx[i][j]+=left[i][k]*right[k][j];: {' o' j) C+ _& \8 p
                }; w' f7 p9 v# S. c/ F( }
}7 [" \( {* f- s' b: t4 x4 Q, l
//转置矩阵, y8 m7 n$ s/ `
void Project_MatrixGet_Transpose(double mtx[4][4],double transpose_mtx[4][4])% F2 A' C( I; d7 c
{
6 o0 P1 q( \) ^8 [( N+ \: t        int i,j;
+ Y& [& v  j9 Y! N4 ^: [, M) |% U        for(i=0;i<4;i++). G& B1 c# C! _3 O
        {& E5 ?1 _0 t5 z) @! T4 N
                for(j=0;j<4;j++)
  d4 Y$ g) |; D% B                {
/ M& W5 F* C6 l                        transpose_mtx[i][j]=mtx[j][i];+ n9 I- e' m" S( s5 D% d
                }
( L; b, N$ l  i1 h* I0 W        }* x+ ]) f2 x: b0 ?
}+ R' U; T$ \) B* H- e! G& U  u
//从11元组获取变换矩阵8 j4 R5 J7 H* {( k5 K# j
void Project_Matrix_Get_From_Move(double translation[3],double point[3],double rotation[3],double angle,double pos[4][4])% }6 Z  M- n: B3 o
{
0 \7 k2 S- f5 u0 R) E( R3 m$ j9 |" m  a# }8 X( j% I, z
        //Project_Matrix_Get_Rotation(rotation,point,angle,pos);
+ B9 O) L% Z7 o  S1 H        int i,j;, x( v3 \1 R, K( ^
        for(i=0;i<4;i++)- y* G( }% V/ c' ~3 @
        for(j=0;j<4;j++)
4 w8 D! v* `5 w$ K8 l& c$ N                if(i==j)
8 f: t7 e9 X2 \) L( p! ^                        pos[i][j]=1.0;
* i1 L1 t( ^* j% Q! O                else9 i: T# e: N! L
                        pos[i][j]=0.0;. ]: n+ u' R4 J/ D  T
        pos[3][0]+=translation[0];
* p* y- m7 |% T- r' V- n0 e5 o        pos[3][1]+=translation[1];7 T" l* U2 T9 }3 v) {+ {; h
        pos[3][2]+=translation[2];
& O) X5 z: s3 i9 }: v, t}
" l+ I2 F5 w0 \" m$ t5 a/ ]//向量缩放( _' N- v' c$ n' ?4 D- A
void Project_Vector_Scale(double a[3],double scale,double b[3])" r9 ]3 x' B8 b+ `
{% G$ Q5 L+ S. b) i$ M- g. ~' `
        b[0]=a[0]*scale;
- h# ^1 A' M; V! p8 ?7 |1 j) x        b[1]=a[1]*scale;
* b1 G% P5 d1 `3 ?) a/ T2 c        b[2]=a[2]*scale;# z. c, l$ `% `& a3 l1 j1 A
}
4 W- O( u/ k. ^; U
" F, R% N+ I6 V! x* D
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了