<> <> <> <> <<>> DIRECTORY Graphics, Imager, SV2d, SV3d, SVModelTypes, SVRayTypes, SVSceneTypes; SVSlices: CEDAR DEFINITIONS = BEGIN Camera: TYPE = SVModelTypes.Camera; Classification: TYPE = SVRayTypes.Classification; CoordSystem: TYPE = SVModelTypes.CoordSystem; CSGTree: TYPE = SVRayTypes.CSGTree; FrameBlock: TYPE = SVSceneTypes.FrameBlock; Point2d: TYPE = SV2d.Point2d; Point3d: TYPE = SV3d.Point3d; Ray: TYPE = SVRayTypes.Ray; SliceScanLine: TYPE = REF SliceScanLineObj; SliceScanLineObj: TYPE = RECORD [ lineVal: REAL, hits: ARRAY [1..SVRayTypes.maxSceneDepth] OF Point3d, classifs: ARRAY [1..SVRayTypes.maxSceneDepth] OF BOOL, count: NAT]; Slice: TYPE = REF SliceObj; SliceObj: TYPE = RECORD [ coordSys: CoordSystem, frame: FrameBlock, plane: NAT, seq: SEQUENCE maxScans: NAT OF SliceScanLine]; CreateSlice: PROC [maxScans: NAT, coordSys: CoordSystem, frame: FrameBlock, plane: NAT] RETURNS [slice: Slice]; UpdateSlice: PROC [slice: Slice, coordSys: CoordSystem, frame: FrameBlock, plane: NAT]; ChangeSlicePlane: PROC [slice: Slice, plane: NAT]; RayTraceTheSlice: PROC [slice: Slice, tree: CSGTree, camera: Camera]; WidthAndHeight: PROC [slice: Slice] RETURNS [width, height: REAL]; <> DrawSlice: PROC [dc: Imager.Context, slice: Slice, origin: Point2d]; <> <<>> DrawSlice3d: PROC [dc: Graphics.Context, slice: Slice, camera: Camera]; <> END.