# vpRotate - Man Page

multiply the current transformation matrix by a rotation matrix

## Synopsis

`#include <volpack.h>`

`vpResult`

vpRotate(vpc, axis, degrees)

`vpContext *vpc;`

`int axis;`

`double degrees;`

## Arguments

vpc

VolPack context from vpCreateContext.

axis

Rotation axis code (VP_X_AXIS, VP_Y_AXIS or VP_Z_AXIS).

degrees

Number of degrees to rotate.

## Description

vpRotate is used to multiply the current transformation matrix by a 4-by-4 rotation matrix.  The rotation axis must be one of the three principal viewing axes and is specified with one of the following codes:

 VP_X_AXIS X axis VP_Y_AXIS Y axis VP_Z_AXIS Z axis

The rotation angle is specified in degrees.  A positive angle indicates a clockwise rotation when looking towards the positive direction along the axis.  For an X-axis rotation, the rotation matrix is:

1 0 0 0
0 cos(d) sin(d) 0
0 -sin(d) cos(d) 0
0 0 0 1

where d stands for the degrees argument.  For a Y-axis rotation, the rotation matrix is:

cos(d) 0 -sin(d) 0
0 1 0 0
sin(d) 0 cos(d) 0
0 0 0 1

For a Z-axis rotation, the rotation matrix is:

cos(d) sin(d) 0 0
-sin(d) cos(d) 0 0
0 0 1 0
0 0 0 1

Use vpCurrentMatrix to set the current transformation matrix.  By default, the rotation matrix is post-multiplied (M = M*R where M is the current matrix and R is the rotation matrix).  The VP_CONCAT_MODE option to vpSeti can be used to select pre-multiplication.

## State Variables

The current matrix concatenation parameters can be retrieved with the following state variable codes (see vpGeti(3)): VP_CURRENT_MATRIX, VP_CONCAT_MODE.

## Errors

The normal return value is VP_OK.  The following error return value is possible: