# D3DXMatrixAffineTransformation function (D3dx9math.h)

Builds a 3D affine transformation matrix. NULL arguments are treated as identity transformations.

## Syntax

``````D3DXMATRIX* D3DXMatrixAffineTransformation(
_Inout_       D3DXMATRIX     *pOut,
_In_          FLOAT          Scaling,
_In_    const D3DXVECTOR3    *pRotationCenter,
_In_    const D3DXQUATERNION *pRotation,
_In_    const D3DXVECTOR3    *pTranslation
);
``````

## Parameters

pOut [in, out]

Type: D3DXMATRIX*

Pointer to the D3DXMATRIX structure that is the result of the operation.

Scaling [in]

Type: FLOAT

Scaling factor.

pRotationCenter [in]

Type: const D3DXVECTOR3*

Pointer to a D3DXVECTOR3 structure, a point identifying the center of rotation. If this argument is NULL, an identity Mrc matrix is applied to the formula in Remarks.

pRotation [in]

Type: const D3DXQUATERNION*

Pointer to a D3DXQUATERNION structure that specifies the rotation. If this argument is NULL, an identity Mr matrix is applied to the formula in Remarks.

pTranslation [in]

Type: const D3DXVECTOR3*

Pointer to a D3DXVECTOR3 structure representing the translation. If this argument is NULL, an identity Mₜ matrix is applied to the formula in Remarks.

## Return value

Type: D3DXMATRIX*

Pointer to a D3DXMATRIX structure that is an affine transformation matrix.

## Remarks

This function calculates the affine transformation matrix with the following formula, with matrix concatenation evaluated in left-to-right order:

Mout = Mₛ * (Mrc)⁻¹ * Mr * Mrc * Mₜ

where:

Mout = output matrix (pOut)

Mₛ = scaling matrix (Scaling)

Mrc = center of rotation matrix (pRotationCenter)

Mr = rotation matrix (pRotation)

Mₜ = translation matrix (pTranslation)

The return value for this function is the same value returned in the pOut parameter. In this way, the D3DXMatrixAffineTransformation function can be used as a parameter for another function.

For 2D affine transformations, use D3DXMatrixAffineTransformation2D.

## Requirements

Requirement Value
D3dx9math.h
Library
D3dx9.lib