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

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

admin 楼主

2014-8-25 15:14:54

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

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

x
- R, A0 X: x. n

" F$ S! C) o9 j) ?
. G* c. ]# v# b1 T3 z) p9 S: \#include <math.h> % }) D# X7 m+ j% v; N# |  J" ^
//矩阵复制
  X* V( E0 c) @- T1 ]; D# Y0 c. v# J4 gvoid Project_Matrix_Copy(double from_mtx[4][4], double to_mtx[4][4])
3 R7 k$ P: ^+ z8 l9 u1 O, x{
' o" {# B' X7 E* f4 }  o0 I( C        int i,j;
" \' X9 V$ \8 k6 ^8 v; e2 |" ]1 ^9 @# j7 a; S/ {
        for(i=0;i<4;i++)! x, l& @0 H, a& B% K1 }9 y1 g
                for(j=0;j<4;j++)! z9 U4 ]- p' g# ?
                        to_mtx[i][j]=from_mtx[i][j];
; D7 W: S; ?1 D* x: G! x* r2 K# ]4 e}
" p: k* [0 U6 B5 L, L//矩阵初始化' C/ c' Q% o$ M
void Project_Matrix_Identity(double mtx[4][4])+ D' s- y/ _0 H3 u$ G% U; e# K3 \
{
: ^* p  I% f) G2 m        int i,j;" x) H5 n! M, A& q3 H$ O
       
0 Q' s9 r1 D" N: c8 R' ?        for(i=0;i<4;i++)/ t' @6 N9 o& U4 V
                for(j=0;j<4;j++)) |% M5 P6 G, Q% d+ Q/ B
                        if(i==j)
: F6 L$ ^# `0 t% a0 D) u! n9 x1 A                                mtx[i][j]=1.0;1 L% E/ l' `1 I
                        else1 r9 W& Q" i+ A6 U! q* U
                                mtx[i][j]=0.0;
5 b! b9 {, _( W0 I( n+ E8 z( m}" `) G/ C# D, d+ ~- r: F0 l
//矩阵相乘
; b, `4 R& W' P8 d" }* G- d$ gvoid Project_Matrix_Product(double left_mtx[4][4],double right_mtx[4][4],double get_mtx[4][4])
( n9 H' x9 Q8 F{7 S- K) @+ G, O2 [4 U) V/ t2 b
  V5 @$ T+ k& [5 G% P. j
        int i,j,k;
: Y+ P& H* Y% E  a6 e# `. u3 _        double left[4][4],right[4][4];
3 X6 `0 _; G: l
) q9 `' H. C" t8 ~% ~3 `        Project_Matrix_Copy(left_mtx,left);3 Y* A( Y0 z  q+ S6 Y. E, e
        Project_Matrix_Copy(right_mtx,right);: M4 V- E3 p& h9 H4 u# T4 U
        for(i=0;i<4;i++)+ ~* W, E7 a; S: u. S" ^' q6 z  F; c
                for(j=0;j<4;j++)/ W8 }! X9 |& t; F, M
                {
1 W- H, i- _! ]) _+ `                        get_mtx[i][j]=0.0;( L- I, H7 ~2 x
                        for(k=0;k<4;k++)
+ L; b) h- _' h: x/ b# A& s                                get_mtx[i][j]+=left[i][k]*right[k][j];
. ]4 t" z8 o$ K1 y3 M                }
( b" m4 F; H! ?) X: t) D( h  y}/ O( d. A) Z1 p3 e% }
//转置矩阵
0 H, I' ~. S/ Q4 Ovoid Project_MatrixGet_Transpose(double mtx[4][4],double transpose_mtx[4][4])7 `$ Z2 R$ _: k& ^' U! S
{
$ \% g8 }4 o, [0 Z- }        int i,j;5 H+ U( y5 w: H0 x; n
        for(i=0;i<4;i++)6 R' y+ Q4 p$ l5 M; I# U
        {
2 K/ u/ @4 ]! m                for(j=0;j<4;j++)
2 Z3 a- x3 g( e) h: D8 r                {7 n$ O1 T# [/ z
                        transpose_mtx[i][j]=mtx[j][i];
% J7 F/ a2 n9 X  g                }2 _' L; B9 g1 M9 ~
        }- E& Y* _8 |, U% f
}
- e- t7 C5 H, w9 y4 J//从11元组获取变换矩阵
. D, ]! p5 z! Y) P  Svoid Project_Matrix_Get_From_Move(double translation[3],double point[3],double rotation[3],double angle,double pos[4][4])1 w& ~+ a- _$ L  ^5 i
{
% Y' V! b  S5 h. A* a& Y$ D$ a+ b: m8 f
        //Project_Matrix_Get_Rotation(rotation,point,angle,pos);0 O3 [5 \( B& N, C2 r
        int i,j;! w* i) |' q& y
        for(i=0;i<4;i++)7 ^/ B8 i. [2 R/ ~9 L( l: i
        for(j=0;j<4;j++)% G6 o; ^8 L* V7 |+ O
                if(i==j)
2 _% r/ |' J, d; i" t+ F9 b                        pos[i][j]=1.0;% G. B  l2 j$ y/ i* J
                else
! ?8 [8 b6 _1 G                        pos[i][j]=0.0;
0 j$ L- ?0 T* \9 ?        pos[3][0]+=translation[0];7 G9 v2 A1 V5 ]
        pos[3][1]+=translation[1];( m9 ?# {7 D3 q) X( f
        pos[3][2]+=translation[2];: A/ K' Z. l0 [- N) z5 A1 ~
}
% J4 I& Y, \& E- q3 H" j//向量缩放( R) u. J* e6 n, D
void Project_Vector_Scale(double a[3],double scale,double b[3]). u  x/ f1 I# v0 T3 p3 F& U, N6 N
{
! R" C! j# g6 e1 W        b[0]=a[0]*scale;# q. W  j( q6 J) t
        b[1]=a[1]*scale;
2 H; L% ~! C5 u        b[2]=a[2]*scale;7 c7 }$ N3 Q9 f& H( F. E3 |' x6 R
}
+ |4 d# P4 ]1 a6 h1 T( d9 }1 Q1 O/ x( i3 C7 T+ R" I
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了