# FreeBSD Manual Pages

```vpWindow(3)		   Library Functions Manual		   vpWindow(3)

NAME
vpWindow	 -  multiply  the projection matrix by a perspective or	ortho-
graphic 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  per-
spective	 or orthographic projection matrix.  The new projection	matrix
is defined by the coordinates of	six clipping planes in the eye coordi-
nate  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 pro-
jection matrix, even if the projection matrix is	not  the  current  ma-
trix.	 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_CON-
CAT_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:

The  clipping  plane  coordinates	 are  invalid  (left _=	right,
etc.).