DoClipVol(3D)

NAME
DoClipVol - Create a primitive attribute object defining a model clipping volume

SYNOPSIS
C:
DtObject DoClipVol(operator, numhalfspaces, halfspaces)
DtClipOperator operator;
DtInt numhalfspaces ;
DtHalfSpace halfspaces[] ;

FORTRAN:
INTEGER*4 DOCV(OPRATR, NHLFSP, HLFSPS)
INTEGER*4 OPRATR
INTEGER*4 NHLFSP
REAL*8 HLFSPS(6*NHLFSP)

DESCRIPTION
DoClipVol creates a model clipping volume primitive attribute object. This object is used to modify the volume against which subsequently executed primitive objects are clipped when model clipping (or sectioning) is enabled.

The arguments of DoClipVol are as follows:

operator
    Specifies how the volume defined by halfspaces will be combined with the current value of the model clipping volume primitive attribute.

numhalfspaces
    Specifies the number of elements in the array halfspaces.

halfspaces
    Specifies an array of half spaces or sectioning planes.

Each halfspace is defined by a point in model coordinates and a vector that is the normal to the plane defining the boundary of the half space. This normal points in the direction of the acceptance region. The half spaces intersect to define a clipping volume. During display execution, this computed clipping volume is transformed by the current transformation matrix and combined with the current model clipping volume based on the specified operator.

The following table defines the available model clipping constants. T denotes the current value of the model clipping volume attribute, and S denotes the volume defined by the halfspaces.

FORTRAN		Clipping Acceptance
		Constant	Region

DcClipAll		<DCCALL>		everything clipped
DcClipAnd		<DCCAND>		T and S
DcClipAndReverse	<DCCARV>		T and (not S)
DcClipNoOp		<DCCNOP>		T
DcClipAndInverted	<DCCAIN>		(not T) and S
DcClipReplace	<DCCREP>		S
DcClipXOr		<DCCXOR>		T xor S
DcClipOr		<DCCOR>		T or S
DcClipNor		<DCCNOR>		(not T) and (not S)
DcClipEqv		<DCCEQV>		T eqv S [i.e. not (T xor S)]
DcClipInvertVolume	<DCCIVV>		not S
DcClipOrReverse	<DCCORR>		T or (not S)
DcClipInvert		<DCCINV>		not T
DcClipOrInverted	<DCCORI>		(not T) or S
DcClipNAnd		<DCCNAN>		(not T) or (not S)
DcClipNone		<DCCNON>		nothing clipped

Note that model clipping is considerably more powerful than clipping performed in the viewing operation for the following reasons:

    Any number of clipping planes can be specified.

    The model clipping planes are oriented arbitrarily with respect to each other and to the coordinate axes.

    An arbitrary boolean operator can be used to combine the volume defined by the specified set of half spaces and the current model clipping volume.

DEFAULTS
The default DoClipVol is all of world space, i.e., no clipping.

SEE ALSO
DoClipSwitch(3D)