<> <> <> <> <> DIRECTORY SV3d, SVFaces, SVRayTypes; SVFacesCast: CEDAR DEFINITIONS = BEGIN Cone: TYPE = SVFaces.Cone; Cylinder: TYPE = SVFaces.Cylinder; DiskRing: TYPE = SVFaces.DiskRing; EdgeOnRect: TYPE = SVFaces.EdgeOnRect; Ray: TYPE = SVRayTypes.Ray; Vector3d: TYPE = SV3d.Vector3d; FaceHitRec: TYPE = REF FaceHitRecObj; FaceHitRecObj: TYPE = RECORD [ params: ARRAY[1..2] OF REAL, count: NAT, normals: ARRAY[1..2] OF Vector3d]; ConeCast: PROC [cone: Cone, localRay: Ray] RETURNS [hits: FaceHitRec]; DiskRingCast: PROC [diskRing: DiskRing, localRay: Ray] RETURNS [hits: FaceHitRec]; CylinderCast: PROC [cylinder: Cylinder, localRay: Ray] RETURNS [hits: FaceHitRec]; EdgeOnRectCast: PUBLIC PROC [rect: EdgeOnRect, localRay: Ray] RETURNS [hits: FaceHitRec]; GetFaceHitFromPool: PROC RETURNS [faceHit: FaceHitRec]; ReturnFaceHitToPool: PROC [faceHit: FaceHitRec]; END.