File: SVHalfSpaces.mesa
Author: Eric Bier on August 12, 1983 1:58 pm
Last edited by Bier: August 12, 1983 2:55 pm
Contents: Implementation of the half-space object class
DIRECTORY
CastRays,
CoordSys,
CSG,
CSGGraphics,
DisplayList3d,
Graphics,
IO,
Rope,
SV2d,
SVBoundBox;
SVHalfSpaces: DEFINITIONS =
BEGIN
BoundHedron: TYPE = SVBoundBox.BoundHedron;
CoordSystem: TYPE = REF CoordSysObj;
CoordSysObj: TYPE = CoordSys.CoordSysObj;
Classification: TYPE = REF ClassificationObj;
ClassificationObj: TYPE = CastRays.ClassificationObj;
LightSourceList: TYPE = DisplayList3d.LightSourceList;
Point2d: TYPE = SV2d.Point2d;
Ray: TYPE = REF RayObj;
RayObj: TYPE = CSG.RayObj;
PlanarSurface: TYPE = REF PlanarSurfaceObj;
PlanarSurfaceObj: TYPE = DisplayList3d.PlanarSurfaceObj;
PlanarSurfaceList: TYPE = DisplayList3d.PlanarSurfaceList;
Camera: TYPE = CSGGraphics.Camera;
MasterObject: TYPE = REF MasterObjectRec;
MasterObjectRec: TYPE = DisplayList3d.MasterObjectRec;
Primitive: TYPE = CSG.Primitive;
Assembly: TYPE = REF AssemblyObj;
AssemblyObj: TYPE = DisplayList3d.AssemblyObj;
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, masterObject: REF ANY, prim: Primitive] RETURNS [class: Classification];
HalfSpacePreprocess: PROC [prim: Primitive, camera: Camera];
HalfSpaceLineDraw: PROC[dc: Graphics.Context, data: REF ANY, camera: Camera, localCS: CoordSystem];
HalfSpaceDrawNormals: PROC[dc: Graphics.Context, data: REF ANY, camera: Camera, localCS: CoordSystem];
HalfSpaceCountSurf: PROC [masterObject: MasterObject] RETURNS [len: NAT];
HalfSpaceCountVert: PROC [masterObject: MasterObject] RETURNS [len: NAT];
HalfSpaceGetSurf: PROC [assembly: Assembly, camera: CoordSystem] RETURNS [psl: PlanarSurfaceList];
HalfSpaceDrawSurf: PROC [dc: Graphics.Context, ps: PlanarSurface, lightSources: LightSourceList, camera: Camera];
HalfSpaceDrawSubBoxes: PROC [dc: Graphics.Context, prim: Primitive, screenCS: CoordSystem];
HalfSpaceFileout: PROC [f: IO.STREAM, mo: MasterObject];
HalfSpaceFilein: PROC [f: IO.STREAM, name: Rope.ROPE] RETURNS [mo: MasterObject];
END.