<> <> <> DIRECTORY Real USING [ LargestNumber ], Imager USING [ Rectangle ], ThreeDBasics USING [ Context, ShapeInstance ]; Interactive3D: CEDAR DEFINITIONS ~ BEGIN <> Context: TYPE ~ ThreeDBasics.Context; FacingDirection: TYPE ~ {front, back, any}; CloseVertex: TYPE ~ RECORD[ vtx: NAT, shape: REF ThreeDBasics.ShapeInstance ]; CloseVertexSequence: TYPE ~ RECORD[ SEQUENCE length: CARDINAL OF CloseVertex ]; <> NearbyVertices: PROC[ context: Context, cursorX, cursorY: REAL, numberToReturn: NAT _ 1, maxDistance: REAL _ Real.LargestNumber ] RETURNS[ closeVtx: REF CloseVertexSequence ]; <> BestPolygon: PROC[ closeVtx: REF CloseVertexSequence, facingDir: FacingDirection _ front, closest: BOOLEAN _ TRUE ]; <> PasteOn: PROC[ context: Context, viewPort: Imager.Rectangle, action: PROC[Context] ]; <> RipOff: PROC[ context: Context ]; <> END.