⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 matrix.h

📁 allows the user to select files containing objects and draw them using one of the available project
💻 H
字号:
#ifndef MATRIX_H_
#define MATRIX_H_


#include <string.h>

#include "point3d.h"

/********************
 * ATENTION **********
 ********************
 * The matrixes are accessed as in math, [line][colune].
 */

typedef double MATRIX_4x4 [4][4];
typedef double *PMATRIX_4x4;



/*
 * Sets the matrix with NULL values.
 */
#define MatrixClear(pMatrix_4x4)  (memset (pMatrix_4x4, 0, sizeof (double) * 4 * 4))

/*
 * Builds a translation Matrix
 * It's like operator T (dX, dY, dZ)
 */
PMATRIX_4x4 MatrixTranslation (double deltaX, double deltaY, double deltaZ, MATRIX_4x4 pDest);

/*
 * Builds a scale Matrix
 * It's like operator S (dX, dY, dZ)
 */
PMATRIX_4x4 MatrixScale (double deltaX, double deltaY, double deltaZ, MATRIX_4x4 pDest);

/*
 * Builds a rotation matrix around XX axis.
 * The angle is in degrees.
 * It's like operator Rx (alfa)
 */
PMATRIX_4x4 MatrixRotateX (double dAngle, MATRIX_4x4 pDest);

/*
 * Builds a rotation matrix around YY axis.
 * The angle is in degrees.
 * It's like operator Ry (alfa)
 */
PMATRIX_4x4 MatrixRotateY (double dAngle, MATRIX_4x4 pDest);

/*
 * Builds a rotation matrix around ZZ axis.
 * The angle is in degrees.
 * It's like operator Rz (alfa)
 */
PMATRIX_4x4 MatrixRotateZ (double dAngle, MATRIX_4x4 pDest);


/*
 * Builds a projection matrix for main view.
 */
PMATRIX_4x4 MatrixFront (MATRIX_4x4 pMatrix);

/*
 * Constroi uma matriz de proje玢o para o al鏰do lateral.
 */
PMATRIX_4x4 MatrixSide (MATRIX_4x4 pDest);


/*
 * Builds a projection matrix for top view.
 */
PMATRIX_4x4 MatrixAbove (MATRIX_4x4 pDest);

/*
 * Builds a projection matrix for oblique view.
 */
PMATRIX_4x4 MatrixOblique (MATRIX_4x4 pDest, double dFactor, double dAngle);


/*
 * Builds a projection matrix for perpective view.
 */
PMATRIX_4x4 MatrixPerspective (MATRIX_4x4 pDest, double dDistance);

/*
 * Builds a projection matrix for axonometric view.
 */
PMATRIX_4x4 MatrixAxonometric (MATRIX_4x4 pDest, double dA, double dB);


/*
 * Multiplies 2 matrixes.
 */
PMATRIX_4x4 MatrixMultiply (MATRIX_4x4 pLeft, MATRIX_4x4 pRight, MATRIX_4x4 pDest);

/*
 * Multiplies a matrix with a 3D point.
 */
PPOINT_3D MatrixMultiplyPoint (const MATRIX_4x4 pMatrix, const PPOINT_3D pPoint, PPOINT_3D pDest);


#endif /* MATRIX_H_ */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -