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

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

admin 楼主

2014-8-25 15:14:54

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

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

x
  K  J# ?- X8 ?! |6 {( z
3 H* G% z$ C8 }/ {
  ?# d1 S' `2 z
#include <math.h>
2 a6 }6 s0 Z7 Q+ z' P2 x7 F: _//矩阵复制# `9 l9 x& x4 c
void Project_Matrix_Copy(double from_mtx[4][4], double to_mtx[4][4])
! ~" s) d3 ~8 _! O{! d5 ^0 W: O+ `: l( V
        int i,j;
8 ?( ]/ J* i  E& ~2 I' E: K  A+ Z
0 a+ U2 m: Z4 u2 y* I        for(i=0;i<4;i++)
3 U  \1 W, H$ y* y2 D                for(j=0;j<4;j++)" J% e  e# q1 v( V# D
                        to_mtx[i][j]=from_mtx[i][j];
- j- O; i+ o' S8 V6 S) g% w}/ {% A  A( o6 E8 ?! b
//矩阵初始化
9 C0 ?# i6 ]! m- Evoid Project_Matrix_Identity(double mtx[4][4])- H  @+ X3 A/ W/ p! A8 A
{3 c' y0 k6 n  J0 B9 L+ V
        int i,j;. a* B0 R) f, C1 w
        1 J; X* b) ]7 d# a$ [
        for(i=0;i<4;i++)% H% u( ~+ ]- [" X
                for(j=0;j<4;j++)
3 ]- o) e* e" _% D# ~                        if(i==j); w) _! R" W( S0 h6 |
                                mtx[i][j]=1.0;
6 |0 U1 h' r6 d. |                        else9 Q0 u) Y, @" y2 X
                                mtx[i][j]=0.0;+ ~* W8 a& b4 e) Y; d) O
}# E: \6 ?( F9 ]# ?3 \5 @: m: I
//矩阵相乘
5 W+ x% a" U) r8 t' h2 u: Evoid Project_Matrix_Product(double left_mtx[4][4],double right_mtx[4][4],double get_mtx[4][4])
1 ]9 F: a/ q' V3 y, N* n( l{' T' o* b6 R7 P0 W9 i4 Q6 J

0 s" l8 `$ e5 i" g" _' o+ Q% h( q        int i,j,k;
3 g/ [3 j7 x8 v: @$ q! P% J% m# x! c        double left[4][4],right[4][4];: s/ X. y$ l4 d: i3 U) [3 H
! D3 c2 C* g6 L5 `: C
        Project_Matrix_Copy(left_mtx,left);" m" b$ K+ q7 C) q5 r
        Project_Matrix_Copy(right_mtx,right);5 x/ i' p: `$ D7 Q4 M
        for(i=0;i<4;i++)
5 |6 q+ H1 |' Z1 B& W- X                for(j=0;j<4;j++)8 O1 s* k" v) r) L# {$ l5 l3 x* d$ n
                {# \9 P) y; N% N- L! U3 m  {5 X
                        get_mtx[i][j]=0.0;
7 o6 F. [; Y8 Y8 m6 o8 X2 r: e" h                        for(k=0;k<4;k++)
6 Y; U8 t  ?- P: N2 l9 n                                get_mtx[i][j]+=left[i][k]*right[k][j];
" A( s7 U1 O2 a; l* D1 J5 k                }
7 q. w1 i5 V! b/ K' e" k1 y7 Z}+ V. H1 V9 L/ ?2 t
//转置矩阵
" T( y/ \) k2 W" evoid Project_MatrixGet_Transpose(double mtx[4][4],double transpose_mtx[4][4])
- u0 [' q* i& {{
/ {& O4 V7 P6 o+ M7 m5 X7 {        int i,j;
9 p- H' X' W( E* V1 p2 i        for(i=0;i<4;i++)
; V$ Q' ^, C, e" }( `        {
& z. a) W) F: q4 s                for(j=0;j<4;j++)* ]9 N. }8 x" \* x
                {
  f$ K/ r( P; U/ V8 i                        transpose_mtx[i][j]=mtx[j][i];
, l4 z4 X1 h. [2 w( O; _5 g                }  W0 H# w4 ^2 H: ]' k6 m& g
        }. |- [' m3 ^" L" h( f$ ~8 m
}5 [* P  U8 Z! }: P' a, r% u. U
//从11元组获取变换矩阵
6 @% @, U6 D% q) a. K) E/ K  l; Wvoid Project_Matrix_Get_From_Move(double translation[3],double point[3],double rotation[3],double angle,double pos[4][4])0 q+ L  ?- o  p7 {% U$ _8 W4 W0 ^
{
8 u& k4 B) a' \" [! y8 P
$ h" ^+ A% i% @8 t# `; R* o        //Project_Matrix_Get_Rotation(rotation,point,angle,pos);7 K. @0 p8 k4 @+ I: N! z. W3 X
        int i,j;! J0 h8 P3 m9 K2 H
        for(i=0;i<4;i++)- b- r2 R  s, w' v# Z& A: |3 m, b2 u
        for(j=0;j<4;j++)! \% J' |) Z& o; u( ~6 B
                if(i==j)
8 R4 z1 r7 S% a3 [/ m                        pos[i][j]=1.0;
, m5 n: A7 @9 D                else
( ?' H/ Z. ^/ m& A5 r$ {# A                        pos[i][j]=0.0;
  n) Y  I! N  Y# K( B        pos[3][0]+=translation[0];
* w0 F7 [% d6 k        pos[3][1]+=translation[1];
  b3 s+ O) _8 r* b$ b        pos[3][2]+=translation[2];
- p+ j+ t4 W$ a  p: }4 z6 Y}) C" \6 K& |  Y; v9 ^' L
//向量缩放
: C- F/ h  n- R7 O: F( I, Svoid Project_Vector_Scale(double a[3],double scale,double b[3])$ t) ^% v/ Y* T8 F+ g8 B& S
{
2 Y  o$ i4 F1 @) f        b[0]=a[0]*scale;
- D7 d( W5 }+ u, S, _* P& W8 W        b[1]=a[1]*scale;
. a- ]5 \/ U8 T( b        b[2]=a[2]*scale;
" o3 `- l: r- Y/ U}2 f, s- q4 a6 o* @
( ^( i3 [& a* N) g+ q+ t, q
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了