NAME
hwIdentity(3), hwScale(3), hwRotateX(3), hwRotateY(3), hwRotateZ(3),
hwRotateAxis(3), hwMatMult(3), hwTransform(3), hwInvertMat(3)
- HoverWare matrix utilities
SYNOPSIS
#include "hw.h"
void hwIdentity( hwFloat res[4][4] )
void hwScale( hwFloat res[4][4], hwFloat sx, hwFloat sy, hwFloat sz )
void hwRotateX( hwFloat res[4][4], hwFloat angle )
void hwRotateY( hwFloat res[4][4], hwFloat angle )
void hwRotateZ( hwFloat res[4][4], hwFloat angle )
void hwRotateAxis( hwFloat res[4][4], hwFloat angle, hwFloat axis[3] )
void hwMatMult( hwFloat res[4][4], hwFloat a[4][4], hwFloat b[4][4] )
void hwTransform( hwFloat mat[4][4], hwFloat point[3] )
hwInt32 hwInvertMat( hwFloat mat[4][4], hwFloat dst[4][4] )
void hwDisplay->pushMatrix( hwDisplay disp, hwFloat mat[4][4] )
void hwDisplay->popMatrix( hwDisplay disp )
DESCRIPTION
These routines manipulate 4x4 transformations useful as modelling
transforms in HoverWare. Their full descriptions are as follows:
hwIdentity Initialize a 4x4 matrix to "identity".
hwScale Place the X, Y, and Z scale factors xs, ys, and
zs along the diagonal of the matrix
hwRotateX Create a matrix which rotates about the X axis
by angle radians.
hwRotateY Create a matrix which rotates about the Y axis
by angle radians.
hwRotateZ Create a matrix which rotates about the Z axis
by angle radians.
hwRotateAxis Create a matrix which rotates about an arbitrary
axis by angle radians
hwMatMult Post-multiply matrix a by matrix b, placing the
result in res.
hwTransform Transform a point by the given matrix
hwInvertMat Calculate the inverse of a given mat, putting
the result in dst. The return value is 1 if the
matrix is invertible, 0 otherwise.
hwDisplay->pushMatrix
Push a matrix on the HoverWare matrix stack.
The depth of this stack is system-dependent, but
it is at least 8. The matrix is pre-concatenated
with the other matrices on the stack.
hwDisplay->popMatrix
Pop the top of the HoverWare matrix stack.
The model matrix affects all graphics primitives in HoverWare,
including cameras and lights. Note that pushMatrix() and
popMatrix() are actually methods in the hwDisplay class and need to
be called through an instance of hwDisplay.
EXAMPLES
/* Push a rotation about X on the matrix stack */
hwFloat
mat[4][4];
hwRotateX( mat, 30.0 * M_PI / 180.0 );
disp->pushMatrix( disp, mat );
SEE ALSO
hwSpinner(3)