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. Κ ImplicitStorage.mesa Copyright c 1992 by Xerox Corporation. All rights reserved. Bloomenthal, January 2, 1993 2:24 pm PST Types Vertices Return the index of the vertex closest to the screen point. Sparse 3d Storage Get the hash size used internally. Return the hashed value. Return i1 and i2 ordered. Return i1, i2, and i3, ordered. Allocate a center sequence. Allocate a center sequence. Allocate an edge sequence. Allocate a face sequence. Return true if already set; otherwise, set and return false. Remove the given center from the table of centers. Set the location id with the given vertex, vid. Retrieve a vertex id from the location id (returns -1 if non-existent). Set the edge with the given vertex id. Retrieve a vertex id from the edge (returns -1 if non-existent). Set the edge with the given vertex id. If a vertex of the same location is stored on this face, return its id; else, return -1 Return all the ids associated with this face. Κ3•NewlineDelimiter ™™Jšœ Οmœ1™Jšœžœžœžœ˜9Jšœžœžœžœ žœžœžœžœ˜AJš œžœžœžœžœžœ˜BJšœžœžœžœ žœžœžœžœ˜B—–0.6666667 1.0 1.0 textColorš ™šΟn œžœJ˜ZJšžœžœ˜J™;——–0.6666667 1.0 1.0 textColorš ™š‘ œžœžœžœ˜ J™"J™—š‘œžœžœžœ˜,J™J™—š‘œœžΟsœžœ˜@J™J™—š‘œœž’œžœ˜EJ™J™—š‘ œžœžœžœ ˜'J™J˜—š‘œžœžœžœ˜J™J˜—š‘œžœžœžœ˜#J™J˜—š‘œžœžœžœ˜#J™J˜—š ‘ œžœ žœžœžœ˜DJ™J™GJ™—š‘œžœ žœ žœ˜>J™&J˜—š‘œž’œ’ž’œ’œ’ž’œžœ’˜BJ™@J™—š‘œžœ žœ$žœ˜BJ™&J™—š‘œžœ žœ=˜VJšžœžœ˜J™WJ™—š‘ œžœ žœžœžœžœžœ˜YJ™-——J™Jšžœ˜J˜—…—>;