<<>> <> <> <> <> DIRECTORY G3dBasic, G3dBox, G3dNats, G3dShape, G3dPlane; G3dClipVolume: CEDAR DEFINITIONS ~ BEGIN <> Box: TYPE ~ G3dBox.Box; Plane: TYPE ~ G3dPlane.Plane; PlaneSequence: TYPE ~ G3dPlane.PlaneSequence; Ray: TYPE ~ G3dPlane.Ray; Shape: TYPE ~ G3dShape.Shape; Triple: TYPE ~ G3dBasic.Triple; <> <> ClipVolume: TYPE ~ REF ClipVolumeRep; ClipVolumeRep: TYPE ~ RECORD [ planes: PlaneSequence ¬ NIL, -- inward-pointing planes of the volume box: Box ¬ [] -- bounding box of the volume ]; TripleList: TYPE ~ LIST OF Triple; <> ClipVolumeFrom4Points: PROC [p0, p1, p2, p3: Triple] RETURNS [ClipVolume]; <> <> ShapeInVolume: PROC [shape: Shape, clipVolume: ClipVolume] RETURNS [BOOL]; <> <<>> PolygonInVolume: PROC [pts: TripleList, clipVolume: ClipVolume] RETURNS [BOOL]; <> <> NegatePlane: PROC [plane: Plane] RETURNS [Plane]; <> <<>> TripleListFromSurface: PROC [shape: Shape, surfID: INT] RETURNS [TripleList]; <> <> ClipToPlane: PROC [vList: TripleList, plane: Plane] RETURNS [TripleList]; <> END.