PLM之家PLMHome-工业软件与AI结合践行者

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

[复制链接]

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

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

admin 楼主

2014-8-25 15:14:54

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

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

x

6 n- q+ z! G4 g6 ~, r& j7 P/ L, H- A9 G3 h! v9 s$ E

, l* }: X2 p# r6 D' v#include <math.h>
" Y4 F3 \- v8 U8 I2 g//矩阵复制
: I- r, w. k/ w# g. pvoid Project_Matrix_Copy(double from_mtx[4][4], double to_mtx[4][4])
. _6 A) k& O. I( {: i/ y{0 Z3 i, a2 ]* H
        int i,j;5 q" K3 A( |  V8 b0 K: t
, }2 X4 z, ~. w! `, [2 a+ v! A
        for(i=0;i<4;i++)6 S) m( N( f+ E' s1 ~
                for(j=0;j<4;j++)3 V" S' |3 t2 R9 ^' a
                        to_mtx[i][j]=from_mtx[i][j];
! Z9 H/ D  U) f! V( [2 S2 ^% j}
" {1 p( T: Y2 t; B1 A1 J//矩阵初始化# v* ~* k( R5 k8 h% Z
void Project_Matrix_Identity(double mtx[4][4])
5 R0 M3 u6 b1 e2 q) f' o( M{
: g4 j2 _! i+ p6 h" d        int i,j;
5 K, w' X% S9 p: ]- A2 o       
+ D2 d# z) R; r2 g( g        for(i=0;i<4;i++)
: G- \2 K2 ]2 w6 [                for(j=0;j<4;j++)
9 n& T, G; V. _4 x1 ]                        if(i==j)
1 t4 y4 u! ]: N9 g* V                                mtx[i][j]=1.0;
, e# e7 a) D: s0 |                        else
+ |1 n3 W0 M* n/ @6 J                                mtx[i][j]=0.0;
2 w: @2 o- ?% a& m; y$ {+ u6 [% G}
3 V' c1 Y$ q- W: ~! U& I//矩阵相乘
7 n% y/ h5 k$ lvoid Project_Matrix_Product(double left_mtx[4][4],double right_mtx[4][4],double get_mtx[4][4])
' T; o8 Y' o! P{
& l' ?( p7 @9 P' u7 [$ o' P
% y1 {. E" l2 r1 L        int i,j,k;0 J( J( R: Q3 l! A& L) I
        double left[4][4],right[4][4];; H" }% [2 E" W  V) U; C/ g$ E1 E
/ }/ [; H' @  l
        Project_Matrix_Copy(left_mtx,left);" U6 ]& N! W" L$ R* G0 P
        Project_Matrix_Copy(right_mtx,right);
8 q* {# z; F9 a+ v        for(i=0;i<4;i++)$ K% i2 G# t) ^) U. G$ V, R
                for(j=0;j<4;j++)6 i8 D+ r6 w7 }. ~+ D' D3 k- i
                {8 [% t2 z& u7 ~* R; f2 S
                        get_mtx[i][j]=0.0;% [4 T6 z2 r1 @4 C! ~5 W: B4 \
                        for(k=0;k<4;k++)
( w% R- Q$ S- b5 v( b# T. D3 o                                get_mtx[i][j]+=left[i][k]*right[k][j];
9 K! J' A( V. H3 y# f) x                }
1 M* s7 u& X  T3 ~' C* U}
- j; u3 s) o& J//转置矩阵
3 @& G, C( w, u6 @4 @# D- Qvoid Project_MatrixGet_Transpose(double mtx[4][4],double transpose_mtx[4][4])8 @" f. ~" q  T. \
{* m4 d5 T+ K  _* b
        int i,j;7 O5 K: j: I, D3 \; u6 U: S
        for(i=0;i<4;i++), b* ]: a$ g' L* v
        {1 r% F9 O2 p8 G3 {8 V1 Y" L
                for(j=0;j<4;j++)
% `& `0 B, D9 L                {
  q: @) j) T7 _: _3 L. ~' Z                        transpose_mtx[i][j]=mtx[j][i];
) A, _; q( n; N& N' g: w8 G6 ]                }3 k* v  u6 Y) c. S3 \! ?2 X
        }
( H# a4 v( [/ [% `}
  ^* n0 t4 p0 m//从11元组获取变换矩阵0 W! o- s  y! h5 t! L# @! r
void Project_Matrix_Get_From_Move(double translation[3],double point[3],double rotation[3],double angle,double pos[4][4])
7 z; I, Y( c- O; g9 ~0 x{" ^5 ?3 B2 e7 X! x3 O5 t. U+ L
. D' ?: ^& o; n$ ^- }7 Q8 ?. E
        //Project_Matrix_Get_Rotation(rotation,point,angle,pos);3 W6 N7 M, P/ h9 K( j* O
        int i,j;
, x/ f' Y$ i9 }2 j' y        for(i=0;i<4;i++), \9 q3 o  n9 z  Z7 Y
        for(j=0;j<4;j++)
* y& \# |% A0 O; s# d: \                if(i==j)1 \4 w3 @$ o1 g1 N
                        pos[i][j]=1.0;, y, N3 z; e3 w7 o3 X( b# ]
                else
" [* j$ ~0 D$ |                        pos[i][j]=0.0;
! x/ E* j7 h9 s- E        pos[3][0]+=translation[0];+ s8 \' |. Q! r! `) M
        pos[3][1]+=translation[1];+ i; |8 K# Z5 T
        pos[3][2]+=translation[2];- E1 U7 l' w6 z' Y" j, C2 I
}
+ ^" }% \# C+ }4 l% ~8 S//向量缩放
) m4 C! E3 G6 s8 \, B2 `: D' Jvoid Project_Vector_Scale(double a[3],double scale,double b[3])
  W% V' e% V9 S+ Y% ?: q1 @" V{& T8 }% V. z$ c5 r
        b[0]=a[0]*scale;
& Z! L5 _1 f6 w" s/ A& \        b[1]=a[1]*scale;0 N& T% h& S  q4 S& D& f5 ~
        b[2]=a[2]*scale;
9 A( {0 M3 D: d  ?}  e8 H# n/ ]& G# }! r) L
7 O/ s  l! f# S7 h4 z$ w
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 doTeam.tech
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 注册

返回列表 本版积分规则

  • 发布新帖

  • 在线客服

  • 微信

  • 客户端

  • 返回顶部

  • x
    温馨提示

    本网站(plmhome.com)为PLM之家工业软件学习官网站

    展示的视频材料全部免费,需要高清和特殊技术支持请联系 QQ: 939801026

    PLM之家NX CAM二次开发专题模块培训报名开始啦

    我知道了