/******************************************************************************************* File : Matrix.h Date : 24 july 96 I have nothing to say more. ********************************************************************************************/ /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ You must do : #define TDE_GLOBALS in one (and only one) .c file of your Module. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ /* To avoid unnecessary includes : */ #ifndef __TDE_MATRIX_H #define __TDE_MATRIX_H #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ /* For DLLs who are using this module : */ #undef CPA_EXPORT #if defined(CPA_WANTS_IMPORT) #define CPA_EXPORT __declspec(dllimport) #elif defined(CPA_WANTS_EXPORT) #define CPA_EXPORT __declspec(dllexport) #else #define CPA_EXPORT #endif /* For Global declaration in C files : */ #ifndef TDE_GLOBALS #define __TDE_EXTERN extern #else /* !TDE_GLOBALS */ #define __TDE_EXTERN #endif /* !TDE_GLOBALS */ /* ----------------------------------------------------------------------------- INCLUDES FILES : Include here any other header files of your module you need ! Ex : #include "toto.h" Note : Do Not include header files from other Modules (do this in C files only) ----------------------------------------------------------------------------- */ /* ----------------------------------------------------------------------------- CONSTANT DECLARATION: Ex : #define TDE_C_LMAX 100 ----------------------------------------------------------------------------- */ /* ----------------------------------------------------------------------------- TYPES DEFINITION : Declare here any type you need, and constant you need to do this : Ex : typedef struct TDE_tdstToto_ { long aLMAX_lBuffer[TDE_C_LMAX]; ... } TDE_tdst_Toto ; ----------------------------------------------------------------------------- */ /* ----------------------------------------------------------------------------- GLOBAL VARIABLE DECLARATION : Ex : __TDE_EXTERN #ifdef TDE_GLOBALS = #endif ; ----------------------------------------------------------------------------- */ /* ----------------------------------------------------------------------------- FUNCTIONS DECLARATION: ----------------------------------------------------------------------------- */ extern void TDE_vGetTranslateVertexMatrix(TDE_tdsSuperObjectMatrix *p_stMatrix, TDE_tdsVertex *p_stTranslate); extern void TDE_vGetAngleMatrix(TDE_tdsSuperObjectMatrix *p_stMatrix, TDE_tdxAngle *p_xAngle); extern void TDE_vCreateRotationMatrix(TDE_tdsMatrix *p_stMatrix, TDE_tdxAngle xAngle); extern void TDE_vCreateSuperObjectMatrix(TDE_tdsSuperObjectMatrix *p_stMatrix); extern void TDE_vCreateSuperObjectDescendancyMatrices(TDE_tdsSuperObject *p_stSuperObject); extern void TDE_vMulRxSMatrixByVertex(TDE_tdsSuperObjectMatrix *p_stMat, TDE_tdsVertex *p_stV, TDE_tdsVertex *p_stR); extern void TDE_vMulMatrixByVertex(TDE_tdsMatrix *p_stMat, TDE_tdsVertex *p_stV, TDE_tdsVertex *p_stR); extern void TDE_vMulMatrixMatrix(TDE_tdsSuperObjectMatrix *p_stMat1, TDE_tdsSuperObjectMatrix *p_stMat2, TDE_tdsSuperObjectMatrix *p_stResult); extern void TDE_vMulVertexToValue(TDE_tdsVertex *p_stV, TDE_tdxValue xValue, TDE_tdsVertex *p_stResult); extern void TDE_vAddVertexToVertex(TDE_tdsVertex *p_stV1, TDE_tdsVertex *p_stV2, TDE_tdsVertex *p_stResult); extern void TDE_vSubVertexToVertex(TDE_tdsVertex *p_stV1, TDE_tdsVertex *p_stV2, TDE_tdsVertex *p_stResult); extern TDE_tdxValue TDE_xNormeVertex(TDE_tdsVertex *p_stV); extern void TDE_vNormerVertex(TDE_tdsVertex *p_stV, TDE_tdsVertex *p_stResult); extern void ResetMatrixStack(TDE_tdsCamera *stCamera); extern void PushMatrix(TDE_tdsSuperObjectMatrix *p_stMat); extern void PopMatrix(); #ifdef __cplusplus }; #endif /* __cplusplus */ #endif /* __TDE_MATRIX_H */