Although you needn't be an expert in linear algebra to work with matrices, you should have a passing acquaintance with them. For a refresher in a few of the basics, see 3-D Transformations.
Matrices in Direct3D are represented by a 4×4 homogenous matrix, defined by the D3DMATRIX structure.
The D3D_OVERLOADS implementation of the D3DMATRIX structure (D3DMATRIX (D3D_OVERLOADS)) implements a parentheses ("()") operator. This operator offers convenient access to values in the matrix for C++ programmers. Instead of having to refer to the structure members by name, C++ programmers can refer to them by row and column number, and simply index these numbers as needed. These indices are zero-based, so for example the element in the third row, second column would be M(2, 1). To use the D3D_OVERLOADS operators, you must define D3D_OVERLOADS before including the D3dtypes.h header file.
Also, the D3dutil.cpp source file provides helper functions for creating and concatenating matrices. Feel free to use these functions as they are, or use them as a basis to write your own matrix manipulation functions.
Execute buffer notes When working with execute buffers, matrices appear to you only as handles. These handles (defined by the D3DMATRIXHANDLE type) are used in the D3DOP_MATRIXLOAD and D3DOP_MATRIXMULTIPLY execute buffer opcodes.
You can create a Direct3D matrix by calling the IDirect3DDevice::CreateMatrix method. You can set the contents of a matrix by calling the IDirect3DDevice::SetMatrix method.