- The Structure
- Members
- Arithmetic
- BrMatrix34Mul()
- BrMatrix34Inverse()
- BrMatrix34LPInverse()
- BrMatrix34Apply()
- BrMatrix34ApplyP()
- BrMatrix34ApplyV()
- BrMatrix34TApply()
- BrMatrix34TApplyP()
- BrMatrix34TApplyV()
- BrMatrix34Pre()
- BrMatrix34PreTranslate()
- BrMatrix34PreScale()
- BrMatrix34PreShearX()
- BrMatrix34PreShearY()
- BrMatrix34PreShearZ()
- BrMatrix34PreRotate()
- BrMatrix34PreRotateX()
- BrMatrix34PreRotateY()
- BrMatrix34PreRotateZ()
- BrMatrix34PreTransform()
- BrMatrix34Post()
- BrMatrix34PostTranslate()
- BrMatrix34PostScale()
- BrMatrix34PostShearX()
- BrMatrix34PostShearY()
- BrMatrix34PostShearZ()
- BrMatrix34PostRotate()
- BrMatrix34PostRotateX()
- BrMatrix34PostRotateY()
- BrMatrix34PostRotateZ()
- BrMatrix34PostTransform()
- Conversion
- BrMatrix34ToEuler()
- BrMatrix34ToQuat()
- BrMatrix34ToTransform()
- Copy/Assign
- BrMatrix34Copy()
- BrMatrix34Copy4()
- Access & Maintenance
- BrMatrix34LPNormalise()
- Referencing & Lifetime
- Initialisation
- BrMatrix34Identity()
- BrMatrix34Translate()
- BrMatrix34Scale()
- BrMatrix34ShearX()
- BrMatrix34ShearY()
- BrMatrix34ShearZ()
- BrMatrix34RotateX()
- BrMatrix34RotateY()
- BrMatrix34RotateZ()
- BrMatrix34Rotate()

** br_matrix34**

Note that this is effectively used as a 44 matrix, but omitting the redundant, fourth column for storage purposes. Thus:

It is applied to homogenous 3D co-ordinates, which similarly omit the fourth element for sake of economy.

It can be noted that the bottom row has a translational effect. Also note, that the matrix determinant represents the volume change effected.

`typedef`

`matrix.h `

for precise declaration and ordering)
**br_scalar m[4][3] Four rows of three columns**

`BrActorToActorMatrix34()`

.

`BrMatrix4Pre34()`

, `BrMatrix4Copy34()`

.

`BrMatrix34RollingBall()`

.

`br_matrix4`

, `br_material`

, `br_pick3d_cbfn`

.`br_scalar m[4][3]`

This matrix can also be thought of as an array of four `br_vector3`

*356*` structures, e.g. `

`br_vector3 m[4]`

. Thus `m[row]`

can be cast as `(br_vector3*)`

.

**BrMatrix34Mul()**

Declaration:

**void BrMatrix34Mul(br_matrix34* A, const br_matrix34* B, const br_matrix34* C)**

Arguments:

**br_matrix34 * A**

A pointer to the destination matrix (must be different from both sources).

**const br_matrix34 * B**

Pointer to the left hand source matrix.

**const br_matrix34 * C**

Pointer to the right hand source matrix.

Remarks: The result in

`A `

is equivalent to the following:

See Also:

`BrMatrix34Pre()`

, `BrMatrix34Post()`

**BrMatrix34Inverse()**

Declaration:

**br_scalar BrMatrix34Inverse(br_matrix34* A, const br_matrix34* B)**

Arguments:

**br_matrix34 * A**

A pointer to the destination matrix (must be different from source).

**const br_matrix34 * B**

A pointer to the source matrix.

Result:

**br_scalar**

If the inverse exists, the determinant of the source matrix is returned. If there is no inverse, scalar zero is returned.

Remarks: Remember that while an inverse may be obtained using

`double `

precision arithmetic, this does not necessarily mean that it can using the `br_scalar`

type. This difference is most marked between fixed and floating point BRender libraries.See Also:

