reman3/Rayman_X/cpa/public/GAM/PlayAnim/Interpol/a3x_int.h

126 lines
5.1 KiB
C

/* ***********************************************************************************/
/* * "a3x_int.h" **/
/* * Written by : Sébastien Rubens **/
/* * Tabulations : 4 char **/
/* ***********************************************************************************/
#ifndef A3X_INT_H
#define A3X_INT_H
/* ***********************************************************************************/
enum { eQX, eQY, eQZ, eQW };
#ifndef A3X_INT_C
/* ***********************************************************************************/
/* Precalculations*/
extern void fn_v_InitSinTab( void );
extern signed short ax_SinTab[];
extern tdxQuater4 a4_xQuater1;
/* ***********************************************************************************/
/* Matrices tests*/
extern unsigned short fn_uw_IsDiagonale( tdxMatrix33 _a3a3_xMtx );
extern unsigned short fn_uw_IsOrthogonale( tdxMatrix33 _a3a3_xMtx );
extern unsigned short fn_uw_IsOrthonormee( tdxMatrix33 _a3a3_xMtx );
extern unsigned short fn_uw_IsUnitQuat( tdxQuater4 _a4_xQuat );
extern unsigned short fn_uw_AreSameMatrix( tdxMatrix33 _a3a3_xMtx1,
tdxMatrix33 _a3a3_xMtx2 );
extern unsigned short fn_uw_AreSameQuat( tdxQuater4 _a4_xQuat1,
tdxQuater4 _a4_xQuat2 );
extern unsigned short fn_uw_AreSameVect( tdxVector3 _a3_xVect1,
tdxVector3 _a3_xVect2 );
extern unsigned short fn_uw_CompQuat( tdxQuater4 _a4_xQuat1,
tdxQuater4 _a4_xQuat2 );
extern unsigned short fn_uw_CompVect( tdxVector3 _a3_xVect1,
tdxVector3 _a3_xVect2 );
/* ***********************************************************************************/
/* Miscellaneous matrices operations*/
extern void fn_v_SetIdMatrix( tdxMatrix33 _a3a3_xMatrix );
extern void fn_v_SetZeroVector( tdxVector3 _a3_xVector );
extern void fn_v_SetOneVector( tdxVector3 _a3_xVector );
extern void fn_v_SetIdQuater( tdxQuater4 _a4_xQuater );
extern void fn_v_ExpandQuat( tdxQuater4 _a4_xQuatD,
tdxSShortQuater4 _a4_xQuatS );
extern void fn_v_CopyQuat( tdxQuater4 _a4_xQuatD,
tdxQuater4 _a4_xQuatS );
extern void fn_v_CopyVect( tdxVector3 _a3_xVectD,
tdxVector3 _a3_xVectS );
extern void fn_v_CopyMatrix( tdxMatrix33 _a3a3_xMtxD,
tdxMatrix33 _a3a3_xMtxS );
extern void fn_v_MatrixToVecDia( tdxVector3 _a3_xVec,
tdxMatrix33 _a3a3_xMtx );
extern void fn_v_TranMatrix( tdxMatrix33 _a3a3_xMtxD,
tdxMatrix33 _a3a3_xMtxS );
extern void fn_v_TranMatrixOne( tdxMatrix33 _a3a3_xMtxD );
extern unsigned short fn_uw_AngleBetweenVect( tdxVector3 _a3_xVec1,
tdxVector3 _a3_xVec2 );
extern unsigned short fn_uw_AngleBetweenQuat( tdxQuater4 _a4_xQuat1,
tdxQuater4 _a4_xQuat2 );
extern SEB_xReal fn_x_VectorLength( tdxVector3 _a3_xVect );
extern void fn_v_NormalizeVector( tdxVector3 _a3_xVect );
extern SEB_xReal fn_x_NormalizeVector( tdxVector3 _a3_xVect );
extern SEB_xReal fn_x_QuaterLength( tdxQuater4 _a4_xQuat );
extern SEB_xReal fn_x_NormalizeQuater( tdxQuater4 _a4_xQuat );
/* ***********************************************************************************/
/* Matrices computations*/
extern void fn_v_MatrixByVector( tdxVector3 _a3_xVecD,
tdxMatrix33 _a3a3_xMtxS,
tdxVector3 _a3_xVecS );
extern void fn_v_DiaByMatrix( tdxVector3 _a3a3_xMtxD,
tdxVector3 _a3_xVecS,
tdxMatrix33 _a3a3_xMtxS );
extern void fn_v_MatrixByDia( tdxMatrix33 _a3a3_xMtxD,
tdxMatrix33 _a3a3_xMtxS,
tdxVector3 _a3_xVecS );
extern void fn_v_MultMatrix( tdxMatrix33 _a3a3_xMtxR,
tdxMatrix33 _a3a3_xMtx1,
tdxMatrix33 _a3a3_xMtx2 );
extern void fn_v_InvRotDiaRot( tdxMatrix33 _a3a3_xMtxD,
tdxMatrix33 _a3a3_xMtxS,
tdxVector3 _a3_xVecS );
/* ***********************************************************************************/
/* Matrices / Quaternions conversions*/
extern void fn_v_QuatToMatrix( tdxMatrix33 _a3a3_xMtx,
tdxQuater4 _a4_xQuat );
extern void fn_v_MatrixToQuat( tdxQuater4 _a4_xQuat,
tdxMatrix33 _a3a3_xMtx );
/* ***********************************************************************************/
/* Interpolations computations*/
extern void fn_v_InterpolVect( tdxVector3 _a3_xVecD,
tdxVector3 _a3_xVecS1,
tdxVector3 _a3_xVecS2,
register SEB_xReal _xT );
extern void fn_v_InterpolQuat( tdxQuater4 _a4_xQuatD,
tdxQuater4 _a4_xQuatS1,
tdxQuater4 _a4_xQuatS2,
register SEB_xReal _xT );
extern void fn_v_InterpolQuatWithOmega( tdxQuater4 _a4_xQuatD,
tdxQuater4 _a4_xQuatS1,
tdxQuater4 _a4_xQuatS2,
register SEB_xReal _xT,
register signed short _swOmega );
/* ***********************************************************************************/
#endif
#endif