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

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

admin 楼主

2014-8-25 15:14:54

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

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

x
8 h! Y; W" J# |. j3 g2 j

; y4 _) \) S$ D- e8 @, T6 K# E$ W, E! r- r
#include <math.h> 9 n; |8 x, Q% y' Q7 m- p
//矩阵复制$ I3 t& m7 s9 M7 r; L
void Project_Matrix_Copy(double from_mtx[4][4], double to_mtx[4][4])/ h$ M. R; a* s& d# p9 p
{  J6 b7 [+ r3 K; j
        int i,j;7 i7 ?# L4 O# }' _  o
! L) U. M( Z  {" N
        for(i=0;i<4;i++)
8 i% s7 s) q4 A                for(j=0;j<4;j++)
$ m/ ^6 `* {8 E5 B" |4 e# H$ b                        to_mtx[i][j]=from_mtx[i][j];
) p' [, v# ~6 q% _6 V}
9 ], |7 E: D8 h$ [  |" j6 X//矩阵初始化2 P3 e$ ^- w  ]6 L
void Project_Matrix_Identity(double mtx[4][4]), H( i0 I" |6 h6 U& I
{  b, _9 L9 `, G  g/ {
        int i,j;3 P9 z: ~* |) `! F$ c# Q& g% U& m+ N2 m
        0 M; [4 }' u, j, y! t
        for(i=0;i<4;i++)0 F6 v+ @  F5 y' c% Y: s
                for(j=0;j<4;j++)% ?8 r, B. U' H* j0 b. G
                        if(i==j)
+ @/ m* T& W- c                                mtx[i][j]=1.0;
, c7 u+ e+ L( _# i- s. c                        else
5 g! t' c, x+ G5 @7 ?' B                                mtx[i][j]=0.0;0 _$ R; H: `2 X7 {0 h; h) p
}& ~: `; X6 v% ?" K& n
//矩阵相乘6 S" ?- `0 n) L0 X6 p  D
void Project_Matrix_Product(double left_mtx[4][4],double right_mtx[4][4],double get_mtx[4][4])! f6 H: ?. T" U' J* }* U6 d
{+ _6 v* w: U8 B" T. j% \6 z2 C

7 R3 L5 `1 d- l  u9 D        int i,j,k;
. m1 f. v$ a( H) F$ H9 l0 M        double left[4][4],right[4][4];. A$ W, l, o( M, ^. l- q- t

/ R  O+ e) t9 i        Project_Matrix_Copy(left_mtx,left);& k4 C8 ~& X, F# u
        Project_Matrix_Copy(right_mtx,right);
% A" ]! G) w: X' Y. }        for(i=0;i<4;i++)
. w3 C" T2 E. B5 [* N7 C+ M                for(j=0;j<4;j++)
3 U, j0 L6 R" C  j7 R5 r                {
: G' X; G; ?2 v' }5 v) @                        get_mtx[i][j]=0.0;$ J1 x- b; E' Y
                        for(k=0;k<4;k++)! w4 O5 D+ J% b- Y: Q
                                get_mtx[i][j]+=left[i][k]*right[k][j];3 C4 K) W8 U: }& t  F
                }3 [" F* n# L, M" r
}
. L+ i4 p9 ~( i5 ~3 w7 m//转置矩阵, i8 V7 F  F! T% i" |4 o5 ^
void Project_MatrixGet_Transpose(double mtx[4][4],double transpose_mtx[4][4])
+ D; h6 b$ C2 P2 i( y, C{
! Z$ L3 D5 d( |        int i,j;7 M- x. h6 Y# Q3 J4 |# Q
        for(i=0;i<4;i++)
; A$ E) v1 n8 r, \, h        {% H( r4 a* Y: n( O
                for(j=0;j<4;j++)
9 \+ g- q1 c2 L9 `' l" |                {
& d/ |: I5 ]4 Y  x) |) p. k9 F6 ^" i                        transpose_mtx[i][j]=mtx[j][i];
0 M% o7 }+ O3 t1 R* f; k5 ]. J9 G                }2 w7 i. m0 G- n1 {
        }
2 w0 `" @! N( }0 I0 F}
* [' f- H9 h$ p9 S' T5 |' A$ i; M//从11元组获取变换矩阵9 k, s" i, Q8 y# \. Z
void Project_Matrix_Get_From_Move(double translation[3],double point[3],double rotation[3],double angle,double pos[4][4])
/ d6 y  P& p  H  U  }! l0 j{
/ q& o: g' f' @) Z) _6 {
+ k4 V1 M0 Q0 U* l+ j        //Project_Matrix_Get_Rotation(rotation,point,angle,pos);
+ T0 f1 v* J' r- W: d, a  L+ Y        int i,j;
, c* a' s7 z7 L/ F        for(i=0;i<4;i++). S1 j! p- i( C( C% ~/ j* T
        for(j=0;j<4;j++)
+ x$ o; y6 m: O/ V, l9 {; l3 r                if(i==j)
, ^" ?' G5 t" L! D, E  K9 m                        pos[i][j]=1.0;
) ~4 {6 ~- G9 u" l" x8 ~                else
/ A3 h' U  C5 f! W7 D6 q5 c; l                        pos[i][j]=0.0;9 R2 z; l( d9 E
        pos[3][0]+=translation[0];) k3 [4 W6 x" \& @8 k3 H6 N
        pos[3][1]+=translation[1];* S  n9 w$ B5 |
        pos[3][2]+=translation[2];
. o$ W) a# e5 G6 @8 B$ J# b  C}
( D! r$ i; ^0 W* g$ T6 N4 {: e5 F//向量缩放  C: Z$ B0 l; R: y3 \* n
void Project_Vector_Scale(double a[3],double scale,double b[3])) U: T  o( ^0 ]. S( Z
{9 T% s2 B) u" N4 j' @5 M( n! j
        b[0]=a[0]*scale;
: y, T9 p4 c: m0 A0 P        b[1]=a[1]*scale;
2 R: F! W  d# a* }$ k6 o        b[2]=a[2]*scale;
0 p8 x- k) k. @4 x0 n0 X}
5 Z% x3 `( x( v7 ^4 w2 I! A
% q& N; D( ^: D  }
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了