`BrMatrix34LPInverse()`

.

**BrMatrix34LPInverse()**

Equivalent to the expression:

Declaration:

**void BrMatrix34LPInverse(br_matrix34* A, const br_matrix34* B)**

Arguments:

**br_matrix34 * A**

A pointer to the destination matrix (must be different from source).

**const br_matrix34 * B**

A pointer to the source matrix.

See Also:

`BrMatrix34Inverse()`

.

**BrMatrix34Apply()**

Declaration:

**void BrMatrix34Apply(br_vector3* A, const br_vector4* B, const br_matrix34* C)**

Arguments:

**br_vector3**

**2* * A

A pointer to the destination vector (must be different from source, and not part of transform), to hold the transformed point.

**const br_vector4 * B**

A pointer to the source vector, holding the point to be transformed.

**const br_matrix34 * C**

A pointer to the transform matrix to be applied.

Remarks: Be aware that the fourth element of the resulting vector is only implicit, and if required must either be copied (if the destination is actually a

`br_vector4`

) or used to scale down the first three elements. This all depends on the purpose for which this function is called.
The result in `A `

is equivalent to the following:

**BrMatrix34ApplyP()**

Declaration:

**void BrMatrix34ApplyP(br_vector3* A, const br_vector3* B, const br_matrix34* C)**

Arguments:

**br_vector3 * A**

A pointer to the destination vector (must be different from source, and not part of transform), to hold the transformed point.

**const br_vector3 * B**

A pointer to the source vector, holding the point to be transformed.

**const br_matrix34 * C**

A pointer to the transform matrix to be applied.

Remarks: The result in

`A `

is equivalent to the following:

**BrMatrix34ApplyV()**

Declaration:

**void BrMatrix34ApplyV(br_vector3* A, const br_vector3* B, const br_matrix34* C)**

Arguments:

**br_vector3 * A**

A pointer to the destination vector (must be different from source, and not part of transform), to hold the transformed vector.

**const br_vector3 * B**

A pointer to the source vector, holding the vector to be transformed.

**const br_matrix34 * C**

A pointer to the transform matrix to be applied.

Remarks: The result in

`A `

is equivalent to the following:

**BrMatrix34TApply()**

Declaration:

**void BrMatrix34TApply(br_vector4* A, const br_vector4* B, const br_matrix34* C)**

Arguments:

**br_vector4 * A**

A pointer to the destination vector (must be different from source), to hold the transformed point.

**const br_vector4 * B**

A pointer to the source vector, holding the point to be transformed.

**const br_matrix34 * C**

A pointer to the transform matrix to be applied transposed.

Remarks: The result in

`A `

is equivalent to the following:

**BrMatrix34TApplyP()**

Declaration:

**void BrMatrix34TApplyP(br_vector3* A, const br_vector3* B, const br_matrix34* C)**

Arguments:

**br_vector3 * A**

A pointer to the destination vector (must be different from source, and not part of transform), to hold the transformed point.

**const br_vector3 * B**

A pointer to the source vector, holding the point to be transformed.

**const br_matrix34 * C**

A pointer to the transform matrix to be applied transposed - the translation elements are presumed zero or irrelevant.

Remarks: The result in

`A `

is equivalent to the following:

**BrMatrix34TApplyV()**

Declaration:

**void BrMatrix34TApplyV(br_vector3* A, const br_vector3* B, const br_matrix34* C)**

Arguments:

**br_vector3 * A**

A pointer to the destination vector (must be different from source, and not part of transform), to hold the transformed vector.

**const br_vector3 * B**

A pointer to the source vector, holding the vector to be transformed.

**const br_matrix34 * C**

A pointer to the transform matrix to be applied transposed - the translation elements are presumed zero or irrelevant.

Remarks: The result in

`A `

is equivalent to the following:

**BrMatrix34Pre()**

Declaration:

**void BrMatrix34Pre(br_matrix34* A, const br_matrix34* B)**

Arguments:

**br_matrix34 * A**

