PLM之家精品课程培训,联系电话:18301858168 QQ: 939801026

  • NX二次开培训

    NX二次开培训

    适合初级入门或想深入了解二次开发的工程师,本培训结合ufun,NXOpen C++,大量的实例及官方内部的开发技术对于老鸟也值得借鉴!.

    NX CAM二次开发培训报名 NX二次开发基础培训报名
  • PLM之家Catia CAA二次开发培训

    Catia二次开发培训

    Catia二次开发的市场大,这方面开发人才少,难度大。所以只要你掌握了开发,那么潜力巨大,随着时间的积累,你必将有所用武之地!

  • PLM之Teamcenter最佳学习方案

    Teamcenter培训

    用户应用基础培训,管理员基础培训,管理员高级培训,二次开发培训应有尽有,只要你感兴趣肯学习,专业多年经验大师级打造!

  • PLM之Tecnomatix制造领域培训

    Tecnomatix培训

    想了解制造领域数字化吗?想了解工厂,生产线设计吗?数字化双胞胎,工业4.0吗?我们的课程虚位以待!

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

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

[复制链接]

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

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

admin 楼主

2014-8-25 15:14:54

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

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

x

) K7 E4 c8 K( r. K2 I  a" N8 _3 b6 I0 z& }
% r7 T7 i/ K3 ~8 W8 h1 t# d( k
#include <math.h>
1 A& W/ l8 s: N- v  m: ^//矩阵复制
$ H( ]  q$ J5 Y4 p+ dvoid Project_Matrix_Copy(double from_mtx[4][4], double to_mtx[4][4]); A$ D# R$ y/ p
{7 M0 M/ M9 n8 w3 q" M/ N% d, P
        int i,j;
& n9 g& w, z. F" U& k3 A1 q/ z3 ?: G, ]) d% `/ v9 q" T" n
        for(i=0;i<4;i++)' `& M% ]7 [& G" e8 Y% N1 v
                for(j=0;j<4;j++)
$ ^* S9 S0 F/ G4 A1 z                        to_mtx[i][j]=from_mtx[i][j];4 H$ R3 [$ ^) Q
}
. T* J# P: ]7 ^' R0 i//矩阵初始化
, [! O4 _$ u' I' I6 j7 Bvoid Project_Matrix_Identity(double mtx[4][4])
% S/ o. Q6 q: t5 ?2 s. Q& Y{) P0 n; j( l8 W  L7 R
        int i,j;
8 X# G' _' D0 X% d4 t0 K0 }        5 c: \- N) F7 C2 Q% w2 D; G4 w
        for(i=0;i<4;i++)
, F! l/ @8 H  f$ g; S                for(j=0;j<4;j++)
. d+ a3 m5 Y2 T: G9 \                        if(i==j); G* H! B3 e9 x7 q; O, ?
                                mtx[i][j]=1.0;1 J" v7 Z; X1 b3 K  J+ V* W
                        else% t7 H% B6 l0 Y' o* j
                                mtx[i][j]=0.0;
0 [( W2 k1 V3 N# o}# |( \" o" R5 `, |; v
//矩阵相乘
/ l# D  \. B& g  `- Kvoid Project_Matrix_Product(double left_mtx[4][4],double right_mtx[4][4],double get_mtx[4][4])* [7 U& m1 ]" K# e# p0 E( R  v
{- N; m( l  G7 \5 |, @$ Z  n$ p8 y

- E# u5 n1 C$ Q        int i,j,k;
; {% V& I" t' c7 }# W9 |1 T/ j        double left[4][4],right[4][4];
$ R* O! E# l* a$ R  f, X+ o. c! v8 a. U
        Project_Matrix_Copy(left_mtx,left);% A' b& }3 W, c# ^* G. v5 R
        Project_Matrix_Copy(right_mtx,right);# g: k: N) l1 O5 p: ~
        for(i=0;i<4;i++)- s. r0 r: h) S& T1 W
                for(j=0;j<4;j++)4 p; q! L# {6 f. P' X4 |# X& B) R
                {# f* w  a- Y% H% b- D5 Z4 }* ~& ?- p$ p
                        get_mtx[i][j]=0.0;
& P) k! Y, h. B: K7 \4 q# c                        for(k=0;k<4;k++)" e2 d1 Z# X  K: \
                                get_mtx[i][j]+=left[i][k]*right[k][j];2 i! L! U. {' |- t- {3 Q1 U. L! Y
                }
9 o5 }" B. ^; k7 o- d# w}
! e$ Z& r: Y/ @3 f2 h6 y//转置矩阵2 r- t+ @  j! a% A6 L
void Project_MatrixGet_Transpose(double mtx[4][4],double transpose_mtx[4][4])% M) T* U; D4 X' |" }5 O
{" ?4 l+ K3 b* ]
        int i,j;
+ H! |( z4 b9 T        for(i=0;i<4;i++)
! I% ?- x) W1 u- F4 h8 }        {
. Z1 w2 D" f1 m9 k2 O) Q* Z                for(j=0;j<4;j++)8 X1 h; e4 }0 L0 S( E
                {
/ |+ O- c& D, B                        transpose_mtx[i][j]=mtx[j][i];& ?% |" U! k% c2 \) y4 `( G: g
                }
" j/ G  S7 X9 p- o        }- u/ O7 G& U4 R( H! u5 ^
}
/ u# n$ U3 d) v2 G$ ^. P% f//从11元组获取变换矩阵3 {5 c+ I. [7 N2 z
void Project_Matrix_Get_From_Move(double translation[3],double point[3],double rotation[3],double angle,double pos[4][4])
* K: P8 e) }; b{
. [; [6 T& k/ \, X: X1 ~3 L
$ W2 s* t% i% }. v* u' M' |, @        //Project_Matrix_Get_Rotation(rotation,point,angle,pos);
; A9 B/ d. I2 [        int i,j;
/ o2 a' H5 U* d3 y        for(i=0;i<4;i++)
2 B: \$ @2 J1 y0 W1 _9 P% \        for(j=0;j<4;j++)$ n9 w: s- o4 `3 O' B
                if(i==j)1 {5 a1 _) `. n  ~- }: |1 y$ p
                        pos[i][j]=1.0;
( G/ S. t: F/ Y. J                else
7 E! G+ |1 \& v" M% b/ L                        pos[i][j]=0.0;
  |# a( k# I, s& E' W        pos[3][0]+=translation[0];
( V+ |6 I( |: v; G$ y. `        pos[3][1]+=translation[1];
- L) j  u0 \2 q7 O7 T* [: _        pos[3][2]+=translation[2];4 q! n$ P6 U& ?; B
}. z( T0 s, v; Z2 ?5 x1 r+ {
//向量缩放
) i: \; J6 {( m5 _: T7 Wvoid Project_Vector_Scale(double a[3],double scale,double b[3])
  I$ k  c- r) q/ G5 `( q% K{
' f2 G2 w. m" h0 ~) e: Y" @        b[0]=a[0]*scale;! K- _8 }0 \  E( h0 T. \/ ]4 D3 K4 [
        b[1]=a[1]*scale;
1 }. V4 A/ L$ S- F        b[2]=a[2]*scale;  u- C  l: M2 o, r
}, a2 n. B* v9 [! p

' e" Y5 [8 f% k* Q
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.diantuankj.com/ doTeam.tech
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 注册

返回列表 本版积分规则

  • 发布新帖

  • 在线客服

  • 微信

  • 客户端

  • 返回顶部

  • x
    温馨提示

    本网站(plmhome.com)为PLM之家工业软件学习官网站

    展示的视频材料全部免费,需要高清和特殊技术支持请联系 QQ: 939801026

    PLM之家NX CAM二次开发专题模块培训报名开始啦

    我知道了