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

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

admin 楼主

2014-8-25 15:14:54

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

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

x

, x( x) G$ Y' }5 k$ C: z: B. }7 a+ D+ y$ c/ K# f0 q' v* ^
- X7 h, G; }# \( e) A) q( }
#include <math.h>
% @8 q  x: o& i1 J//矩阵复制' D! z8 u2 }- S; g9 R
void Project_Matrix_Copy(double from_mtx[4][4], double to_mtx[4][4])+ K) r4 m1 B& Q; J( H4 ]8 Q
{3 c" M* Y8 K7 {! O) K& y! K
        int i,j;. }9 Z2 N+ P; c; I1 u- P! S

9 V7 @: A) B5 y! m        for(i=0;i<4;i++)
2 h' c7 y( F/ ]8 u# Q" q                for(j=0;j<4;j++). d" l# c2 D) J- a
                        to_mtx[i][j]=from_mtx[i][j];
$ C9 f0 {; m% U( x}4 G7 f7 X# f# b4 [- t2 N
//矩阵初始化
  x" H8 o: \1 B/ O! ]+ }" H& Ovoid Project_Matrix_Identity(double mtx[4][4])6 c+ L" y' q8 @2 t' b
{
: X2 J" w( `& V* N9 K# f6 v$ M        int i,j;; r! `2 Z+ _5 [' W1 d4 G
       
& W" R/ D. V$ a        for(i=0;i<4;i++)
; r, U* k9 |/ {" z                for(j=0;j<4;j++)' O; M# I% Z; R' f1 ?+ h& q) |
                        if(i==j)2 s; m" |  @, l3 {
                                mtx[i][j]=1.0;; d* V; u- ^) r; \1 O& z
                        else7 `) @# s. d" c1 f) ?
                                mtx[i][j]=0.0;3 k" o/ l" M. _; f. C" v
}5 F2 \# k, q6 [3 g7 C) ^7 L6 _
//矩阵相乘
' @) i$ H" K$ K2 U! y4 }void Project_Matrix_Product(double left_mtx[4][4],double right_mtx[4][4],double get_mtx[4][4])
7 D+ W; h8 @5 o( k{( G0 [, k/ k7 H
6 O0 L! h0 b' @: k4 s' J, \
        int i,j,k;
. _& C. o5 j, u8 o& V        double left[4][4],right[4][4];' F! |8 D  v4 N

7 B" C- J0 Z. P) u1 c+ D  ^        Project_Matrix_Copy(left_mtx,left);
! y0 u# R/ S& @: _        Project_Matrix_Copy(right_mtx,right);
% v6 p" Z6 K& p" X% W' ], f. b        for(i=0;i<4;i++)( p& y& n- f( T( z* y
                for(j=0;j<4;j++)
) u" i, z. B7 e: n( y: J0 m. G; e                {* u( v# X+ }+ A; |/ {
                        get_mtx[i][j]=0.0;0 c, y/ V) b+ i7 E( z  ^
                        for(k=0;k<4;k++)7 V( J1 {3 B& u, i5 `; x
                                get_mtx[i][j]+=left[i][k]*right[k][j];
' Z" A" n4 w) ]9 m* d, [& I" M% `                }2 M/ b2 |, f% h! E
}
- [) p% p" S( R3 {9 C" N//转置矩阵: z2 Q  |/ r/ B3 V
void Project_MatrixGet_Transpose(double mtx[4][4],double transpose_mtx[4][4])$ @  x0 r) O! a& r7 ^( g; |& S
{
2 q, x1 o% |+ L7 b( }2 A  z2 ?        int i,j;
5 L- s8 I  q9 ?3 \        for(i=0;i<4;i++)
  u: Z& z5 z+ p& I        {
: O" |4 Z: W2 w; i! L2 ?8 b: M                for(j=0;j<4;j++)
# r( e& r4 c- `. ?7 N' \                {' @$ I' m- [! K( f% w5 ^
                        transpose_mtx[i][j]=mtx[j][i];# v+ @* l) Y8 m$ L' k- m( z
                }
; V4 [: B# O1 {: W8 F1 u        }6 b/ s; }5 a8 `3 e: M9 M+ o
}
# l) L, }( a- M1 G3 T//从11元组获取变换矩阵, E/ d% l" N4 E9 ^) K* B
void Project_Matrix_Get_From_Move(double translation[3],double point[3],double rotation[3],double angle,double pos[4][4]); K& ]2 J0 t9 ?- U9 `0 h. X$ g
{; O4 ?7 z8 N6 M5 _- R, x, Y* @
8 ]* @  V. d( B* s
        //Project_Matrix_Get_Rotation(rotation,point,angle,pos);; n7 u- x" J& Y  Q2 h6 L) S! A
        int i,j;" F% N' w0 Q( L
        for(i=0;i<4;i++)
  C2 U% I9 N. [# j- j        for(j=0;j<4;j++)
2 s5 q' T4 |  _# F1 B& c                if(i==j)% ^+ B4 S$ g" z/ Q4 ~
                        pos[i][j]=1.0;
2 c- e- O6 `$ I1 N* i3 s- m; H2 k                else
3 z: C8 o8 `- h& ?& d                        pos[i][j]=0.0;
3 O6 w, y  j7 z) V+ R' `        pos[3][0]+=translation[0];
/ P" ?) G1 ]0 L2 n# p- T8 }        pos[3][1]+=translation[1];
+ t" g: o7 X( P7 T. N        pos[3][2]+=translation[2];
, m: G2 i1 y! \2 h1 o% H- q}
3 \- F0 ?6 q* v, i; p% S, d9 \//向量缩放
! z+ ^0 B* @6 d  {* d3 `5 yvoid Project_Vector_Scale(double a[3],double scale,double b[3])9 S: Z# K, }0 A
{& J' s, [# X( _
        b[0]=a[0]*scale;
  m0 `, o- d; s2 t7 k        b[1]=a[1]*scale;0 |7 ~6 N' I) M) S
        b[2]=a[2]*scale;, L- q" o8 q2 X% ?6 j( X& w' x* @
}. B3 g- v/ l% o6 L$ Q8 A9 T
  q+ ^2 ]+ k% `* c  L" w1 L
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了