//=================================================================
//
// Copyright (c) Microsoft Corporation 1999 - All Rights Reserved.
//
//=================================================================

#ifndef _3D_MATH_
#define _3D_MATH_

void Identity4x4Matrix(D3DMATRIX * pmtxDst);
void Mult4x4Matrix(D3DMATRIX * pmtxSrc1, D3DMATRIX * pmtxSrc2, D3DMATRIX * pmtxDst);
void Inverse4x4Matrix(D3DMATRIX * pmtxSrc, D3DMATRIX * pmtxDst);

void NormalizeVector(D3DVECTOR * pvctSrcDst);
void NormalizeVector(D3DVECTOR * pvctSrc, D3DVECTOR * pvctDst);

void ScaleVector(D3DVECTOR * pvctSrcDst, D3DVALUE dvScale);
void ScaleVector(D3DVECTOR * pvctSrc, D3DVALUE dvScale, D3DVECTOR * pvctDst);

void InverseTranslateVector(D3DVECTOR * pvctSrcDst, D3DMATRIX * pmtxSrc);
void InverseTranslateVector(D3DVECTOR * pvctSrc, D3DMATRIX * pmtxSrc, D3DVECTOR * pvctDst);

void InverseRotateVector(D3DVECTOR * pvctSrcDst, D3DMATRIX * pmtxSrc);
void InverseRotateVector(D3DVECTOR * pvctSrc, D3DMATRIX * pmtxSrc, D3DVECTOR * pvctDst);

void InverseTransformVector(D3DVECTOR * pvctSrcDst, D3DMATRIX * pmtxSrc);
void InverseTransformVector(D3DVECTOR * pvctSrc, D3DMATRIX * pmtxSrc, D3DVECTOR * pvctDst);

#endif
