DIRECTORY CastRays, CoordSys, CSG, CSGGraphics, DisplayList3d, Graphics, IO, ObjectCast, Rope, SV2d, SVBoundBox, SweepGeometry; BasicObject3d: DEFINITIONS = BEGIN BoundHedron: TYPE = SVBoundBox.BoundHedron; Camera: TYPE = CSGGraphics.Camera; LinearMesh: TYPE = SweepGeometry.LinearMesh; LightSourceList: TYPE = DisplayList3d.LightSourceList; MasterObject: TYPE = REF MasterObjectRec; MasterObjectRec: TYPE = DisplayList3d.MasterObjectRec; Point2d: TYPE = SV2d.Point2d; Primitive: TYPE = CSG.Primitive; RevoluteMesh: TYPE = SweepGeometry.RevoluteMesh; Assembly: TYPE = REF AssemblyObj; AssemblyObj: TYPE = DisplayList3d.AssemblyObj; CoordSystem: TYPE = REF CoordSysObj; CoordSysObj: TYPE = CoordSys.CoordSysObj; Classification: TYPE = REF ClassificationObj; ClassificationObj: TYPE = CastRays.ClassificationObj; Ray: TYPE = REF RayObj; RayObj: TYPE = CSG.RayObj; PlanarSurface: TYPE = REF PlanarSurfaceObj; PlanarSurfaceObj: TYPE = DisplayList3d.PlanarSurfaceObj; PlanarSurfaceList: TYPE = DisplayList3d.PlanarSurfaceList; SphereRec: TYPE = REF SphereRecObj; SphereRecObj: TYPE = RECORD [ radius: REAL]; BlockRec: TYPE = REF BlockRecObj; BlockRecObj: TYPE = RECORD [ x, y, z: REAL]; CylinderRec: TYPE = REF CylinderRecObj; CylinderRecObj: TYPE = RECORD [ radius, height: REAL]; ConeRec: TYPE = REF ConeRecObj; ConeRecObj: TYPE = RECORD [ radius, height: REAL]; TorusRec: TYPE = REF TorusRecObj; TorusRecObj: TYPE = RECORD [ bigRadius: REAL, sectionRadius: REAL]; 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; SphereMakeMasterObject: PROC [name: Rope.ROPE] RETURNS [mo: MasterObject]; SphereGetBoundHedron: PROC [mo: MasterObject] RETURNS [hedron: BoundHedron]; SphereRayCast: PROC [cameraPoint: Point2d, localRay: Ray, masterObject: REF ANY, prim: Primitive] RETURNS [class: Classification]; SpherePreprocess: PROC [prim: Primitive, camera: Camera]; SphereLineDraw: PROC[dc: Graphics.Context, data: REF ANY, camera: Camera, localCS: CoordSystem]; SphereDrawNormals: PROC[dc: Graphics.Context, data: REF ANY, camera: Camera, localCS: CoordSystem]; SphereCountSurf: PROC [masterObject: MasterObject] RETURNS [len: NAT]; SphereCountVert: PROC [masterObject: MasterObject] RETURNS [len: NAT]; SphereGetSurf: PROC [assembly: Assembly, camera: CoordSystem] RETURNS [psl: PlanarSurfaceList]; SphereDrawSurf: PROC [dc: Graphics.Context, ps: PlanarSurface, lightSources: LightSourceList, camera: Camera]; SphereDrawSubBoxes: PROC [dc: Graphics.Context, prim: Primitive, screenCS: CoordSystem]; SphereFileout: PROC [f: IO.STREAM, mo: MasterObject]; SphereFilein: PROC [f: IO.STREAM, name: Rope.ROPE] RETURNS [mo: MasterObject]; BlockMakeMasterObject: PROC [name: Rope.ROPE] RETURNS [mo: MasterObject]; BlockGetBoundHedron: PROC [mo: MasterObject] RETURNS [hedron: BoundHedron]; BlockRayCast: PROC [cameraPoint: Point2d, localRay: Ray, masterObject: REF ANY, prim: Primitive] RETURNS [class: Classification]; BlockPreprocess: PROC [prim: Primitive, camera: Camera]; BlockLineDraw: PROC[dc: Graphics.Context, data: REF ANY, camera: Camera, localCS: CoordSystem]; BlockDrawNormals: PROC[dc: Graphics.Context, data: REF ANY, camera: Camera, localCS: CoordSystem]; BlockCountSurf: PROC [masterObject: MasterObject] RETURNS [len: NAT]; BlockCountVert: PROC [masterObject: MasterObject] RETURNS [len: NAT]; BlockGetSurf: PROC [assembly: Assembly, camera: CoordSystem] RETURNS [psl: PlanarSurfaceList]; BlockDrawSurf: PROC [dc: Graphics.Context, ps: PlanarSurface, lightSources: LightSourceList, camera: Camera]; BlockDrawSubBoxes: PROC [dc: Graphics.Context, prim: Primitive, screenCS: CoordSystem]; BlockFileout: PROC [f: IO.STREAM, mo: MasterObject]; BlockFilein: PROC [f: IO.STREAM, name: Rope.ROPE] RETURNS [mo: MasterObject]; CylinderMakeMasterObject: PROC [name: Rope.ROPE] RETURNS [mo: MasterObject]; CylinderBoundHedron: PROC [mo: MasterObject] RETURNS [hedron: BoundHedron]; CylinderRayCast: PROC [cameraPoint: Point2d, localRay: Ray, masterObject: REF ANY, prim: Primitive] RETURNS [class: Classification]; CylinderPreprocess: PROC [prim: Primitive, camera: Camera]; CylinderLineDraw: PROC[dc: Graphics.Context, data: REF ANY, camera: Camera, localCS: CoordSystem]; CylinderDrawNormals: PROC[dc: Graphics.Context, data: REF ANY, camera: Camera, localCS: CoordSystem]; CylinderCountSurf: PROC [masterObject: MasterObject] RETURNS [len: NAT]; CylinderCountVert: PROC [masterObject: MasterObject] RETURNS [len: NAT]; CylinderGetSurf: PROC [assembly: Assembly, camera: CoordSystem] RETURNS [psl: PlanarSurfaceList]; CylinderDrawSurf: PROC [dc: Graphics.Context, ps: PlanarSurface, lightSources: LightSourceList, camera: Camera]; CylinderDrawSubBoxes: PROC [dc: Graphics.Context, prim: Primitive, screenCS: CoordSystem]; CylinderFileout: PROC [f: IO.STREAM, mo: MasterObject]; CylinderFilein: PROC [f: IO.STREAM, name: Rope.ROPE] RETURNS [mo: MasterObject]; ConeMakeMasterObject: PROC [name: Rope.ROPE] RETURNS [mo: MasterObject]; ConeBoundHedron: PROC [mo: MasterObject] RETURNS [hedron: BoundHedron]; ConeRayCast: PROC [cameraPoint: Point2d, localRay: Ray, masterObject: REF ANY, prim: Primitive] RETURNS [class: Classification]; ConePreprocess: PROC [prim: Primitive, camera: Camera]; ConeLineDraw: PROC[dc: Graphics.Context, data: REF ANY, camera: Camera, localCS: CoordSystem]; ConeDrawNormals: PROC[dc: Graphics.Context, data: REF ANY, camera: Camera, localCS: CoordSystem]; ConeCountSurf: PROC [masterObject: MasterObject] RETURNS [len: NAT]; ConeCountVert: PROC [masterObject: MasterObject] RETURNS [len: NAT]; ConeGetSurf: PROC [assembly: Assembly, camera: CoordSystem] RETURNS [psl: PlanarSurfaceList]; ConeDrawSurf: PROC [dc: Graphics.Context, ps: PlanarSurface, lightSources: LightSourceList, camera: Camera]; ConeDrawSubBoxes: PROC [dc: Graphics.Context, prim: Primitive, screenCS: CoordSystem]; ConeFileout: PROC [f: IO.STREAM, mo: MasterObject]; ConeFilein: PROC [f: IO.STREAM, name: Rope.ROPE] RETURNS [mo: MasterObject]; TorusMakeMasterObject: PROC [name: Rope.ROPE, bigRadius: REAL, sectionRadius: REAL] RETURNS [mo: MasterObject]; TorusBoundHedron: PROC [mo: MasterObject] RETURNS [hedron: BoundHedron]; TorusRayCast: PROC [cameraPoint: Point2d, localRay: Ray, masterObject: REF ANY, prim: Primitive] RETURNS [class: Classification]; TorusPreprocess: PROC [prim: Primitive, camera: Camera]; TorusLineDraw: PROC[dc: Graphics.Context, data: REF ANY, camera: Camera, localCS: CoordSystem]; TorusDrawNormals: PROC[dc: Graphics.Context, data: REF ANY, camera: Camera, localCS: CoordSystem]; TorusCountSurf: PROC [masterObject: MasterObject] RETURNS [len: NAT]; TorusCountVert: PROC [masterObject: MasterObject] RETURNS [len: NAT]; TorusGetSurf: PROC [assembly: Assembly, camera: CoordSystem] RETURNS [psl: PlanarSurfaceList]; TorusDrawSurf: PROC [dc: Graphics.Context, ps: PlanarSurface, lightSources: LightSourceList, camera: Camera]; TorusDrawSubBoxes: PROC [dc: Graphics.Context, prim: Primitive, screenCS: CoordSystem]; TorusFileout: PROC [f: IO.STREAM, mo: MasterObject]; TorusFilein: PROC [f: IO.STREAM, name: Rope.ROPE] RETURNS [mo: MasterObject]; LinSweepMakeMasterObject: PROC [name: Rope.ROPE, linMesh: LinearMesh] RETURNS [mo: MasterObject]; LinSweepBoundHedron: PROC [mo: MasterObject] RETURNS [hedron: BoundHedron]; LinSweepRayCast: PROC [cameraPoint: Point2d, localRay: Ray, masterObject: REF ANY, prim: Primitive] RETURNS [class: Classification]; LinSweepPreprocess: PROC [prim: Primitive, camera: Camera]; LinSweepLineDraw: PROC[dc: Graphics.Context, data: REF ANY, camera: Camera, localCS: CoordSystem]; LinSweepDrawNormals: PROC[dc: Graphics.Context, data: REF ANY, camera: Camera, localCS: CoordSystem]; LinSweepCountSurf: PROC [masterObject: MasterObject] RETURNS [len: NAT]; LinSweepCountVert: PROC [masterObject: MasterObject] RETURNS [len: NAT]; LinSweepGetSurf: PROC [assembly: Assembly, camera: CoordSystem] RETURNS [psl: PlanarSurfaceList]; LinSweepDrawSurf: PROC [dc: Graphics.Context, ps: PlanarSurface, lightSources: LightSourceList, camera: Camera]; LinSweepDrawSubBoxes: PROC [dc: Graphics.Context, prim: Primitive, screenCS: CoordSystem]; LinSweepFileout: PROC [f: IO.STREAM, mo: MasterObject]; LinSweepFilein: PROC [f: IO.STREAM, name: Rope.ROPE] RETURNS [mo: MasterObject]; RevoSweepMakeMasterObject: PROC [name: Rope.ROPE, revMesh: RevoluteMesh] RETURNS [mo: MasterObject]; RevoSweepBoundHedron: PROC [mo: MasterObject] RETURNS [hedron: BoundHedron]; RevoSweepRayCast: PROC [cameraPoint: Point2d, localRay: Ray, masterObject: REF ANY, prim: Primitive] RETURNS [class: Classification]; RevoSweepPreprocess: PROC [prim: Primitive, camera: Camera]; RevoSweepLineDraw: PROC[dc: Graphics.Context, data: REF ANY, camera: Camera, localCS: CoordSystem]; RevoSweepDrawNormals: PROC[dc: Graphics.Context, data: REF ANY, camera: Camera, localCS: CoordSystem]; RevoSweepCountSurf: PROC [masterObject: MasterObject] RETURNS [len: NAT]; RevoSweepCountVert: PROC [masterObject: MasterObject] RETURNS [len: NAT]; RevoSweepGetSurf: PROC [assembly: Assembly, camera: CoordSystem] RETURNS [psl: PlanarSurfaceList]; RevoSweepDrawSurf: PROC [dc: Graphics.Context, ps: PlanarSurface, lightSources: LightSourceList, camera: Camera]; RevoSweepDrawSubBoxes: PROC [dc: Graphics.Context, prim: Primitive, screenCS: CoordSystem]; RevoSweepFileout: PROC [f: IO.STREAM, mo: MasterObject]; RevoSweepFilein: PROC [f: IO.STREAM, name: Rope.ROPE] RETURNS [mo: MasterObject]; END. βFile: BasicObject3d.mesa Last edited by Bier on August 12, 1983 2:12 pm Contents: Defines a simple set of objects which can be display with ray casting, line drawing, or shaded planar-surface approximation BASIC SHAPES Κ χ– "cedar" style˜Iheadšœ™Iprocšœ.™.Lšœ…™…L˜šΟk ˜ Lšœ ˜ Lšœ ˜ Lšœ˜Lšœ ˜ Lšœ˜Lšœ ˜ Lšœ˜Lšœ ˜ Lšœ˜Lšœ˜Lšœ ˜ Lšœ˜—L˜Lšœ œ˜Lš˜˜Lšœ œ˜+Lšœœ˜"Lšœ œ˜,Lšœœ!˜6Lšœœœ˜)Lšœœ!˜6Lšœ œ˜Lšœ œœ ˜ Lšœœ˜0Lšœ œœ ˜!Lšœ œ˜.Lšœ œœ ˜$Lšœ œ˜)L˜Lšœœœ˜.Lšœœ˜5L˜Lšœœœ˜Lšœœœ˜L˜Lšœœœ˜+Lšœœ"˜8Lšœœ#˜:L˜—Lšœ ™ ˜Lšœ œœ˜#Lšœœœ˜Lšœœ˜L˜Lšœ œœ ˜!Lšœ œœ˜Lšœ œ˜L˜Lšœ œœ˜'Lšœœœ˜Lšœœ˜L˜Lšœ œœ ˜Lšœ œœ˜Lšœœ˜L˜Lšœ œœ ˜!Lšœ œœ˜Lšœ œ˜Lšœœ˜L˜LšœœQ˜lLšœœs˜ŠL˜LšΟnœœ œœ˜JLšžœœœ˜LLš ž œœ5œœœ˜‚Lšžœœ#˜9Lšžœœœœ(˜`Lšžœœœœ(˜cLšžœœœœ˜FLšžœœœœ˜FLšž œœ+œ˜_LšžœœZ˜nLšžœœ@˜XLšž œœœœ˜5Lš ž œœœœ œœ˜NL˜Lšžœœ œœ˜ILšžœœœ˜KLš ž œœ5œœœ˜Lšžœœ#˜8Lšž œœœœ(˜_Lšžœœœœ(˜bLšžœœœœ˜ELšžœœœœ˜ELšž œœ+œ˜^Lšž œœZ˜mLšžœœ@˜WLšž œœœœ˜4Lš ž œœœœ œœ˜ML˜Lšžœœ œœ˜LLšžœœœ˜KLš žœœ5œœœ˜„Lšžœœ#˜;Lšžœœœœ(˜bLšžœœœœ(˜eLšžœœœœ˜HLšžœœœœ˜HLšžœœ+œ˜aLšžœœZ˜pLšžœœ@˜ZLšžœœœœ˜7Lš žœœœœ œœ˜PL˜Lšžœœ œœ˜HLšžœœœ˜GLš ž œœ5œœœ˜€Lšžœœ#˜7Lšž œœœœ(˜^Lšžœœœœ(˜aLšž œœœœ˜DLšž œœœœ˜DLšž œœ+œ˜]Lšž œœZ˜lLšžœœ@˜VLšž œœœœ˜3Lš ž œœœœ œœ˜LL˜Lš žœœ œ œœœ˜oLšžœœœ˜HLš ž œœ5œœœ˜Lšžœœ#˜8Lšž œœœœ(˜_Lšžœœœœ(˜bLšžœœœœ˜ELšžœœœœ˜ELšž œœ+œ˜^Lšž œœZ˜mLšžœœ@˜WLšž œœœœ˜4Lš ž œœœœ œœ˜ML˜Lšžœœ œœ˜aLšžœœœ˜KLš žœœ5œœœ˜„Lšžœœ#˜;Lšžœœœœ(˜bLšžœœœœ(˜eLšžœœœœ˜HLšžœœœœ˜HLšžœœ+œ˜aLšžœœZ˜pLšžœœ@˜ZLšžœœœœ˜7Lš žœœœœ œœ˜PL˜Lšžœœ œœ˜dLšžœœœ˜LLš žœœ5œœœ˜…Lšžœœ#˜