<<>> <> <> <> DIRECTORY G3dBasic, G3dMatrix, G3dOctree, G3dShape, ImplicitDefs; ImplicitSurface: CEDAR DEFINITIONS ~ BEGIN Triple: TYPE ~ G3dBasic.Triple; Matrix: TYPE ~ G3dMatrix.Matrix; Viewport: TYPE ~ G3dMatrix.Viewport; Corner: TYPE ~ G3dOctree.Corner; Cube: TYPE ~ G3dOctree.Cube; Direction: TYPE ~ G3dOctree.Direction; Octree: TYPE ~ G3dOctree.Octree; OctreeMode: TYPE ~ G3dOctree.OctreeMode; Shape: TYPE ~ G3dShape.Shape; ColorProc: TYPE ~ ImplicitDefs.ColorProc; EdgeMode: TYPE ~ ImplicitDefs.EdgeMode; Surface: TYPE ~ ImplicitDefs.Surface; NormalProc: TYPE ~ ImplicitDefs.NormalProc; PolygonOkProc: TYPE ~ ImplicitDefs.PolygonOkProc; StatusProc: TYPE ~ ImplicitDefs.StatusProc; SurfaceProc: TYPE ~ ImplicitDefs.SurfaceProc; Target: TYPE ~ ImplicitDefs.Target; TextureProc: TYPE ~ ImplicitDefs.TextureProc; ValueProc: TYPE ~ ImplicitDefs.ValueProc; VertexOkProc: TYPE ~ ImplicitDefs.VertexOkProc; NoSurfacePoint: ERROR; <> <> <> MakeSurface: PROC [ surface: Surface, octreeMode: OctreeMode, valueProc: ValueProc, threshold: REAL _ 1.0, triangulate: BOOL ¬ FALSE, vertexOkProc: VertexOkProc _ NIL, polygonOkProc: PolygonOkProc _ NIL, normalProc: NormalProc _ NIL, colorProc: ColorProc _ NIL, textureProc: TextureProc _ NIL, statusProc: StatusProc _ NIL, tolerance: REAL _ 0.0001, edgeMode: EdgeMode _ binarySectioning, clientData: REF ANY _ NIL]; <> <> <> <> <> <<>> MakePolygons: PROC [ surface: Surface, valueProc: ValueProc, threshold: REAL _ 1.0, triangulate: BOOL ¬ FALSE, vertexOkProc: VertexOkProc _ NIL, polygonOkProc: PolygonOkProc _ NIL, normalProc: NormalProc _ NIL, colorProc: ColorProc _ NIL, textureProc: TextureProc _ NIL, statusProc: StatusProc _ NIL, tolerance: REAL _ 0.0001, edgeMode: EdgeMode _ binarySectioning, clientData: REF ANY _ NIL] RETURNS [nEvaluations: INT]; <> <> <> <> <> <> <> <> <> <> MakeOctree: PROC [ octreeMode: OctreeMode, valueProc: ValueProc, threshold: REAL _ 1.0, normalProc: NormalProc _ NIL, statusProc: StatusProc _ NIL, clientData: REF ANY _ NIL] RETURNS [Octree]; <> <> <> <> TrackOctree: PROC [ cubeSize: REAL, surfacePoint: Triple, valueProc: ValueProc, threshold: REAL _ 1.0, statusProc: StatusProc _ NIL, clientData: REF ANY _ NIL] RETURNS [Octree]; <> <> <> <> <<>> ConvergeOctree: PROC [ rootSize: REAL, recurseMin: NAT _ 1, recurseMax: NAT _ 5, valueProc: ValueProc, threshold: REAL _ 1.0, surfaceProc: SurfaceProc _ NIL, statusProc: StatusProc _ NIL, clientData: REF ANY _ NIL] RETURNS [octree: Octree]; <> <> <> <> <> <> <> <> PointOnSurface: PROC [ surfaceHull: Cube, valueProc: ValueProc, threshold: REAL _ 1.0, recurseLimit: NAT, clientData: REF ANY _ NIL] RETURNS [point: Triple]; <> <<>> SurfacePoint: PROC [ in, out: Triple, valueProc: ValueProc, threshold: REAL _ 1.0, clientData: REF ANY _ NIL] RETURNS [Triple]; <> <<>> FindStart: PUBLIC PROC [ ballpark: Triple, valueProc: ValueProc, size, level: REAL, clientData: REF ANY ¬ NIL] RETURNS [Triple]; <> <<>> SegmentConverge: PROC [ pIn, pOut: Triple, vIn, vOut: REAL, valueProc: ValueProc, threshold: REAL _ 1.0, clientData: REF ANY _ NIL, direction: Direction _ none, tolerance: REAL _ 0.0001, edgeMode: EdgeMode _ binarySectioning, nTriesLimit: NAT _ 15] RETURNS [Target]; <> <> <> <> ShapeFromSurface: PROC [surface: Surface] RETURNS [Shape]; <> <<>> SetSurfaceCurves: PROC [surface: Surface]; <> <> NPolygons: PROC [surface: Surface] RETURNS [CARDINAL]; <> <<>> NEdges: PROC [surface: Surface] RETURNS [CARDINAL]; <> <<>> NVertices: PROC [surface: Surface] RETURNS [CARDINAL]; <> <<>> EulerNumber: PROC [surface: Surface] RETURNS [CARDINAL]; <> <> SurfaceOK: PROC [surface: Surface] RETURNS [BOOL]; <> VerticesOK: PROC [surface: Surface, view: Matrix, viewport: Viewport] RETURNS [BOOL]; <> VertexNormalsOK: PROC [surface: Surface] RETURNS [BOOL]; <> FaceNormalsCentersOK: PROC [surface: Surface] RETURNS [BOOL]; <> SetNearest: PROC [corner: Corner, nearest: Triple, squareDistance: REAL _ 0.0]; <> <<>> CornerWithMaxValue: PROC [cube: Cube] RETURNS [Corner]; <> <<>> END.