0001: // ----------------------------------------------------------------------------
0002: //
0003: // matrix.h - 行列計算
0004: // 
0005: // Copyright (c) 2002 今給黎 隆 (imagire@nify.com)
0006: // All Rights Reserved.
0007: //
0008: // ----------------------------------------------------------------------------
0009: 
0010: #ifndef _MATRIX_H_
0011: #define _MATRIX_H_
0012: 
0013: #define IF_PI 3.14159265
0014: 
0015: typedef float ifVector4[4];
0016: 
0017: typedef float ifMatrix[4][4];
0018: 
0019: ifMatrix *ifMatrixIdentity( ifMatrix *pOut );
0020: ifMatrix *ifMatrixIdentity( ifMatrix *pOut );
0021: ifMatrix *ifMatrixMultiply( ifMatrix *pOut
0022:                             , const ifMatrix *pM1
0023:                             , const ifMatrix *pM2
0024:                             ); 
0025: ifMatrix* ifMatrixRotationX( ifMatrix *pOut, float Angle ); 
0026: ifMatrix* ifMatrixRotationY( ifMatrix *pOut, float Angle ); 
0027: ifMatrix* ifMatrixRotationZ( ifMatrix *pOut, float Angle ); 
0028: ifMatrix* ifMatrixScaling( ifMatrix *pOut, float sx, float sy, float sz); 
0029: ifMatrix* ifMatrixTranslation( ifMatrix *pOut, float x, float y, float z ); 
0030: 
0031: ifMatrix* ifMatrixTranspose( ifMatrix *pOut, const ifMatrix *pM );
0032: 
0033: ifVector4* ifVec4Add( ifVector4* pOut,
0034:                       const ifVector4* pV1,
0035:                       const ifVector4* pV2
0036:                     ); 
0037: 
0038: ifVector4* ifVec4Normalize( ifVector4 *pOut, const ifVector4 *pV ); 
0039: ifVector4* ifVec4Transform( ifVector4 *pOut
0040:                             , const ifVector4 *pIn, const ifMatrix *pM ); 
0041: #endif // !_MATRIX_H_
0042: