<> <> <> <> <<>> DIRECTORY Imager, SV2d, SV3d, SVModelTypes, SVSceneTypes; SVCatScan: CEDAR DEFINITIONS = BEGIN Camera: TYPE = SVModelTypes.Camera; Classification: TYPE = SVSceneTypes.Classification; CoordSystem: TYPE = SVModelTypes.CoordSystem; CSGTree: TYPE = SVSceneTypes.CSGTree; FrameBlock: TYPE = SVSceneTypes.FrameBlock; Point2d: TYPE = SV2d.Point2d; Point3d: TYPE = SV3d.Point3d; Ray: TYPE = SVSceneTypes.Ray; CatScanScanLine: TYPE = REF CatScanScanLineObj; CatScanScanLineObj: TYPE = RECORD [ lineVal: REAL, hits: ARRAY [1..SVSceneTypes.maxSceneDepth] OF Point3d, classifs: ARRAY [1..SVSceneTypes.maxSceneDepth] OF BOOL, count: NAT]; CatScan: TYPE = REF CatScanObj; CatScanObj: TYPE = RECORD [ coordSys: CoordSystem, frame: FrameBlock, plane: NAT, seq: SEQUENCE maxScans: NAT OF CatScanScanLine]; CreateCatScan: PROC [maxScans: NAT, coordSys: CoordSystem, frame: FrameBlock, plane: NAT] RETURNS [catScan: CatScan]; UpdateCatScan: PROC [catScan: CatScan, coordSys: CoordSystem, frame: FrameBlock, plane: NAT]; ChangeCatScanPlane: PROC [catScan: CatScan, plane: NAT]; RayTraceTheCatScan: PROC [catScan: CatScan, tree: CSGTree, camera: Camera]; WidthAndHeight: PROC [catScan: CatScan] RETURNS [width, height: REAL]; <> DrawCatScan: PROC [dc: Imager.Context, catScan: CatScan, origin: Point2d]; <> <<>> DrawCatScan3d: PROC [dc: Imager.Context, catScan: CatScan, camera: Camera]; <> END.