<<>> <> <> <> DIRECTORY G3dBasic, G3dMatrix, G3dShape, G3dTriangle; ImplicitStorage: CEDAR DEFINITIONS ~ BEGIN <> Triple: TYPE ~ G3dBasic.Triple; Matrix: TYPE ~ G3dMatrix.Matrix; Viewport: TYPE ~ G3dMatrix.Viewport; Vertices: TYPE ~ G3dShape.VertexSequence; IntTriple: TYPE ~ G3dTriangle.IntTriple; Centers: TYPE ~ RECORD [s: SEQUENCE length: INT OF LIST OF IntTriple]; ID: TYPE ~ RECORD [id: IntTriple, vid: INT ¬ 0]; IDs: TYPE ~ RECORD [s: SEQUENCE length: INT OF LIST OF ID]; Edge: TYPE ~ RECORD [i1, i2: IntTriple, vid: INT ¬ 0]; Edges: TYPE ~ RECORD [s: SEQUENCE length: INT OF LIST OF Edge]; Face: TYPE ~ RECORD [i1, i2, i3: IntTriple, vIDs: LIST OF INT]; Faces: TYPE ~ RECORD [s: SEQUENCE length: INT OF LIST OF Face]; <> ScreenPick: PROC [p: G3dBasic.IntegerPair, vertices: Vertices, view: Matrix, vp: Viewport] RETURNS [INT]; <> <> GetHashSize: PROC RETURNS [INT]; <> <<>> Hash: PROC [i: IntTriple] RETURNS [id: INT]; <> <<>> Order2: PROC [i1, i2: IntTriple] RETURNS [IntTriple, IntTriple]; <> <<>> Order3: PROC [i1, i2, i3: IntTriple] RETURNS [r1, r2, r3: IntTriple]; <> <<>> NewCenters: PROC RETURNS [REF Centers]; <> NewIDs: PROC RETURNS [REF IDs]; <> NewEdges: PROC RETURNS [REF Edges]; <> NewFaces: PROC RETURNS [REF Faces]; <> AddCenter: PROC [centers: REF Centers, i: IntTriple] RETURNS [BOOL]; <> SubCenter: PROC [centers: REF Centers, id: IntTriple]; <> <<>> SetID: PROC [ids: REF IDs, location: IntTriple, vid: INT]; <> GetID: PROC [ids: REF IDs, location: IntTriple] RETURNS [INT]; <> <<>> SetEdge: PROC [edges: REF Edges, i1, i2: IntTriple, vid: INT]; <> GetEdge: PROC [edges: REF Edges, i1, i2: IntTriple] RETURNS [INT]; <> <<>> SetFace: PROC [faces: REF Faces, i1, i2, i3: IntTriple, vid: INT]; <> <<>> GetFace: PROC [faces: REF Faces, i1, i2, i3: IntTriple, p: Triple, vertices: Vertices] RETURNS [INT]; <> <<>> GetAllFaceIDs: PROC [faces: REF Faces, i1, i2, i3: IntTriple] RETURNS [ids: LIST OF INT]; <> <<>> END.