DIRECTORY ThreeDPackage USING [Triple, Quad, Transformation3D], Rope USING [ROPE]; PolygonPackage: CEDAR DEFINITIONS ~ BEGIN Triple: TYPE ~ ThreeDPackage.Triple; -- RECORD [ x, y, z: REAL]; Quad: TYPE ~ ThreeDPackage.Quad; -- RECORD [ x, y, z, w: REAL]; ClrTriple: TYPE ~ RECORD [ r, g, b: REAL]; OutCode: TYPE ~ RECORD[bottom, top, left, right, near, far: BOOLEAN]; NoneOut: OutCode ~ [FALSE, FALSE, FALSE, FALSE, FALSE, FALSE]; AllOut: OutCode ~ [TRUE, TRUE, TRUE, TRUE, TRUE, TRUE]; Transformation3D: TYPE ~ ThreeDPackage.Transformation3D; -- RECORD [ a, b, c, d: Quad]; LightList: TYPE ~ LIST OF Light; Light: TYPE ~ RECORD[ pos: Triple, clr: ClrTriple, ambient: REAL]; ClipWindow: TYPE ~ RECORD [xMin, yMin, xMax, yMax, depth: REAL]; Vertex: TYPE ~ RECORD[ x, y, z, ex, ey, ez: REAL, ix, iy: INTEGER, clip: OutCode]; VertexSequenceRep: TYPE ~ RECORD[SEQUENCE length: NAT OF Vertex]; ShadingType: TYPE ~ {none, smooth, faceted, fancy}; ShadingValue: TYPE ~ RECORD[xn, yn, zn, r, g, b, t, txtrX, txtrY: REAL, value: LONG CARDINAL]; ShadingSequenceRep: TYPE ~ RECORD[SEQUENCE length: NAT OF ShadingValue]; TextureCoord: TYPE ~ RECORD[txtrX, txtrY: REAL]; PolygonTexture: TYPE ~ RECORD[nVtces: NAT, vtx: SEQUENCE length: NAT OF TextureCoord]; PolygonTextureSequenceRep: TYPE ~ RECORD [SEQUENCE length: NAT OF REF PolygonTexture]; VertexInfo: TYPE ~ RECORD[coord: Vertex, shade: ShadingValue]; Polygon: TYPE ~ RECORD[nVtces: NAT, vtx: SEQUENCE length: NAT OF VertexInfo]; PolygonSequenceRep: TYPE ~ RECORD [SEQUENCE length: NAT OF REF Polygon]; PtrPoly: TYPE ~ RECORD[nVtces: NAT, clipState: ClipState, vtxPtr: SEQUENCE length: NAT OF NAT]; PtrPolySequenceRep: TYPE ~ RECORD[SEQUENCE length: NAT OF REF PtrPoly]; ClipState: TYPE ~ { in, out, clipped }; Object: TYPE ~ RECORD[ name: Rope.ROPE, numPolys, numVtces: INT, clipState: ClipState, shadingInValid, vtcesInValid: BOOLEAN, centroid: Triple, boundingRadius: REAL, eyeCntroid: Triple, eyeBndngRadius: REAL, shading: ShadingType, color: ClrTriple, shininess, transmittance: REAL, position: Transformation3D, polygon: REF PtrPolySequenceRep, vertex: REF VertexSequenceRep, shade: REF ShadingSequenceRep, texture: REF PolygonTextureSequenceRep ]; ObjectPolygon: TYPE ~ RECORD[object: REF Object, polygon, next: NAT]; SortSequenceRep: TYPE ~ RECORD[SEQUENCE length: NAT OF ObjectPolygon]; RGBToPixelProc: TYPE ~ PROC [r, g, b: REAL] RETURNS [CARDINAL]; GetTransforms: PUBLIC PROC[ eyePt, ptOfInterest: Triple, width, height: NAT, fieldOfView: REAL _ 40., nearLimit: REAL _ .01 ] RETURNS[eyeSpace: Transformation3D]; BackFacing: PROC[ poly: REF Polygon] RETURNS [BOOLEAN]; ShadePoly: PROC[ poly: REF Polygon, light: LightList] RETURNS [REF Polygon]; ClipPoly: PROC[ poly, poly2: REF Polygon, shading, normals: BOOLEAN] RETURNS [REF Polygon, REF Polygon]; GetObject: PROC[fileName: Rope.ROPE] RETURNS[REF Object]; GetColors: PROC[colorFile: Rope.ROPE, object: REF Object, numExpected: INT]; GetCoords: PUBLIC PROC[coordinateFile: Rope.ROPE, object: REF Object, numExpected: INT]; GetSolidColor: PROC[color: ClrTriple, object: REF Object, numExpected: INT]; GetPolyNormals: PROC[object: REF Object]; GetVtxNormals: PROC[object: REF Object]; XfmVtces: PROC[object: REF Object, xfm: Transformation3D] RETURNS[ClipState]; GetShades: PROC[object: REF Object, lights: LightList, Proc: RGBToPixelProc]; LoadSortSequence: PUBLIC PROC[objects: LIST OF REF Object] RETURNS[REF SortSequenceRep]; DoInSequence: PROC[sortSeq: REF SortSequenceRep, action: PROC[ObjectPolygon]]; DoForPolygons: PROC[objects: LIST OF REF Object, action: PROC[ObjectPolygon]]; ClipIntPoly: PROC[poly: ObjectPolygon]; IntShade: PROC[xn, yn, zn: INTEGER, lights: LightList] RETURNS[INTEGER]; END.  PolygonPackage.mesa Last Edited by: Crow, December 6, 1983 1:28 pm coordinates, eyespace coords, texture coords, imagespace coords, clip code normals, color, transmittance, computed packed color value Read texture coordinates from named file and enter in the corresponding vertices ΚL˜headšœ™Jšœ.™.J˜JšΟk ˜ Jšœœ"˜5Jšœœœ˜J˜—head2šœœ ˜!Jšœ˜J˜—JšœœΟc˜FJšœœž˜FJšœ œœ œ˜*Jšœ œœ&œ˜EJš œœœœœœœ˜>Jš œœœœœœœ˜7Iunitšœœ"ž˜WJšœ œœœ˜ Jšœœœ(œ˜BJšœ œœ!œ˜@š œœœœ  œ˜SIa™J—Jš œœœœ œœ ˜BMšœ œ"˜3š œœœ'œ œœ˜^Nšœ:™:—Jš œœœœ œœ˜HMšœœœœ˜0Jš œœœ œœ œœ˜VJš œœœœ œœœ˜VMšœ œœ%˜>Mš œ œœ œœ œœ ˜MNš œœœœ œœœ ˜HJšœ œœ œ œ œœœ˜`Jš œœœœ œœœ ˜HMšœ œ˜'šœœœ˜Jšœ œ˜Jšœœ˜J˜Jšœœ˜&Jšœ"œ˜'Jšœ$œ˜)JšœBœ˜GJ˜Jšœ œ˜ Jšœ œ˜Jšœ œ˜!Jšœ œ˜'J˜J˜—Jš œœœ œœ˜EJš œœœœ œœ˜FMš œœœ œœœ˜TJšΟn œœœ.œ˜MNšœœœ ˜>Nšœœ˜)Nš Ÿ œœœ œœ˜7Nš Ÿ œœœœœ ˜LJšŸœœœœ˜EJšœœœ œ ˜'Jš Ÿ œœœœœ ˜9š Ÿ œœœ œœ˜MJšœP™P—Jš Ÿ œœœœ œœ˜XJšŸ œœœœ˜LJšŸœœ œ ˜)JšŸ œœ œ ˜(JšŸœœ œœ ˜MJšŸ œœ œ2˜MJšŸœœœ œœœ œœ˜XJšŸ œœ œœ˜OJš Ÿ œœ œœœœ˜NJšŸ œœ˜'š Ÿœœ œœœ˜HJšœœ˜—J˜—…—Π<