<> <> <> <> <> DIRECTORY Imager, Rope, SV2d, SV3d, SVBasicTypes, SVModelTypes, SVRayTypes; CSG: CEDAR DEFINITIONS = BEGIN Artwork: TYPE = SVModelTypes.Artwork; BoundBox: TYPE = SVBasicTypes.BoundBox; BoundHedron: TYPE = SVBasicTypes.BoundHedron; BoundSphere: TYPE = SVBasicTypes.BoundSphere; Camera: TYPE = SVModelTypes.Camera; Color: TYPE = Imager.Color; CoordSystem: TYPE = SVModelTypes.CoordSystem; Matrix4by4: TYPE = SV3d.Matrix4by4; Point2d: TYPE = SV2d.Point2d; Point3d: TYPE = SV3d.Point3d; Surface: TYPE = SVRayTypes.Surface; Vector3d: TYPE = SV3d.Vector3d; LightSourceList: TYPE = SVModelTypes.LightSourceList; Ray: TYPE = SVRayTypes.Ray; PointSetOp: TYPE = SVRayTypes.PointSetOp; Classification: TYPE = SVRayTypes.Classification; Composite: TYPE = SVRayTypes.Composite; CSGTree: TYPE = SVRayTypes.CSGTree; <> <> StuffCameraRay: PROC [ray: Ray, screenPoint: Point2d, camera: Camera]; <> StuffWorldRayFromCamera: PROC [ray: Ray, screenPoint: Point2d, camera: Camera]; <> StuffCameraRayLiterally: PROC [ray: Ray, base: Point3d, direction: Vector3d]; StuffWorldRay: PROC [ray: Ray, basePt: Point3d, direction: Vector3d, camera: Camera]; StuffWorldOnlyRay: PROC [ray: Ray, basePt: Point3d, direction: Vector3d]; StuffWorldRayFromPoints: PROC [ray: Ray, basePt: Point3d, directionPt: Point3d]; <> StuffLocalRay: PROC [ray: Ray, basePt: Point3d, direction: Vector3d, camera: Camera, localCS: CoordSystem]; <> EvaluateCameraRay: PROC [ray: Ray, t: REAL] RETURNS [pt: Point3d]; EvaluateWorldRay: PROC [ray: Ray, t: REAL] RETURNS [pt: Point3d]; EvaluateLocalRay: PROC [ray: Ray, t: REAL] RETURNS [pt: Point3d]; EvaluateLocalRay2: PROC [ray: Ray, t: REAL] RETURNS [x, y, z: REAL]; GetCameraRay: PROC [ray: Ray] RETURNS [basePt: Point3d, direction: Vector3d]; GetWorldRay: PROC [ray: Ray] RETURNS [basePt: Point3d, direction: Vector3d]; GetLocalRay: PROC [ray: Ray] RETURNS [basePt: Point3d, direction: Vector3d]; << >> CreateRay: PROC RETURNS [ray: Ray]; <> GetRayFromPool: PROC RETURNS [ray: Ray]; ReturnRayToPool: PROC [ray: Ray]; TransformRay: PROC [ray: Ray, mat: Matrix4by4] RETURNS [newRay: Ray]; <> TransformRayToWorld: PROC [ray: Ray, cameraWORLD: Matrix4by4] RETURNS [newRay: Ray]; <> TransformNewRay: PROC [ray: Ray, mat: Matrix4by4] RETURNS [newRay: Ray]; <> AddRay: PROC [ray1, ray2: Ray]; <> SubtractRays: PROC [ray1, ray2: Ray] RETURNS [ray1MinusRay2: Ray]; <> CopyClass: PROC [class: Classification] RETURNS [copy: Classification]; <> MakeCompositeCell: PROC [name: Rope.ROPE, operation: PointSetOp, LeftSolidPtr: REF ANY, RightSolidPtr: REF ANY] RETURNS [c: Composite]; MakeCSGTree: PROC [son: REF ANY, backgroundColor: Color, shadows: BOOL] RETURNS [tree: CSGTree]; CombineBoundBoxes: PROC [bb1, bb2: BoundBox, op: PointSetOp] RETURNS [newBB: BoundBox]; <> <<>> CombineBoundSpheres: PROC [bs1, bs2: BoundSphere, op: PointSetOp] RETURNS [newBS: BoundSphere]; <> <<>> RayHitsBoundSphere: PROC [worldRay: Ray, boundSphere: BoundSphere] RETURNS [BOOL]; PointSetOpToRope: PROC [pointSetOp: PointSetOp] RETURNS [opRope: Rope.ROPE]; RopeToPointSetOp: PROC [opRope: Rope.ROPE] RETURNS [pointSetOp: PointSetOp]; <> <<>> END.