G3*_Translate

C Specification

#include <nitro/gx/g3imm.h>
#include <nitro/gx/g3b.h>
#include <nitro/gx/g3c.h>

void G3_Translate(fx32 x, fx32 y, fx32 z);

// Below are APIs for creating the display list (command list)
void G3B_Translate(GXDLInfo* info, fx32 x, fx32 y, fx32 z);
void G3C_Translate(GXDLInfo* info, fx32 x, fx32 y, fx32 z);
void G3BS_Translate(GXDLInfo* info, fx32 x, fx32 y, fx32 z);
void G3CS_Translate(GXDLInfo* info, fx32 x, fx32 y, fx32 z);

Arguments

info Command List Information
x Distance to move along x-axis
y Distance to move along y-axis
z Distance to move along z-axis

Return Values

None.

Description

This function multiplies the current matrix on the left by the Parallel Translation matrix, as shown below. Each element of the matrix is a signed fixed-point number (sign + 19-bit integer + 12-bit decimal). If the current matrix is C, then the new matrix, Cnew, is in the format shown below.

The G3OP_MTX_TRANS command normally requires 22 cycles, and with the Position&Vector mode it requires 52 cycles for an execute cycle. It is possible to process it effectively without using the G3OP_MTX_TRANS command by making a set with the multiplication of a 3x3 matrix. The same process is done with G3*_MultTransMtx33.

struct {
MtxFx33  mtx;
VecFx32  trans;
} mtx43;
G3*_MultMtx43( (MtxFx43*)(&mtx43) ); 

See Also

G3*_MtxMode, G3*_Identity, G3*_LoadMtx43, G3*_LoadMtx44, G3*_MultMtx43, G3*_MultMtx44, G3*_MultMtx33, G3*_MultTransMtx33, G3*_PushMtx, G3*_PopMtx, G3*_StoreMtx, G3*_RestoreMtx, G3*_Scale, G3*_MultTransMtx33

Revision History

07/26/2004 Added description on boosting speed by packing with the 3x3 matrix multiplication.
01/19/2004 Initial version.