A pointer to the subject matrix (may be same as `B`

).

**const br_matrix34 * B**

A pointer to the pre-multiplying matrix.

See Also:

`BrMatrix34Post()`

, `BrMatrix34Mul()`

**BrMatrix34PreTranslate()**

Declaration:

**void BrMatrix34PreTranslate(br_matrix34* mat, br_scalar dx, br_scalar dy, br_scalar dz)**

Arguments:

**br_matrix34 * mat**

A pointer to the subject matrix.

**br_scalar dx**

The x axis component used to form the translation matrix.

**br_scalar dy**

The y axis component used to form the translation matrix.

**br_scalar dz**

The z axis component used to form the translation matrix.

See Also:

`BrMatrix34PostTranslate()`

, `BrMatrix34Translate()`

**BrMatrix34PreScale()**

Declaration:

**void BrMatrix34PreScale(br_matrix34* mat, br_scalar sx, br_scalar sy, br_scalar sz)**

Arguments:

**br_matrix34 * mat**

A pointer to the subject matrix.

**br_scalar sx**

Scaling component along the x axis.

**br_scalar sy**

Scaling component along the y axis.

**br_scalar sz**

Scaling component along the z axis.

See Also:

`BrMatrix34PostScale()`

, `BrMatrix34Scale()`

**BrMatrix34PreShearX()**

Declaration:

**void BrMatrix34PreShearX(br_matrix34* mat, br_scalar sy, br_scalar sz)**

Arguments:

**br_matrix34 * mat**

A pointer to the subject matrix.

**br_scalar sy**

Shear factor by which the x co-ordinate is included in the transformed y co-ordinate.

**br_scalar sz**

Shear factor by which the x co-ordinate is included in the transformed z co-ordinate.

See Also:

`BrMatrix34PostShearX()`

, `BrMatrix34ShearX()`

**BrMatrix34PreShearY()**

Declaration:

**void BrMatrix34PreShearY(br_matrix34* mat, br_scalar sx, br_scalar sz)**

Arguments:

**br_matrix34 * mat**

A pointer to the subject matrix.

**br_scalar sx**

Shear factor by which the y co-ordinate is included in the transformed x co-ordinate.

**br_scalar sz**

Shear factor by which the y co-ordinate is included in the transformed z co-ordinate.

See Also:

`BrMatrix34PostShearY()`

, `BrMatrix34ShearY()`

**BrMatrix34PreShearZ()**

Declaration:

**void BrMatrix34PreShearY(br_matrix34* mat, br_scalar sx, br_scalar sy)**

Arguments:

**br_matrix34 * mat**

A pointer to the subject matrix.

**br_scalar sx**

Shear factor by which the z co-ordinate is included in the transformed x co-ordinate.

**br_scalar sy**

Shear factor by which the z co-ordinate is included in the transformed y co-ordinate.

See Also:

`BrMatrix34PostShearZ()`

, `BrMatrix34ShearZ()`

**BrMatrix34PreRotate()**

Declaration:

**void BrMatrix34PreRotate(br_matrix34* mat, br_angle r, const br_vector3* axis)**

Arguments:

**br_matrix34 * mat**

A pointer to the subject matrix.

**br_angle r**

The angle about the specified axis used to form the rotation matrix. A positive angle represents a clockwise rotation (with the vector pointing at you).

**const br_vector3***

The arbitrary (normalised) axis vector about which the rotation occurs.

See Also:

`BrMatrix34PostRotate()`

, `BrMatrix34Rotate()`

**BrMatrix34PreRotateX()**

Declaration:

**void BrMatrix34PreRotateX(br_matrix34* mat, br_angle rx)**

Arguments:

**br_matrix34 * mat**

A pointer to the subject matrix.

**br_angle rx**

The angle about the x axis used to form the rotation matrix. A positive angle represents a clockwise rotation (looking toward the origin).

See Also:

`BrMatrix34PostRotateX()`

, `BrMatrix34RotateX()`

**BrMatrix34PreRotateY()**

