DIRECTORY AIS, Imager, Rope, SV2d, SV3d; SVModelTypes: DEFINITIONS = BEGIN Color: TYPE = Imager.Color; Matrix3by3: TYPE = SV2d.Matrix3by3; Matrix4by4: TYPE = SV3d.Matrix4by4; Plane: TYPE = SV3d.Plane; Point2d: TYPE = SV2d.Point2d; Point3d: TYPE = SV3d.Point3d; Polygon: TYPE = SV2d.Polygon; Vector: TYPE = SV3d.Vector; CoordSystem2d: TYPE = REF CoordSystem2dObj; CoordSystem2dObj: TYPE = RECORD [ mat: Matrix3by3, localWRTPad: Matrix3by3, padWRTLocal: Matrix3by3, withRespectTo: CoordSystem2d]; CoordSystem: TYPE = REF CoordSysObj; CoordSysObj: TYPE = RECORD [ name: Rope.ROPE, scalarsOnly: BOOL, scalars: Vector, mat: Matrix4by4, wrtCamera: Matrix4by4, wrtWorld: Matrix4by4, cameraWRTlocal: Matrix4by4, worldWRTlocal: Matrix4by4, parent: CoordSystem, children: CoordSysList, dirty: BOOL _ TRUE]; CoordSysList: TYPE = LIST OF CoordSystem; OMap: TYPE = {orthogonal, radial, tubeO}; SMap: TYPE = {unfoldedBox, tubeS}; Material: TYPE = {plastic, chalk}; -- remember to update MaterialToRope and RopeToMaterial if you change this list ArtworkClass: TYPE = {justColor, simpleSurface, spaceFunction}; Artwork: TYPE = REF ArtworkObj; ArtworkObj: TYPE = RECORD [ class: ArtworkClass, coordSys: CoordSystem, material: Material, surface: REF ANY, -- an SVMappings. oMap: OMap, -- the simple surface to object mapping sMap: SMap, -- the artwork to simple surface mapping source: Rope.ROPE, color: Color, isColorFile: BOOL, resolution: REAL, halfWidth, halfHeight: REAL,-- in inches halfWidthDots, halfHeightDots: REAL, -- in samples centerWRTLowerLeft: Point2d, -- in screen dots artWRTPad: CoordSystem2d, redfile: AIS.FRef, greenfile: AIS.FRef, bluefile: AIS.FRef, blackfile: AIS.FRef, redWindow: AIS.WRef, greenWindow: AIS.WRef, blueWindow: AIS.WRef, blackWindow: AIS.WRef, open: BOOL]; PRect: TYPE = REF PRectObj; PRectObj: TYPE = RECORD [xmin, ymin, xmax, ymax: REAL]; PDisk: TYPE = REF PDiskObj; PDiskObj: TYPE = RECORD [r: REAL, origin: Point2d]; Tube: TYPE = REF TubeObj; TubeObj: TYPE = RECORD [R: REAL, H: REAL, tubePoly: Polygon]; Disk: TYPE = REF DiskObj; DiskObj: TYPE = RECORD [R: REAL, halfH: REAL]; Box: TYPE = REF BoxObj; BoxObj: TYPE = RECORD [x, halfX, y, halfY, threeHalvesY, z, halfZ: REAL, faces: ARRAY [1..6] OF Polygon]; TubeLine: TYPE = REF TubeLineObj; TubeLineObj: TYPE = RECORD [ p1, p2: Point2d]; SpaceFunction: TYPE = REF SpaceFunctionObj; SpaceFunctionObj: TYPE = RECORD [scalars: Point3d]; LightSourceType: TYPE = {point, ambient}; LightSource: TYPE = REF LightSourceObj; LightSourceObj: TYPE = RECORD [ name: Rope.ROPE, position: Point3d _ [0,0,0], -- position in WORLD. color: Color, type: LightSourceType _ ambient]; LightSourceList: TYPE = LIST OF LightSource; BoundHedron: TYPE = REF BoundHedronObj; BoundHedronObj: TYPE = RECORD [ len: NAT, seq: SEQUENCE maxVerts: NAT OF Point3d]; BoundBox: TYPE = REF BoundBoxObj; BoundBoxObj: TYPE = RECORD [ minVert: Point3d, -- min x, y and z makes this lower-left-deep maxVert: Point3d]; -- max x, y and z makes this upper-right-shallow BoundSphere: TYPE = REF BoundSphereObj; BoundSphereObj: TYPE = RECORD [ center: Point3d, -- in Camera coordinates radius: REAL, radiusSquared: REAL]; DrawStyle: TYPE = {wire, shaded, rayCast, normals}; -- if you change this, remember to update DrawStyleToRope and RopeToDrawStyle in CSGGraphics. Projection: TYPE = {perspective, orthogonal}; Camera: TYPE = REF CameraObj; CameraObj: TYPE = RECORD [ viewName: Rope.ROPE, coordSys: CoordSystem, screenCS: CoordSystem, resolution: REAL, focalLength: REAL, projection: Projection, frame: FrameBox, clippingPlanes: LIST OF Plane, visibleAssemblies: LIST OF Rope.ROPE, style: DrawStyle, colorFilm: BOOL, quality: QualityMode, abort: BOOL _ FALSE, useBoundBoxes: BOOL _ TRUE, useBoundSpheresForShadows: BOOL _ TRUE, lastPoint: Point3d _ [0,0,0]]; QualityMode: TYPE = {fast, quality}; FrameBox: TYPE = REF FrameBoxObj; FrameBoxObj: TYPE = RECORD [ downLeft: Point2d, upRight: Point2d, fullScreen: BOOL]; -- these points are in CAMERA coordinates END.  File: SVModelTypes.mesa Created on July 29, 1984 2:14:29 pm PDT Copyright c 1984 by Xerox Corporation. All rights reserved. Last edited by Bier on August 1, 1985 0:18:34 am PDT Coordinate Systems Artwork Types Mapping Types (theta, h) pairs. Theta in degrees. Shading Types Bounding Volume Types Camera Type If you change this, remember to update ProjectionToRope and RopeToProjection in CSGGraphics. Κ`˜Ihead™J™'Jšœ Οmœ1™Jšœžœžœ ˜Jš œ žœžœžœžœ žœ˜.J˜Jšœžœžœ˜Jš œžœžœ.žœ žœžœ ˜jJšœ žœžœ ˜!šœ žœžœ˜Jšœ˜—Jšœ$™$J™Jšœžœžœ˜+Jšœžœžœ˜3J™K™ Jšœžœ˜)Jšœ žœžœ˜'šœžœžœ˜Jšœ žœ˜JšœŸ˜2Jšœ ˜ Jšœ!˜!—Jšœžœžœžœ ˜,J˜K™Lšœ žœžœ˜'šœžœžœ˜Lšœžœ˜ Lšœžœ žœžœ ˜(—L˜Lšœ žœžœ ˜!šœ žœžœ˜Lšœ>˜>LšœC˜CL˜—Jšœ žœžœ˜'šœžœžœ˜LšœŸ˜*Lšœž˜ LšœžœŸ˜—K™ L™Lšœ žœ%ŸNœŸ˜‘šœ žœ˜-Lšœ]™]—Lšœžœžœ ˜šœ žœžœ˜Lšœžœ˜Lšœ˜Lšœ˜Lšœ žœ˜Lšœ žœ˜L˜Lšœ˜Lšœžœžœ˜Lšœžœžœžœ˜%Lšœ˜Lšœ žœ˜Lšœ˜Lšœžœžœ˜Lšœžœž˜Lšœžœžœ˜'Lšœ˜L˜—šœ žœ˜$L˜—L˜Lšœ žœžœ ˜!šœ žœžœ˜Lšœ˜Lšœ˜Lšœ žœŸ)˜<—J™J™J˜Jšžœ˜J˜—…—ΒΒ