<> <> <> DIRECTORY SV2d, SV3d, SVFaces, SVSweepGeometry, SVBasicTypes, SVModelTypes, SVSceneTypes; SweepCast: CEDAR DEFINITIONS = BEGIN <> BoundBox: TYPE = SVBasicTypes.BoundBox; BoundSphere: TYPE = SVBasicTypes.BoundSphere; Classification: TYPE = SVSceneTypes.Classification; EdgeOnRect: TYPE = SVFaces.EdgeOnRect; LinearMesh: TYPE = SVSweepGeometry.LinearMesh; Polygon: TYPE = SV2d.Polygon; Primitive: TYPE = SVSceneTypes.Primitive; Ray: TYPE = SVSceneTypes.Ray; RevoluteMesh: TYPE = SVSweepGeometry.RevoluteMesh; Point2d: TYPE = SV2d.Point2d; Vector3d: TYPE = SV3d.Vector3d; <> LinSweepFaces: TYPE = REF LinSweepFacesObj; LinSweepFacesObj: TYPE = RECORD [ mesh: LinearMesh, poly: Polygon, len: NAT, seq: SEQUENCE maxFaces: NAT OF EdgeOnRect]; RevoSweepFaces: TYPE = REF RevoSweepFacesObj; RevoSweepFacesObj: TYPE = RECORD [ mesh: RevoluteMesh, len: NAT, seq: SEQUENCE maxFaces: NAT OF RevoFace]; RevoFace: TYPE = REF ANY; <> SubBoxesBody: TYPE = REF SubBoxesBodyObj; SubBoxesBodyObj: TYPE = RECORD [ len: NAT, seq: SEQUENCE maxFaces: NAT OF BoundBox]; SubSpheresBody: TYPE = REF SubSpheresBodyObj; SubSpheresBodyObj: TYPE = RECORD [ len: NAT, seq: SEQUENCE maxFaces: NAT OF BoundSphere]; RevoHitArray: TYPE = REF RevoHitArrayObj; RevoHitArrayObj: TYPE = RECORD [ count: NAT, array: ARRAY[1..SVSweepGeometry.maxLinesOfLat+1] OF RevoHitRec, inOuts: ARRAY[1..SVSweepGeometry.maxLinesOfLat+1] OF BOOL ]; RevoHitRec: TYPE = REF RevoHitRecObj; RevoHitRecObj: TYPE = RECORD [ param: REAL, normal: Vector3d, lineOfLatitude: NAT]; LinHitArray: TYPE = REF LinHitArrayObj; LinHitArrayObj: TYPE = RECORD [ count: NAT, array: ARRAY[1..SVSweepGeometry.maxMeshLen-1] OF LinHitRec ]; LinHitRec: TYPE = REF LinHitRecObj; LinHitRecObj: TYPE = RECORD [ param: REAL, normal: Vector3d, index: NAT]; <> LinCast: PROC [localRay: Ray, prim: Primitive, linMesh: LinearMesh, faces: LinSweepFaces] RETURNS [class: Classification]; RevoCast: PROC [cameraPoint: Point2d, localRay: Ray, prim: Primitive, faces: RevoSweepFaces, boxes: SubBoxesBody] RETURNS [class: Classification]; <> <<>> RevoCastNoBBoxes: PROC [localRay: Ray, prim: Primitive, faces: RevoSweepFaces] RETURNS [class: Classification]; RevoCastBoundSpheres: PROC [localRay: Ray, prim: Primitive, faces: RevoSweepFaces, spheres: SubSpheresBody] RETURNS [class: Classification]; MakeRevoSweepFaces: PROC [revMesh: RevoluteMesh] RETURNS [faces: RevoSweepFaces]; MakeLinSweepFaces: PROC [linMesh: LinearMesh] RETURNS [faces: LinSweepFaces]; END.