<> <> <> DIRECTORY CoordSys, CSGGraphics, Graphics, Matrix3d, SV2d, SVPolygon3d; SVBoundBox: DEFINITIONS = BEGIN Camera: TYPE = CSGGraphics.Camera; CoordSystem: TYPE = REF CoordSysObj; CoordSysObj: TYPE = CoordSys.CoordSysObj; Point2d: TYPE = SV2d.Point2d; Point3d: TYPE = Matrix3d.Point3d; Poly3d: TYPE = SVPolygon3d.Poly3d; BoundHedron: TYPE = REF BoundHedronObj; BoundHedronObj: TYPE = RECORD [ len: NAT, seq: SEQUENCE maxVerts: NAT OF Point3d]; BoundBox: TYPE = REF BoundBoxObj; BoundBoxObj: TYPE = RECORD [ minVert: Point3d, -- min x, y and z makes this lower-left-deep maxVert: Point3d]; -- max x, y and z makes this upper-right-shallow CreateBoundHedron: PROC [len: NAT] RETURNS [bh: BoundHedron]; AddBoundHedronPoint: PROC [bh: BoundHedron, point: Point3d]; AddBoundHedronPoly: PROC [bh: BoundHedron, poly: Poly3d]; RectangularBoundHedron: PROC [sx, sy, sz: REAL] RETURNS [bh: BoundHedron]; <> RectangularBoundHedron2: PROC [x1, x2, y1, y2, z1, z2: REAL] RETURNS [bh: BoundHedron]; <> PyramidBoundHedron: PROC [sx, sy, sz: REAL] RETURNS [bh: BoundHedron]; <> HexagonalBoundHedron: PROC [r, hOver2: REAL] RETURNS [bh: BoundHedron]; <> HexPyramidBoundHedron: PROC [r, h: REAL] RETURNS [bh: BoundHedron]; <> GeneralConeBoundHedron: PROC [r1, h1, r2, h2: REAL] RETURNS [bh: BoundHedron]; <> DiskBoundHedron: PROC [r, h: REAL] RETURNS [bh: BoundHedron]; <> ClearBoundHedron: PROC [bh: BoundHedron]; DrawBoundHedron: PROC [dc: Graphics.Context, bh: BoundHedron, localWRTWorld: CoordSystem, camera: Camera, screen: CoordSystem]; BoundBoxFromBoundHedron: PROC [bh: BoundHedron, camera: Camera, localCS: CoordSystem] RETURNS [boundBox: BoundBox]; BoundBoxFromValues: PROC [minX, minY, maxX, maxY: REAL] RETURNS [boundBox: BoundBox]; PointInBoundBox: PROC [cameraPoint: Point2d, boundBox: BoundBox] RETURNS [BOOL]; UnionCombineBoundBoxes: PROC [bb1, bb2: BoundBox] RETURNS [newBB: BoundBox]; IntersectionCombineBoundBoxes: PROC [bb1, bb2: BoundBox] RETURNS [newBB: BoundBox]; DifferenceCombineBoundBoxes: PROC [bb1, bb2: BoundBox] RETURNS [newBB: BoundBox]; DrawBoundBox: PROC [dc: Graphics.Context, boundBox: BoundBox, screen: CoordSystem]; ComplementBoundBox: PROC [dc: Graphics.Context, boundBox: BoundBox, screen: CoordSystem]; END.