NAME¶
vpRotate - 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:
- VPERROR_BAD_OPTION
- The axis argument is invalid.
SEE ALSO¶
VolPack(3), vpCreateContext(3), vpCurrentMatrix(3)