<<>> <> <> <> DIRECTORY G3dBasic, G3dOctree, ImplicitDefs, Rope; ImplicitAdapt: CEDAR DEFINITIONS ~ BEGIN Triple: TYPE ~ G3dBasic.Triple; Cube: TYPE ~ G3dOctree.Cube; Octree: TYPE ~ G3dOctree.Octree; CrossSequence: TYPE ~ ImplicitDefs.CrossSequence; MacroPolygons: TYPE ~ ImplicitDefs.MacroPolygons; NormalProc: TYPE ~ ImplicitDefs.NormalProc; StatusProc: TYPE ~ ImplicitDefs.StatusProc; ValueProc: TYPE ~ ImplicitDefs.ValueProc; ROPE: TYPE ~ Rope.ROPE; <> Subdivide: PROC [ root: Cube, adaptLimit: NAT, flatLimit: REAL, valueProc: ValueProc, threshold: REAL ¬ 1.0, normalProc: NormalProc ¬ NIL, statusProc: StatusProc ¬ NIL, clientData: REF ANY ¬ NIL] RETURNS [msg: ROPE]; <> <> <> Track: PROC [ seedSize: REAL, surfacePoint: Triple, valueProc: ValueProc, threshold: REAL ¬ 1.0, normalProc: NormalProc ¬ NIL, statusProc: StatusProc ¬ NIL, clientData: REF ANY ¬ NIL, adaptLimit: NAT ¬ 0, flatLimit: REAL ¬ 30.0, tolerance: REAL ¬ 0.0001] RETURNS [Octree]; <> <> <> <> Roundness: PROC [ cube: Cube, valueProc: ValueProc, threshold: REAL ¬ 1.0, normalProc: NormalProc, clientData: REF ANY ¬ NIL] RETURNS [REAL]; NormalFromCrossSequence: PROC [polygon: CrossSequence] RETURNS [Triple]; LinearDeviation: PROC [cube: Cube] RETURNS [REAL]; <> <<>> TooRound: PROC [ polygon: CrossSequence, cosFlatLimit: REAL, cosPerpFlatLimit: REAL, valueProc: ValueProc, threshold: REAL ¬ 1.0, normalProc: NormalProc, cube: Cube, clientData: REF ANY] RETURNS [BOOL]; MacroPolygonize: PROC [ cube: Cube, valueProc: ValueProc, threshold: REAL ¬ 1.0, clientData: REF ANY] RETURNS [macro: MacroPolygons]; END.