Difference between revisions of "Matrix3D(API)"

From EosPedia
Jump to: navigation, search
(Created page with "General/'''Matrix3D''' is API for 3D Transform Matrix. == constant == Dimension of row and column #define MATRIX_3D_WIDTH 4 #define MATRIX_3D_HEIGHT 4 Initialize Mode(0:...")
 
(Read and Write file)
Line 40: Line 40:
  
 
===Read and Write file===
 
===Read and Write file===
extern void matrix3DFileFormat(FILE* fpt);
+
Read file '''fpt''', and output to '''Matrix'''.
 
  extern void matrix3DFileRead(FILE* fpt, Matrix3D Matrix);
 
  extern void matrix3DFileRead(FILE* fpt, Matrix3D Matrix);
 +
Write '''Matrix''' to file '''fpt'''.
 
  extern void matrix3DFileWrite(FILE* fpt, Matrix3D Matrix);
 
  extern void matrix3DFileWrite(FILE* fpt, Matrix3D Matrix);
 +
Output help to file '''fpt'''.
 +
extern void matrix3DFileFormat(FILE* fpt);
  
 
===Setting of 3D Matrix===
 
===Setting of 3D Matrix===

Revision as of 04:44, 7 October 2014

General/Matrix3D is API for 3D Transform Matrix.

constant

Dimension of row and column

#define MATRIX_3D_WIDTH  4
#define MATRIX_3D_HEIGHT 4

Initialize Mode(0: Not Initialize, 1: Initialize)

#define MATRIX_3D_MODE_NOT_INITIALIZE 0
#define MATRIX_3D_MODE_INITIALIZE 1
#define MATRIX_3D_NEGLECT_VALUE 1e-6

struct

 typedef float matrix3DParaTypeReal;
 typedef matrix3DParaTypeReal Matrix3D[MATRIX_3D_WIDTH][MATRIX_3D_HEIGHT];
 typedef char  matrix3DEulerAngleMode;

API

Initialization of Matrix

Initialize 4x4 Matrix.

extern void matrix3DInit(Matrix3D Matrix);

Convert

Create 4x4 Matrix from Rotation Matrix (2x2).

extern void matrix3DFromRotationMatrix(Matrix3D dst, Array a); 

Inverse Transform

Overwrite as matrix for Inverse Transform .

extern void matrix3DInverse(Matrix3D mat);

Multiply

Multiply of Matrices

extern void matrix3DMultiply(Matrix3D A, Matrix3D B);     /* A = A*B */
extern void matrix3DMultiplyInv(Matrix3D A, Matrix3D B);  /* B = A*B */

Multiply between Vector and Matrix

extern void matrix3DMultiplyVector(floatVector* v, Matrix3D A); 
extern void matrix3DMultiplyVectors(floatVector* vs, int n, Matrix3D A); 

Read and Write file

Read file fpt, and output to Matrix.

extern void matrix3DFileRead(FILE* fpt, Matrix3D Matrix);

Write Matrix to file fpt.

extern void matrix3DFileWrite(FILE* fpt, Matrix3D Matrix);

Output help to file fpt.

extern void matrix3DFileFormat(FILE* fpt);

Setting of 3D Matrix

extern void matrix3DRotationSet(Matrix3D Matrix, char mode, matrix3DParaTypeReal rot, long Mode);
extern void matrix3DTranslationSet(Matrix3D Matrix, matrix3DParaTypeReal rotx, matrix3DParaTypeReal roty, matrix3DParaTypeReal rotz, long mode);
extern void matrix3DRotationSetXYZ(Matrix3D Matrix, matrix3DParaTypeReal rotx, matrix3DParaTypeReal roty, matrix3DParaTypeReal rotz, long mode);
extern void matrix3DRotationSetZYX(Matrix3D Matrix, matrix3DParaTypeReal rotx, matrix3DParaTypeReal roty, matrix3DParaTypeReal rotz, long mode);
extern void matrix3DRotationSetZXY(Matrix3D Matrix, matrix3DParaTypeReal rotx, matrix3DParaTypeReal roty, matrix3DParaTypeReal rotz, long mode);
extern void matrix3DRotationSetYXZ(Matrix3D Matrix, matrix3DParaTypeReal rotx, matrix3DParaTypeReal roty, matrix3DParaTypeReal rotz, long mode);

Specify 3D matrix by Euler Angle

extern void matrix3DRotationSetFollowingEulerAngle(Matrix3D Matrix, const char Mode[4], matrix3DParaTypeReal rot1, matrix3DParaTypeReal rot2, matrix3DParaTypeReal rot3, long mode);
extern void matrix3DRotationAntiSetFollowingEulerAngle(Matrix3D Matrix, const char Mode[4], matrix3DParaTypeReal rot1, matrix3DParaTypeReal rot2, matrix3DParaTypeReal rot3, long mode);
extern void matrix3DEulerAngleGetFromMatrix3D(Matrix3D Matrix, const char Mode[4], matrix3DParaTypeReal* rot1, matrix3DParaTypeReal* rot2, matrix3DParaTypeReal* rot3, long mode);