NAME
vpWindow - multiply the projection matrix by a perspective or
orthographic matrix
SYNOPSIS
#include <volpack.h>
vpResult
vpWindow(vpc, type, left, right, bottom, top, near, far)
vpContext *vpc;
int type;
double left, right;
double bottom, top;
double near, far;
ARGUMENTS
vpc VolPack context from vpCreateContext.
type Projection type code. Currently, must be VP_PARALLEL.
left Coordinate of the left vertical clipping plane.
right Coordinate of the right vertical clipping plane.
bottom Coordinate of the bottom horizontal clipping plane.
top Coordinate of the top horizontal clipping plane.
near Coordinate of the near depth clipping plane.
far Coordinate of the far depth clipping plane.
DESCRIPTION
vpWindow is used to multiply the current projection matrix by a
perspective or orthographic projection matrix. The new projection
matrix is defined by the coordinates of six clipping planes in the eye
coordinate system (see vpCurrentMatrix(3)). The matrix maps the points
(left, bottom, near) and (right, top, near) to the lower left and upper
right corners of the clipping window. For an alternative means of
specifying the projection matrix, see vpWindowPHIGS(3).
Currently, only orthographic projections are supported. Perspective
projections will be added in a future release.
The matrix for parallel projections is:
A 0 0 D
0 B 0 E
0 0 C F
0 0 0 1
A = 2 / (right - left)
B = 2 / (top - bottom)
C = 2 / (far - near)
D = (left + right) / (left - right)
E = (bottom + top) / (bottom - top)
F = (near + far) / (near - far)
The matrix is multiplied into the projection matrix, even if the
projection matrix is not the current matrix. By default, the matrix
is post-multiplied (N = N*m where N is the current matrix and m is the
argument to vpMultMatrix). The VP_CONCAT_MODE option to vpSeti can be
used to select pre-multiplication. The default window is a parallel
projection with left = bottom = near = -0.5, and right = top = far =
0.5.
STATE VARIABLES
The current matrix concatenation parameters can be retrieved with the
following state variable codes (see vpGeti(3)): VP_CONCAT_MODE.
ERRORS
The normal return value is VP_OK. The following error return values
are possible:
VPERROR_BAD_VALUE
The clipping plane coordinates are invalid (left >= right,
etc.).
VPERROR_BAD_OPTION
The type argument is invalid.
SEE ALSO
VolPack(3), vpCreateContext(3), vpCurrentMatrix(3), vpWindowPHIGS(3)