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
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;
BASIC SHAPES
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: BOOLTRUE] RETURNS [class: Classification];
HalfSpaceRayCastNoBBoxes: PROC [localRay: Ray, sliceD: SliceDescriptor, prim: Primitive, positiveTOnly: BOOLTRUE] RETURNS [class: Classification];
HalfSpaceRayCastBoundingSpheres: PROC [localRay: Ray, sliceD: SliceDescriptor, prim: Primitive, positiveTOnly: BOOLTRUE] 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.