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

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

admin 楼主

2014-8-25 15:14:54

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

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

x
: I- j4 ?: q' a2 o/ j

0 v( o0 P1 l4 {
' g' [* K/ ?. ]. i3 P# x2 P#include <math.h> ' L! s( }7 W5 m) }, T4 s
//矩阵复制
; `2 S3 _6 U# e9 F# }* Jvoid Project_Matrix_Copy(double from_mtx[4][4], double to_mtx[4][4])8 }# q3 E4 [0 v+ j
{
7 R7 a+ p  n# s7 H4 i        int i,j;
" w' [& X% x, J- E# N
! A- Q2 e/ c( R- \' P        for(i=0;i<4;i++)$ p4 s( W6 n  {' k
                for(j=0;j<4;j++)6 z  |+ F3 [& I
                        to_mtx[i][j]=from_mtx[i][j];* O) B: c' p6 D) o
}
3 I+ D8 o: L, W( v5 f//矩阵初始化
" W1 i  U1 a& j  f# nvoid Project_Matrix_Identity(double mtx[4][4])
; U$ G& a3 f$ D: o3 a{( y& U8 y) E& V0 O. k
        int i,j;
* |* M6 {3 [( M$ }& f# y! h        : n* r$ g3 i# T1 n! d
        for(i=0;i<4;i++)
* o1 K1 ]* C$ x3 \9 n. u: L- Z; t7 C                for(j=0;j<4;j++). ?9 j& @7 X& h7 g5 k9 t
                        if(i==j)
. J$ {: N8 h( D( ~                                mtx[i][j]=1.0;+ H/ K! Y9 [; C* n) _) J/ T; R
                        else
7 o- W" R1 s% p- p                                mtx[i][j]=0.0;
* {( P, i; u( L1 ^6 S}. V; Z- I$ a- L( q9 K4 u
//矩阵相乘
  i8 ^) O5 R# p. s/ U. D, wvoid Project_Matrix_Product(double left_mtx[4][4],double right_mtx[4][4],double get_mtx[4][4])5 [+ `$ @* p! k! c# R) M
{
4 C) \% I: C% v- O& p1 d$ C3 ^+ A
3 w( c% W' x8 {  Q        int i,j,k;1 u: i+ U3 N8 `9 Z# H
        double left[4][4],right[4][4];
1 p9 F# Q- C4 u+ s0 \- A1 R4 J. f5 }; P
        Project_Matrix_Copy(left_mtx,left);" W# K7 m, N' U# Y+ \% z
        Project_Matrix_Copy(right_mtx,right);
$ A- D, |7 D7 G5 U        for(i=0;i<4;i++)/ m$ w" Q7 V4 C2 J
                for(j=0;j<4;j++)3 u  |% J4 N, b$ w" r3 k
                {
! w/ v, \: B- g                        get_mtx[i][j]=0.0;$ M0 J/ P0 M+ Q3 L8 i
                        for(k=0;k<4;k++)3 {# ]( Y4 b* |  G/ Q: E1 l
                                get_mtx[i][j]+=left[i][k]*right[k][j];1 c$ m; _" }! f. _$ r
                }3 u0 j: k( u+ u, |8 d- U
}
. u8 F3 X5 _) A. o1 X: {0 g  ?//转置矩阵& X% o0 I: C/ |, z( W: Q- t
void Project_MatrixGet_Transpose(double mtx[4][4],double transpose_mtx[4][4])
  _6 a" \+ ?4 i; x: _- T5 n# b! |{/ G* ]( f, p/ @" T, e# n+ L
        int i,j;1 g) P8 J) r! ?8 ?: Q  _6 k
        for(i=0;i<4;i++)
' \7 h3 R9 `, k1 U        {2 O$ r+ p5 x9 t; j' G8 \3 X
                for(j=0;j<4;j++)
/ l2 Z* u9 i- B                {
9 J$ f" s/ D! H1 p                        transpose_mtx[i][j]=mtx[j][i];: E" |' C4 {5 l, z
                }$ o1 e" a# b' L! h/ }1 r
        }0 M! T( L4 ^1 v# u8 w. C- w
}$ a, @% g2 ~* D
//从11元组获取变换矩阵
$ C" V# J8 Q8 r* ~void Project_Matrix_Get_From_Move(double translation[3],double point[3],double rotation[3],double angle,double pos[4][4])
7 [0 ?" }  ?/ K5 q8 a& m9 d{
' w  E4 Q! H0 B& a: y
' }7 r" |5 K2 A% B/ ^; i6 D  J        //Project_Matrix_Get_Rotation(rotation,point,angle,pos);
6 ?+ y9 {$ u# @' r" ]: b        int i,j;) q. f" ?; m1 z: f% S0 ~
        for(i=0;i<4;i++)
$ k5 U5 D+ _. D% e        for(j=0;j<4;j++)
& O; ?. A4 I; H; y  F                if(i==j). ^5 h5 Z8 X; n  N1 B
                        pos[i][j]=1.0;
$ @* \% H% a( g! [8 k8 z( H                else
+ S- G3 v, O1 C& u' s* ]% g                        pos[i][j]=0.0;. ]3 r$ c' S7 f2 P- l  [4 x
        pos[3][0]+=translation[0];
% }% v* U# g* I, {7 |        pos[3][1]+=translation[1];
% k* `5 H; N3 `, \/ j/ M8 j        pos[3][2]+=translation[2];6 o2 ^1 d9 G5 a; c6 Q
}. W& c: Z+ f2 @& {5 V# S( w
//向量缩放
  J: N: _! w+ A" {void Project_Vector_Scale(double a[3],double scale,double b[3])) n  h+ I: C! z7 n0 V( \$ e
{
( i6 J" k; l& r" R4 \) P        b[0]=a[0]*scale;
# h& |; g: V( h6 a; F1 y        b[1]=a[1]*scale;
& X+ J1 R" d" m7 E2 Y) H2 j        b[2]=a[2]*scale;
4 p" m7 Q8 k. W! }5 }}0 x; H% Y( D* w7 U# O

' v$ e; x! e1 |. B# Q2 p3 `
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了