DIRECTORY SV2d, SV3d, SVFaces, SVSweepGeometry, SVBasicTypes, SVModelTypes, SVSceneTypes; SVSweepCast: CEDAR DEFINITIONS = BEGIN BoundBox: TYPE = SVBasicTypes.BoundBox; Sphere: TYPE = SV3d.Sphere; 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 Sphere]; 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, positiveTOnly: BOOL _ TRUE] RETURNS [class: Classification]; RevoCast: PROC [cameraPoint: Point2d, localRay: Ray, prim: Primitive, faces: RevoSweepFaces, boxes: SubBoxesBody, positiveTOnly: BOOL _ TRUE] RETURNS [class: Classification]; RevoCastNoBBoxes: PROC [localRay: Ray, prim: Primitive, faces: RevoSweepFaces, positiveTOnly: BOOL _ TRUE] RETURNS [class: Classification]; RevoCastBoundSpheres: PROC [localRay: Ray, prim: Primitive, faces: RevoSweepFaces, spheres: SubSpheresBody, positiveTOnly: BOOL _ TRUE] RETURNS [class: Classification]; MakeRevoSweepFaces: PROC [revMesh: RevoluteMesh] RETURNS [faces: RevoSweepFaces]; MakeLinSweepFaces: PROC [linMesh: LinearMesh] RETURNS [faces: LinSweepFaces]; END. ZFile: SVSweepCast.mesa Last edited by Bier on September 24, 1987 12:20:52 pm PDT Contents: Ray Tracing Code for linear and revolute sweep shapes. IMPORTED TYPES TYPES DEFINED HERE will be an SVFaces.Cone, SVFaces.DiskRing, or SVFaces.Cylinder; index of front is 0, back is linMesh.len + 1; prim contains a RevoSweepFaces in prim.hints. สด– "Mesa" style˜Iheadšœ™Iprocšœ9™9LšœA™AL˜šฯk ˜ LšœO˜O—L˜Lšœ œ˜ Lš˜˜Lšœ™L˜Lšœ œ˜'Lšœœ˜Lšœœ˜3Lšœ œ˜&Lšœ œ˜.Lšœ œ˜Lšœ œ˜)Lšœœ˜Lšœœ ˜2Lšœ œ˜Lšœ œ˜L˜L˜Lšœ™L˜Lšœœœ˜+šœœœ˜!Lš œ&œœ œœ ˜V—L˜Lšœœœ˜-šœœœ˜"Lš œœœ œœ ˜G—L˜šœ œœœ˜Lšœ@™@—L˜Lšœœœ˜)šœœœ˜ Lš œœœ œœ ˜3L˜—Lšœœœ˜-šœœœ˜"Lš œœœ œœ ˜1—L˜Lšœœœ˜)šœœœ˜ Lšœœ˜ Lšœœ%œ ˜?Lšœœ%œ˜9Lšœ˜—L˜Lšœ œœ˜%šœœœ˜Lšœœ$œ˜4—L˜Lšœ œœ˜'šœœœ˜Lšœœ˜ Lšœœ"œ ˜:Lšœ˜L˜—Lšœ œœ˜#šœœœ˜šœœœ˜+Lšœ-™-——L˜—Lš ฯnœœ\œœœ˜–L˜š žœœsœœœ˜ฎLšœ-™-—L™Lš žœœHœœœ˜‹L˜Lš žœœaœœœ˜จL˜Lšžœœœ˜QLšžœœœ˜ML˜Lšœ˜—…—