Declaration:

**void BrMatrix34PreRotateY(br_matrix34* mat, br_angle ry)**

Arguments:

**br_matrix34 * mat**

A pointer to the subject matrix.

**br_angle ry**

The angle about the y axis used to form the rotation matrix. A positive angle represents a clockwise rotation (looking towards the origin).

See Also:

`BrMatrix34PostRotateY()`

, `BrMatrix34RotateY()`

**BrMatrix34PreRotateZ()**

Declaration:

**void BrMatrix34PreRotateZ(br_matrix34* mat, br_angle rz)**

Arguments:

**br_matrix34 * mat**

A pointer to the subject matrix.

**br_angle rz**

The angle about the z axis used to form the rotation matrix. A positive angle represents a clockwise rotation (looking towards the origin).

See Also:

`BrMatrix34PostRotateZ()`

, `BrMatrix34RotateZ()`

**BrMatrix34PreTransform()**

Declaration:

**void BrMatrix34PreTransform(br_matrix34* mat, const br_transform* xform)**

Arguments:

**br_matrix34 * mat**

A pointer to the subject matrix.

**const br_transform * xform**

The pre-multiplying generic transform.

Effects: The transform is first converted to a general 3x4 transform matrix using

`BrTransformToMatrix34()`

` `

and then applied as a pre-multiplying matrix using `BrMatrix34Pre()`

.See Also:

`BrMatrix34PostTransform()`

.

**BrMatrix34Post()**

Declaration:

**void BrMatrix34Post(br_matrix34* A, const br_matrix34* B)**

Arguments:

**br_matrix34 * A**

A pointer to the subject matrix (may be same as `B`

).

**const br_matrix34 * B**

A pointer to the post-multiplying matrix.

See Also:

`BrMatrix34Pre()`

, `BrMatrix34Mul()`

**BrMatrix34PostTranslate()**

Declaration:

**void BrMatrix34PostTranslate(br_matrix34* mat, br_scalar dx, br_scalar dy, br_scalar dz)**

Arguments:

**br_matrix34 * mat**

A pointer to the subject matrix.

**br_scalar dx**

The x axis component used to form the translation matrix.

**br_scalar dy**

The y axis component used to form the translation matrix.

**br_scalar dz**

The z axis component used to form the translation matrix.

See Also:

`BrMatrix34PreTranslate()`

, `BrMatrix34Translate()`

**BrMatrix34PostScale()**

Declaration:

**void BrMatrix34PostScale(br_matrix34* mat, br_scalar sx, br_scalar sy, br_scalar sz)**

Arguments:

**br_matrix34 * mat**

A pointer to the subject matrix.

**br_scalar sx**

Scaling component along the x axis.

**br_scalar sy**

Scaling component along the y axis.

**br_scalar sz**

Scaling component along the z axis.

See Also:

`BrMatrix34PreScale()`

, `BrMatrix34Scale()`

**BrMatrix34PostShearX()**

Declaration:

**void BrMatrix34PostShearX(br_matrix34* mat, br_scalar sy, br_scalar sz)**

Arguments:

**br_matrix34 * mat**

A pointer to the subject matrix.

**br_scalar sy**

Shear factor by which the x co-ordinate is included in the transformed y co-ordinate.

**br_scalar sz**

Shear factor by which the x co-ordinate is included in the transformed z co-ordinate.

See Also:

`BrMatrix34PreShearX()`

, `BrMatrix34ShearX()`

**BrMatrix34PostShearY()**

Declaration:

**void BrMatrix34PostShearY(br_matrix34* mat, br_scalar sx, br_scalar sz)**

Arguments:

**br_matrix34 * mat**

A pointer to the subject matrix.

**br_scalar sx**

Shear factor by which the y co-ordinate is included in the transformed x co-ordinate.

**br_scalar sz**

Shear factor by which the y co-ordinate is included in the transformed z co-ordinate.

See Also:

`BrMatrix34PreShearY()`

, `BrMatrix34ShearY()`

