DIRECTORY Imager, IO, Rope, SV2d, SV3d, SVBasicTypes, SVModelTypes, SVSceneTypes; SVHalfSpaces: CEDAR DEFINITIONS = BEGIN BoundHedron: TYPE = SVBasicTypes.BoundHedron; Camera: TYPE = SVModelTypes.Camera; CoordSystem: TYPE = SVModelTypes.CoordSystem; Classification: TYPE = SVSceneTypes.Classification; LightSourceList: TYPE = SVModelTypes.LightSourceList; Point2d: TYPE = SV2d.Point2d; Point3d: TYPE = SV3d.Point3d; Ray: TYPE = SVSceneTypes.Ray; PlanarSurface: TYPE = SVSceneTypes.PlanarSurface; PlanarSurfaceList: TYPE = SVSceneTypes.PlanarSurfaceList; MasterObject: TYPE = SVSceneTypes.MasterObject; Primitive: TYPE = SVSceneTypes.Primitive; Slice: TYPE = SVSceneTypes.Slice; SliceDescriptor: TYPE = SVSceneTypes.SliceDescriptor; HalfSpaceRec: TYPE = REF HalfSpaceRecObj; HalfSpaceRecObj: TYPE = RECORD [ gridSide: REAL]; PlaneSurface: TYPE = REF PlaneSurfaceObj; PlaneSurfaceObj: TYPE = RECORD [ ]; LonelyAssemblyHasSon: ERROR; -- returned from *PrimitiveFromAssembly if assembly is not a primitive assembly WrongTypeOfData: SIGNAL; -- signalled if the assembly given to *PrimitiveFromAssembly has an assembly.object which is not a MasterObject; HalfSpaceMakeMasterObject: PROC [name: Rope.ROPE] RETURNS [mo: MasterObject]; HalfSpaceGetBoundHedron: PROC [mo: MasterObject] RETURNS [hedron: BoundHedron]; HalfSpaceRayCast: PROC [cameraPoint: Point2d, localRay: Ray, sliceD: SliceDescriptor, prim: Primitive, positiveTOnly: BOOL _ TRUE] RETURNS [class: Classification]; HalfSpaceRayCastNoBBoxes: PROC [localRay: Ray, sliceD: SliceDescriptor, prim: Primitive, positiveTOnly: BOOL _ TRUE] RETURNS [class: Classification]; HalfSpaceRayCastBoundingSpheres: PROC [localRay: Ray, sliceD: SliceDescriptor, prim: Primitive, positiveTOnly: BOOL _ TRUE] RETURNS [class: Classification]; HalfSpacePreprocess: PROC [prim: Primitive, camera: Camera]; HalfSpaceLineDraw: PROC[slice: Slice, dc: Imager.Context, camera: Camera]; HalfSpaceDrawNormals: PROC[dc: Imager.Context, data: REF ANY, camera: Camera, localCS: CoordSystem]; HalfSpaceCountSurf: PROC [masterObject: MasterObject] RETURNS [len: NAT]; HalfSpaceCountVert: PROC [masterObject: MasterObject] RETURNS [len: NAT]; HalfSpaceGetSurf: PROC [slice: Slice, camera: CoordSystem, eyeWorld: Point3d] RETURNS [psl: PlanarSurfaceList]; HalfSpaceDrawSurf: PROC [dc: Imager.Context, ps: PlanarSurface, lightSources: LightSourceList, camera: Camera, eyeWorld: Point3d, hiddenLine: BOOL]; HalfSpaceDrawSubBoxes: PROC [dc: Imager.Context, prim: Primitive, screenCS: CoordSystem]; HalfSpaceFileout: PROC [f: IO.STREAM, mo: MasterObject]; END. ΜFile: SVHalfSpaces.mesa Author: Eric Bier on May 31, 1984 3:11:36 pm PDT Last edited by Bier: August 29, 1987 2:25:13 pm PDT Contents: Implementation of the half-space object class BASIC SHAPES Κ“˜Ihead™J™0J™3J™8šΟk ˜ Jšœœ=˜GIproc˜—Jšœœ˜"šœ˜Lšœ œ˜-Lšœœ˜#Lšœ œ˜-Lšœœ ˜4Lšœœ ˜5Lšœ œ˜Lšœ œ˜Lšœœ˜Lšœœ˜1Lšœœ"˜9Lšœœ˜/Lšœ œ˜)Lšœœ˜!Lšœœ ˜5L™Lšœ ™ Lšœœœ˜)šœœœ˜ Lšœ œ˜—Lšœœœ˜)šœœœ˜ Lšœ˜—LšœœΟcO˜lLšœœžq˜‹—JšΟnœœ œœ˜MLšŸœœœ˜OLš Ÿœœ`œœœ˜£Lš ŸœœJœœœ˜•Lš ŸœœJœœœ˜œLšŸœœ#˜˜YLšŸœœœœ˜8L˜Jšœ˜—…—  y