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 3286 0

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

admin 楼主

2014-8-25 15:14:54

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

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

x

4 a+ j- r, @( x( w2 [
: N1 k% t9 K# {/ S/ a* k5 m
  c6 w/ J+ c+ g#include <math.h> ) C: Y( P" l0 f6 x. q. w( q* G6 R4 {& O
//矩阵复制* q& b  `3 \& L( |1 ?- ?
void Project_Matrix_Copy(double from_mtx[4][4], double to_mtx[4][4])* [' ^4 a4 q* @$ P' a* q0 F
{" }+ h. P. W& [9 F. D
        int i,j;
! z# o1 j' M1 q4 p; {
7 T/ H3 M$ L) @        for(i=0;i<4;i++)
2 V0 k8 d- N0 ^( T0 O                for(j=0;j<4;j++)
) F: ]. s! a0 _+ Y1 Z" e7 [8 B                        to_mtx[i][j]=from_mtx[i][j];
  R$ O  l9 G; y4 w( Q1 h6 E+ v}
) u4 i: ?5 L" ?2 E//矩阵初始化  E, s$ g/ l/ A8 h
void Project_Matrix_Identity(double mtx[4][4])
: P8 C& y+ }; z- _3 B" r{
. j& Y7 F3 U; x6 a9 ^" N# |        int i,j;% X; ^* w) c/ |- m# F* d9 r
       
  T/ M9 }7 f$ U. W4 J        for(i=0;i<4;i++)
; H7 }/ d; U2 S* X3 w% d3 x                for(j=0;j<4;j++)
% v! t& a, x* E* Z                        if(i==j)3 a( o1 X( D+ v8 k+ k% |3 R* W
                                mtx[i][j]=1.0;0 c( C8 \. Z3 ]8 b* x8 l9 F& p: p: @
                        else0 K  D- a; g; G
                                mtx[i][j]=0.0;9 _8 [* T3 \( }9 j( n
}. e1 n- R" e. L3 q
//矩阵相乘
5 j8 M) U7 a" s  Y8 j$ P) R+ d- q3 uvoid Project_Matrix_Product(double left_mtx[4][4],double right_mtx[4][4],double get_mtx[4][4])
# e. y( ]" s9 g2 o: u0 R- A- ~0 |; h, m{
. }4 I7 s; L7 @' `+ U& K( m& Y/ ^. ?
        int i,j,k;
* x/ D- q, g$ e. U# T4 y        double left[4][4],right[4][4];( L& k: a; t* I5 B) \9 b# O
) p6 ?- P% T) R' {+ s$ O4 ?  c
        Project_Matrix_Copy(left_mtx,left);- f8 @# O, s: Q$ ]5 S6 ]+ R
        Project_Matrix_Copy(right_mtx,right);' `+ a1 {9 E! e7 Q+ `0 K: C
        for(i=0;i<4;i++)
, m( e( ~+ E; v, u/ x1 N                for(j=0;j<4;j++)
% i, V3 }5 }2 S) f0 K8 D                {
6 ^5 ~. n1 f5 C6 l! N% t                        get_mtx[i][j]=0.0;
  B, j0 M9 z; s# `. H( E+ [                        for(k=0;k<4;k++)
2 @7 ?8 r% L0 F% f                                get_mtx[i][j]+=left[i][k]*right[k][j];3 M; ~7 [9 R" c* _# J. C+ ?% u/ ^
                }# P* g7 Q! E4 G# ]
}
! `, s( g( x  r. M! ~0 L/ [//转置矩阵
8 e# G$ B2 Y) {0 Q9 Vvoid Project_MatrixGet_Transpose(double mtx[4][4],double transpose_mtx[4][4])$ o* m! e: @% @! j* N4 q) v
{
2 X8 c4 {1 \3 E! q8 u' N/ R        int i,j;+ Q1 ^* y8 W$ x" S& u& y: n
        for(i=0;i<4;i++)+ b: d# O4 x( V; z2 L7 `0 Z8 j7 T* ^
        {( s- U7 q' {5 W1 v
                for(j=0;j<4;j++)
' E4 s7 D# G4 G' }. u! P; ]                {* W5 n, u* c9 g: R
                        transpose_mtx[i][j]=mtx[j][i];) k0 d+ q, s5 N& D
                }
8 c7 J9 ?: S! m$ g3 _. c' X' y# r        }0 s3 v# Q, c) T- B
}
8 c6 H$ i3 {) e! v  |  u" V! ^. G//从11元组获取变换矩阵' ~7 {6 A3 l, |8 \0 {$ W4 a! S
void Project_Matrix_Get_From_Move(double translation[3],double point[3],double rotation[3],double angle,double pos[4][4])
! a! C. G7 J$ h2 {{
+ {+ H; c7 @. ^( u0 q! m
7 L( j6 K+ Y. v, G# s$ Z7 d6 x        //Project_Matrix_Get_Rotation(rotation,point,angle,pos);6 \, M4 {2 l+ [- d1 W
        int i,j;0 F8 B8 v) y- u6 [, _  W0 Z
        for(i=0;i<4;i++)& H$ Y5 W- c  r. Q
        for(j=0;j<4;j++)
  v) v/ D& J2 E5 d' D" ?                if(i==j)) n. S; J2 \' z* b, g- h
                        pos[i][j]=1.0;
: n0 t: g" L7 k! F7 m- S7 o                else/ M  R; M! z: m4 w$ q! A
                        pos[i][j]=0.0;4 j4 |) b$ M" _% t; T8 Z4 R; p
        pos[3][0]+=translation[0];- Y' A3 f1 U, [0 s( M  _+ ?% I
        pos[3][1]+=translation[1];: {" d' _$ a4 w
        pos[3][2]+=translation[2];3 d2 K, w! S8 [. S
}
2 g' Q& H- z- V+ C: X) O/ H+ b9 \//向量缩放
2 ~+ o0 g; [8 {3 i: ^; xvoid Project_Vector_Scale(double a[3],double scale,double b[3])5 @  ]+ S4 L9 [! |
{5 R* h& b: j2 c! l! ]  u7 N
        b[0]=a[0]*scale;
! F  Y4 X4 C/ p7 O0 u        b[1]=a[1]*scale;
: B* t, N+ }8 W1 ^/ [) w" q; T6 D        b[2]=a[2]*scale;
3 w4 a8 h. W5 K" d}
# L; M) W: |8 f5 n* @: w) Z& s) u- r! k# o9 N
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了