**BrMatrix34PostShearZ()**

Declaration:

**void BrMatrix34PostShearY(br_matrix34* mat, br_scalar sx, br_scalar sy)**

Arguments:

**br_matrix34 * mat**

A pointer to the subject matrix.

**br_scalar sx**

Shear factor by which the z co-ordinate is included in the transformed x co-ordinate.

**br_scalar sy**

Shear factor by which the z co-ordinate is included in the transformed y co-ordinate.

See Also:

`BrMatrix34PreShearZ()`

, `BrMatrix34ShearZ()`

**BrMatrix34PostRotate()**

Declaration:

**void BrMatrix34PostRotate(br_matrix34* mat, br_angle r, const br_vector3* axis)**

Arguments:

**br_matrix34 * mat**

A pointer to the subject matrix.

**br_angle r**

The angle about the specified axis used to form the rotation matrix.

**const br_vector3***

The arbitrary (normalised) axis vector about which the rotation occurs.

See Also:

`BrMatrix34PreRotate()`

, `BrMatrix34Rotate()`

**BrMatrix34PostRotateX()**

Declaration:

**void BrMatrix34PostRotateX(br_matrix34* mat, br_angle rx)**

Arguments:

**br_matrix34 * mat**

A pointer to the subject matrix.

**br_angle rx**

The angle about the x axis used to form the rotation matrix. A positive angle represents a clockwise rotation (looking towards the origin).

See Also:

`BrMatrix34PreRotateX()`

, `BrMatrix34RotateX()`

**BrMatrix34PostRotateY()**

Declaration:

**void BrMatrix34PostRotateY(br_matrix34* mat, br_angle ry)**

Arguments:

**br_matrix34 * mat**

A pointer to the subject matrix.

**br_angle ry**

The angle about the y axis used to form the rotation matrix. A positive angle represents a clockwise rotation (looking towards the origin).

See Also:

`BrMatrix34PreRotateY()`

, `BrMatrix34RotateY()`

**BrMatrix34PostRotateZ()**

Declaration:

**void BrMatrix34PostRotateZ(br_matrix34* mat, br_angle rz)**

Arguments:

**br_matrix34 * mat**

A pointer to the subject matrix.

**br_angle rz**

The angle about the z axis used to form the rotation matrix. A positive angle represents a clockwise rotation (looking towards the origin).

See Also:

`BrMatrix34PreRotateZ()`

, `BrMatrix34RotateZ()`

**BrMatrix34PostTransform()**

Declaration:

**void BrMatrix34PostTransform(br_matrix34* mat, const br_transform* xform)**

Arguments:

**br_matrix34 * mat**

A pointer to the subject matrix.

**const br_transform * xform**

The post-multiplying generic transform.

Effects: The transform is first converted to a general 3x4 transform matrix using

`BrTransformToMatrix34()`

` `

and then applied as a post-multiplying matrix using `BrMatrix34Post()`

.See Also:

`BrMatrix34PreTransform()`

.

`BrEulerToMatrix34()`

, `BrQuatToMatrix34()`

, `BrTransformToMatrix34()`

.
Also see `BrTransformToTransform()`

*343*`.`

`BrMatrix34ToEuler()`

, `BrMatrix34ToQuat()`

, `BrMatrix34ToTransform()`

as described below.
Also see `BrTransformToTransform()`

*343*`.`

**BrMatrix34ToEuler()**

Declaration:

**br_euler* BrMatrix34ToEuler(br_euler* euler, const br_matrix34* mat)**

Arguments:

**br_euler * euler**

A pointer to the destination Euler angle set to receive the conversion. The Euler angle set's Euler order is used to determine each angle.

**const br_matrix34 * mat**

A pointer to the source matrix to convert from.

Result:

**br_euler ***

Returns `euler `

for convenience.

Remarks: Translation components of the matrix are lost in conversion.

**BrMatrix34ToQuat()**

Declaration:

**br_quat* BrMatrix34ToQuat(br_quat* q, const br_matrix34* mat)**

Arguments:

