PLM之家精品课程培训

PLM之家精品课程培训

联系电话:18301858168   |   QQ咨询:939801026
NX二次开发培训

NX二次开发培训

UFUN/NXOpen C++和实战案例

适合初级入门或想深入了解二次开发的工程师,本培训结合ufun,NXOpen C++,大量的实例及官方内部的开发技术。
公众号二维码

关注公众号

点击扫描二维码免费在线高清教程

课程详情
Catia二次开发培训

Catia二次开发培训

市场需求大,掌握核心技术前景广阔

Catia二次开发的市场需求大,人才稀缺。掌握开发技能潜力巨大,随着经验积累将在汽车、航空等领域有所作为。
B站二维码

在线原创B站视频

点击关注工业软件传道士主页

课程详情
Teamcenter培训

Teamcenter培训

全方位培训,从基础应用到高级开发全覆盖

涵盖用户应用基础培训、管理员基础培训、管理员高级培训及二次开发培训等全方位内容,由多年经验讲师打造。
QQ群二维码

加入同行交流

点击扫描二维码加入QQ群

课程详情
×

PLM之家plmhome公众号

课程涵盖: PLM之家所有原创视频

×

关注B站视频

所有高清视频一览无余,全部在线播放学习

×

加入PLM之家QQ群

同行交流,疑问解答,更多互助

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

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

[复制链接]

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

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

admin 楼主

2014-8-25 15:14:54

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

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

x
0 ?4 K! U  f: _7 O' ]0 l: p0 ~

; ?$ a; G; v( E+ S4 I2 T9 P5 h3 w$ x4 M4 d
#include <math.h> 9 z+ }2 h) y* ]& g0 `
//矩阵复制
! J- R; \7 J! k% K* F" z' fvoid Project_Matrix_Copy(double from_mtx[4][4], double to_mtx[4][4])
& k- z1 }4 z- X8 t, O{
9 q7 `6 w# ~/ P& y) }7 a        int i,j;
2 r, p4 e9 R3 J, c9 r% q; }6 t( x; q  y. m
        for(i=0;i<4;i++)
3 Z' s! u6 y7 I1 p                for(j=0;j<4;j++)+ w; g1 S( g- N; @! N5 j
                        to_mtx[i][j]=from_mtx[i][j];
' b- T0 k- }% Y1 Q0 J}
9 ~- s: U1 @" E//矩阵初始化+ y: W. {/ v: v0 p9 j
void Project_Matrix_Identity(double mtx[4][4])
( _. M9 A3 T& j' m( w- {3 X% R{
2 s" D2 D/ Q' X" {. n; z) y* Z1 S. ~        int i,j;
0 L& \/ p# V7 G6 U" K; X% s0 C       
: w/ M" u$ W# r, ~9 T4 f        for(i=0;i<4;i++): w- {& n# m* P. B- H
                for(j=0;j<4;j++)1 [: Z( \2 C* L$ |4 P. W, k
                        if(i==j)
; q  }7 Y9 b4 }" @$ q# q                                mtx[i][j]=1.0;# k. U4 P) g' d- ]1 h7 n
                        else; k8 \: Y0 m5 n# v- o
                                mtx[i][j]=0.0;
  F/ R- H  U. i}6 ?. O- ^6 V" q7 X! j
//矩阵相乘8 m* e3 X4 ~+ o0 b
void Project_Matrix_Product(double left_mtx[4][4],double right_mtx[4][4],double get_mtx[4][4])
$ o1 P( o  R2 \- s  J{
* M- W$ q: P7 t3 g7 P% Y- J( @$ z0 D' H; S; V0 T+ v2 ?5 V
        int i,j,k;
0 e7 z) ]9 S3 ?/ g        double left[4][4],right[4][4];! t. i7 @/ a, E2 m

9 o( `+ ?' C  O" D6 ~        Project_Matrix_Copy(left_mtx,left);
' t% ?) m8 `& ~) l: [        Project_Matrix_Copy(right_mtx,right);$ D; J. K& }2 |6 y9 N
        for(i=0;i<4;i++)0 y9 f) s2 O+ a' t! R
                for(j=0;j<4;j++)
: V0 J3 E( s1 w. d4 B: ^- T' k                {# L/ p  E' H/ }6 Z2 C
                        get_mtx[i][j]=0.0;9 i9 r' S, k2 T) s' b8 K
                        for(k=0;k<4;k++)) `5 K. E+ H& s! R' l! G2 U
                                get_mtx[i][j]+=left[i][k]*right[k][j];
, H; |' I3 ^& o  Q5 |7 T: M                }' E" Y$ j0 k4 Y" j3 u
}2 y8 Q5 A( v% |$ f
//转置矩阵: c2 R* ^9 i2 g& X8 T/ Y
void Project_MatrixGet_Transpose(double mtx[4][4],double transpose_mtx[4][4])
7 Z5 Q1 k& y% ^8 m- V6 _0 a{
% i( n1 I, i) K        int i,j;
1 m  D% v- ^7 O& _        for(i=0;i<4;i++)
1 g  }4 B# u  h  t& X3 O        {% r7 s  _. K2 u" o  N
                for(j=0;j<4;j++)
% b. Y  u3 B+ M; c5 `0 p                {6 }4 l& Z  m7 H4 E' ^$ N
                        transpose_mtx[i][j]=mtx[j][i];$ {, x( Q7 o3 k: e
                }/ k+ w; R; `' v; M
        }; d9 @" e: W) S2 R
}
5 a; e0 i5 B( T* C3 q0 h* y//从11元组获取变换矩阵& J+ v$ `. x1 l* K& ?# j2 c. h0 `
void Project_Matrix_Get_From_Move(double translation[3],double point[3],double rotation[3],double angle,double pos[4][4])5 a8 M% s3 ?; }+ L) |* g/ b0 m) q
{
0 e) l1 o2 V' i9 S3 q$ q0 r  v$ |- K7 V$ R. y7 a
        //Project_Matrix_Get_Rotation(rotation,point,angle,pos);4 t/ P3 T& J# d! `9 @' o9 Z
        int i,j;
4 I5 w* K' {. W, H  Q        for(i=0;i<4;i++)
& \3 l. w: j% K  W/ p        for(j=0;j<4;j++)
9 G$ u* V4 c" \5 m8 ?( d+ R. T                if(i==j)
' a( W9 ]) a5 l                        pos[i][j]=1.0;
# ^; x: J  \: {8 `! w                else. t  o8 i' j6 L
                        pos[i][j]=0.0;
1 t4 w' q- g0 Q- @! b6 |        pos[3][0]+=translation[0];, |0 S7 H+ r1 S8 T  }* Z
        pos[3][1]+=translation[1];
4 P# z: N# o( ~9 o0 L        pos[3][2]+=translation[2];8 d+ d/ I1 D# _' N) c  i# T
}6 `0 N) g5 f4 k3 {1 ]- Q) A
//向量缩放3 R5 Z2 G) \9 |, J* d. G2 F
void Project_Vector_Scale(double a[3],double scale,double b[3])
0 [) Q4 a! w. E. f& ^9 l{& |) I3 x. A2 `( L, X- x5 x
        b[0]=a[0]*scale;6 L8 y8 C) n. D* g3 R" z
        b[1]=a[1]*scale;
- m9 k# n& r+ X: F+ A9 A% q        b[2]=a[2]*scale;, w' Y+ f. S- [4 D
}
+ C+ s/ P" h( r6 a! {2 D/ E& q9 U) A7 j% B3 g
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了