<<>> <> <> <> DIRECTORY G3dBasic, G3dMatrix, G3dOctree, G3dPolygon, ImplicitDefs, Rope; ImplicitPolygons: CEDAR DEFINITIONS ~ BEGIN NatSequence: TYPE ~ G3dBasic.NatSequence; SurfaceSequence: TYPE ~ G3dBasic.SurfaceSequence; Matrix: TYPE ~ G3dMatrix.Matrix; Viewport: TYPE ~ G3dMatrix.Viewport; CrossSequence: TYPE ~ G3dOctree.CrossSequence; CrossPolygonProc: TYPE ~ G3dOctree.CrossPolygonProc; Cube: TYPE ~ G3dOctree.Cube; CubeProc: TYPE ~ G3dOctree.CubeProc; PolygonProc: TYPE ~ G3dPolygon.PolygonProc; PolygonOkProc: TYPE ~ ImplicitDefs.PolygonOkProc; Surface: TYPE ~ ImplicitDefs.Surface; ValueProc: TYPE ~ ImplicitDefs.ValueProc; ROPE: TYPE ~ Rope.ROPE; <> CrossPolygonizeCube: PROC [ cube: Cube, crossPolygonProc: CrossPolygonProc, scratchCrossSequence: CrossSequence ¬ NIL, recurseTrackFace: BOOL ¬ TRUE] RETURNS [result: ATOM]; <> <> PolygonizeCube: PROC [ cube: Cube, polygonProc: PolygonProc, scratchPolygon: NatSequence ¬ NIL, recurseTrackFace: BOOL ¬ TRUE] RETURNS [result: ATOM]; <> <> <<>> SetSurfacePolygons: PROC [ surface: Surface, root: Cube, triangulate: BOOL ¬ FALSE, valueProc: ValueProc ¬ NIL, threshold: REAL ¬ 0.0, cubeProc: CubeProc ¬ NIL, polygonOkProc: PolygonOkProc ¬ NIL, clientData: REF ANY ¬ NIL] RETURNS [message: ROPE]; <> <> <> <> ApplyToSurfacePolygons: PROC [surface: Surface, polygonProc: PolygonProc]; <> <<>> ApplyToFrontFacingPolygons: PROC [ surface: Surface, view: Matrix, viewport: Viewport, polygonProc: PolygonProc]; <> <> SetFaceNormalsCenters: PROC [surface: Surface, setNormals, setCenters: BOOL ¬ TRUE]; <> <> <<>> DecodePolygons: PROC [surface: Surface] RETURNS [SurfaceSequence]; <> <<>> END. .. GetTripoint: PROC [tripoints: TripointSequence, nTripoint: NAT] RETURNS [Tripoint] ~ INLINE {RETURN[tripoints[nTripoint]]}; <>