**br_quat * q**

A pointer to the destination quaternion to receive the conversion.

**const br_matrix34 * mat**

A pointer to the source matrix to convert from.

Result:

**br_quat * q**

Returns `q `

for convenience.

Remarks: Translation components of the matrix are lost in conversion.

**BrMatrix34ToTransform()**

Declaration:

**void BrMatrix34ToTransform(br_transform* xform, const br_matrix34* mat)**

Arguments:

**br_transform * xform**

A pointer to the destination transform. The type member of the destination transform is retained and determines the method of conversion.

**const br_matrix34 * mat**

A pointer to the source matrix to be converted.

Effects: When the transform is the identity

The destination transform is left unchanged - no conversion necessary.

When the transform is a translation

The translation component of the matrix (its bottom row) is copied into the translation vector of the transform.

When the transform is a Euler angle set

Calls `BrMatrix34ToEuler()`

*204*` `

and copies the matrix's translation component (its bottom row) int to the translation vector of the transform.

When the transform is a Look-Up

The Up vector is left unchanged and should really be set before rather than after this conversion.

Copies the third row into the Look vector (if zero (0,0,0) then (0,1,0) is used instead).

The matrix's translation component is copied into the translation vector of the transform.

When the transform is a quaternion

Calls `BrMatrix34ToQuat()`

*204*` `

and copies the matrix's translation component (its bottom row) int to the translation vector of the transform.

When the transform is a 3x4 matrix

Directly copies the matrix into the transform.

When the transform is a 3x4 length preserving matrix

Directly copies the matrix into the transform and then calls `BrMatrix34LPNormalise()`

*206*`.`

`BrMatrix34Copy()`

or `BrMatrix34Copy4()`

` `

to ensure compatibility.

**BrMatrix34Copy()**

Declaration:

**void BrMatrix34Copy(br_matrix34* A, const br_matrix34* B)**

Arguments:

**br_matrix34 * A**

A pointer to the destination matrix (may be the same as source - though redundant).

**const br_matrix34 * B**

A pointer to the source matrix.

**BrMatrix34Copy4()**

Declaration:

**void BrMatrix34Copy4(br_matrix34* A, const br_matrix4* B)**

Arguments:

**br_matrix34 * A**

A pointer to the destination matrix.

**const br_matrix4 * B**

A pointer to the source 4x4 matrix.

See Also:

`BrMatrix4Copy34()`

.

**BrMatrix34LPNormalise()**

Declaration:

**void BrMatrix34LPNormalise(br_matrix34* A, const br_matrix34* B)**

Arguments:

**br_matrix34 * A**

A pointer to the destination matrix, which must not point to the source matrix.

**const br_matrix34 * B**

A pointer to the source matrix.

Effects: The destination matrix is the source matrix adjusted so that it represents a length preserving transformation.

Remarks: This function is typically applied to a length preserving matrix which has undergone a long sequence of operations, to ensure that the final matrix is still truly length preserving (regardless of rounding errors).

`BR_VECTOR3() `

macros would serve as well.
All other initialisation should use `BrMatrix34Copy()`

*205*` or any of the following initialisation functions.`

**BrMatrix34Identity()**

Declaration:

**void BrMatrix34Identity(br_matrix34* mat)**

Arguments:

**br_matrix34 * mat**

A pointer to the destination matrix.

Effects: Stores the identity matrix at the destination.

**BrMatrix34Translate()**

Declaration:

**void BrMatrix34Translate(br_matrix34* mat, br_scalar dx, br_scalar dy, br_scalar dz)**

Arguments:

**br_matrix34 * mat**

A pointer to the destination matrix.

**br_scalar dx**

Translation component along the x axis.

**br_scalar dy**

Translation component along the y axis.

**br_scalar dz**

Translation component along the z axis.

See Also:

`BrMatrix34PreTranslate()`

, `BrMatrix34PostTranslate()`

.

**BrMatrix34Scale()**

Declaration:

**void BrMatrix34Scale(br_matrix34* mat, br_scalar sx, br_scalar sy, br_scalar sz)**

