Setting the Perspective Transformation

The SetPerspectiveProjection function sets the given matrix to a perspective transform for the given half-height and front- and back-clipping planes. This function is called as part of the CreateScene function, documented in Creating the Scene.

static void

SetPerspectiveProjection(LPD3DMATRIX lpd3dMatrix,

double dHalfHeight,

double dFrontClipping,

double dBackClipping)

{

double dTmp1;

double dTmp2;

ASSERT(NULL != lpd3dMatrix);

dTmp1 = dHalfHeight / dFrontClipping;

dTmp2 = dBackClipping / (dBackClipping - dFrontClipping);

lpd3dMatrix->_11 = D3DVAL(2.0);

lpd3dMatrix->_12 = D3DVAL(0.0);

lpd3dMatrix->_13 = D3DVAL(0.0);

lpd3dMatrix->_14 = D3DVAL(0.0);

lpd3dMatrix->_21 = D3DVAL(0.0);

lpd3dMatrix->_22 = D3DVAL(2.0);

lpd3dMatrix->_23 = D3DVAL(0.0);

lpd3dMatrix->_24 = D3DVAL(0.0);

lpd3dMatrix->_31 = D3DVAL(0.0);

lpd3dMatrix->_32 = D3DVAL(0.0);

lpd3dMatrix->_33 = D3DVAL(dTmp1 * dTmp2);

lpd3dMatrix->_34 = D3DVAL(dTmp1);

lpd3dMatrix->_41 = D3DVAL(0.0);

lpd3dMatrix->_42 = D3DVAL(0.0);

lpd3dMatrix->_43 = D3DVAL(-dHalfHeight * dTmp2);

lpd3dMatrix->_44 = D3DVAL(0.0);

}