DIRECTORY G3dBasic, G3dShape, ImplicitCubeTet, ImplicitStorage, Rope; ImplicitMinimal: CEDAR DEFINITIONS ~ BEGIN Triple: TYPE ~ G3dBasic.Triple; CubeProc: TYPE ~ ImplicitCubeTet.CubeProc; Tetrahedron: TYPE ~ ImplicitCubeTet.Tetrahedron; IDs: TYPE ~ ImplicitStorage.IDs; Edges: TYPE ~ ImplicitStorage.Edges; Vertices: TYPE ~ ImplicitStorage.Vertices; Function: TYPE ~ PROC [point: Triple, clientData: REF ANY] RETURNS [value: REAL ¬ 0.0]; TriangleProc: TYPE ~ PROC [i1, i2, i3: INT, vertices: Vertices] RETURNS [continue: BOOL ¬ TRUE]; Error: ERROR [reason: Rope.ROPE]; Propagate: PROC [ function: Function, level, size: REAL, clientData: REF ANY ¬ NIL, start: Triple ¬ [], action: CubeProc] RETURNS [centers: REF ImplicitStorage.Centers]; ProcessTet: PROC [ function: Function, clientData: REF ANY, level: REAL, tet: REF Tetrahedron, tetID: INT, ids: REF IDs, edges: REF Edges, vertices: Vertices, epsilon: REAL, action: TriangleProc] RETURNS [Vertices]; Triangulate: PROC [ function: Function, -- the implicit function level: REAL, -- contour level size: REAL, -- size of cubic partitioning clientData: REF ANY ¬ NIL, -- passed back to function start: Triple ¬ [], -- if [], randomly search triangleAction: TriangleProc] -- called per generated triangle RETURNS [error: Rope.ROPE]; ShapeFromFunction: PROC [ function: Function, level, size: REAL, -- level, cube size clientData: REF ANY ¬ NIL, -- passed back to function start: Triple ¬ [], -- if [], randomly search statusAction: TriangleProc ¬ NIL] -- progress report, usually graphical RETURNS [G3dShape.Shape]; Converge: PROC [pos, neg: Triple, val, level: REAL, function: Function, clientData: REF ANY] RETURNS [Triple]; Normal: PROC [point: Triple, function: Function, delta: REAL, clientData: REF ANY] RETURNS [Triple]; FindStart: PROC [ ballpark: Triple, function: Function, size, level: REAL, clientData: REF ANY ¬ NIL] RETURNS [Triple]; END. b ImplicitMinimal.mesa Copyright c 1991 by Xerox Corporation. All rights reserved. Bloomenthal, December 27, 1992 12:18 pm PST Minimal Polygonizer Propagate cubes across the implicit function. Call action for each triangle produced from the tetrahedron. If ids = NIL, do not tha tests if tetrahedral corner is negligibly close to surface. Generate points and polygons for the given function at the given contour level. Utility for G3d clients. ! Error. Converge to a point on the surface. Return the normal at the given point. Attempt to find a starting point. ! Error["can't find starting point"}. Κτ•NewlineDelimiter ™™Jšœ Οmœ1™