Arguments:

**br_matrix34 * mat**

A pointer to the destination matrix.

**br_scalar sx**

Scaling component along the x axis.

**br_scalar sy**

Scaling component along the y axis.

**br_scalar sz**

Scaling component along the z axis.

See Also:

`BrMatrix34PreScale()`

, `BrMatrix34PostScale()`

.

**BrMatrix34ShearX()**

`o-`

ordinates will be scaled in proportion to the value of the x co-ordinate. Equivalent to:

Declaration:

**void BrMatrix34ShearX(br_matrix34* mat, br_scalar sy, br_scalar sz)**

Arguments:

**br_matrix34 * mat**

A pointer to the destination matrix.

**br_scalar sy**

Shear factor by which the x co-ordinate is included in the transformed y co-ordinate.

**br_scalar sz**

Shear factor by which the x co-ordinate is included in the transformed z co-ordinate.

See Also:

`BrMatrix34PreShearX()`

, `BrMatrix34PostShearX()`

.

**BrMatrix34ShearY()**

`co-`

ordinates will be scaled in proportion to the value of the y co-ordinate. Equivalent to:

Declaration:

**void BrMatrix34ShearX(br_matrix34* mat, br_scalar sx, br_scalar sz)**

Arguments:

**br_matrix34 * mat**

A pointer to the destination matrix.

**br_scalar sx**

Shear factor by which the y co-ordinate is included in the transformed x co-ordinate.

**br_scalar sz**

Shear factor by which the y co-ordinate is included in the transformed z co-ordinate.

See Also:

`BrMatrix34PreShearY()`

, `BrMatrix34PostShearY()`

.

**BrMatrix34ShearZ()**

`co-`

ordinates will be scaled in proportion to the value of the z co-ordinate. Equivalent to:

Declaration:

**void BrMatrix34ShearX(br_matrix34* mat, br_scalar sx, br_scalar sy)**

Arguments:

**br_matrix34 * mat**

A pointer to the destination matrix.

**br_scalar sx**

Shear factor by which the z co-ordinate is included in the transformed x co-ordinate.

**br_scalar sy**

Shear factor by which the z co-ordinate is included in the transformed y co-ordinate.

See Also:

`BrMatrix34PreShearZ()`

, `BrMatrix34PostShearZ()`

.

**BrMatrix34RotateX()**

Declaration:

**void BrMatrix34RotateX(br_matrix34* mat, br_angle rx)**

Arguments:

**br_matrix34 * mat**

A pointer to the destination matrix.

**br_angle rx**

Rotation about the x axis.

See Also:

`BrMatrix34PreRotateX()`

, `BrMatrix34PostRotateX()`

.

**BrMatrix34RotateY()**

Declaration:

**void BrMatrix34RotateX(br_matrix34* mat, br_angle ry)**

Arguments:

**br_matrix34 * mat**

A pointer to the destination matrix.

**br_angle ry**

Rotation about the y axis.

See Also:

`BrMatrix34PreRotateY()`

, `BrMatrix34PostRotateY()`

.

**BrMatrix34RotateZ()**

Declaration:

**void BrMatrix34RotateZ(br_matrix34* mat, br_angle rz)**

Arguments:

**br_matrix34 * mat**

A pointer to the destination matrix.

**br_angle rz**

Rotation about the z axis.

See Also:

`BrMatrix34PreRotateZ()`

, `BrMatrix34PostRotateZ()`

.

**BrMatrix34Rotate()**

Declaration:

**void BrMatrix34Rotate(br_matrix34* mat, br_angle r, const br_vector3* a)**

Arguments:

**br_matrix34 * mat**

A pointer to the destination matrix.

**br_angle r**

Rotation about the specified axis vector.

**const br_vector3 * a**

The arbitrary (normalised) axis vector about which the rotation occurs.

See Also:

`BrMatrix34PreRotate()`

, `BrMatrix34PostRotate()`

.

Generated with CERN WebMaker