<> <> <> DIRECTORY Matrix3d, ThreeDBasics, Vector3d; Polygons3d: CEDAR DEFINITIONS ~ BEGIN <> origin: Triple ~ Vector3d.origin; xAxis: Triple ~ Vector3d.xAxis; yAxis: Triple ~ Vector3d.yAxis; zAxis: Triple ~ Vector3d.zAxis; Pair: TYPE ~ Vector3d.Pair; PairSequence: TYPE ~ Vector3d.PairSequence; PairSequenceRep: TYPE ~ Vector3d.PairSequenceRep; Triple: TYPE ~ Vector3d.Triple; TripleSequence: TYPE ~ Vector3d.TripleSequence; TripleSequenceRep: TYPE ~ Vector3d.TripleSequenceRep; Matrix: TYPE ~ Matrix3d.Matrix; NatTable: TYPE ~ ThreeDBasics.NatTable; NatSequence: TYPE ~ ThreeDBasics.NatSequence; Triangle: TYPE ~ RECORD [i0, i1, i2: INTEGER _ -1]; TriangleSequence: TYPE ~ REF TriangleSequenceRep; TriangleSequenceRep: TYPE ~ RECORD [ length: NAT _ 0, element: SEQUENCE maxLength: NAT OF Triangle ]; MinMaxPairs: TYPE ~ RECORD [min, max: Pair]; MinMaxTriples: TYPE ~ RECORD [min, max: Triple]; <> TriangleNormal: PUBLIC PROC [p0, p1, p2: Triple] RETURNS [Triple]; <> <> << >> PolygonNormal: PUBLIC PROC [vertices: TripleSequence] RETURNS [Triple]; <> <> <> <> << >> PolygonNormals: PUBLIC PROC [ polygons: REF NatTable, vertices: TripleSequence, normals: TripleSequence _ NIL] RETURNS [TripleSequence]; <> <<>> ApplyToFrontFacingPolygons: PUBLIC PROC [ proc: PROC[nPoly: NAT], polygons: REF NatTable, pairs: PairSequence, view: Matrix, normals: TripleSequence]; <> <> CopyPolygon: PUBLIC PROC [poly: REF NatSequence] RETURNS [copy: REF NatSequence]; <> ReversePolygon: PUBLIC PROC [poly: REF NatSequence] RETURNS [REF NatSequence]; <> CenterOfPolygon: PUBLIC PROC [poly: REF NatSequence, points: TripleSequence] RETURNS [Triple]; <> CentersOfPolygons: PUBLIC PROC [ polygons: REF NatTable, points: TripleSequence, centers: TripleSequence _ NIL] RETURNS [TripleSequence]; <> ProjectToXYPlane: PUBLIC PROC [ poly: REF NatSequence, points: TripleSequence, o, x, y: Triple] RETURNS [pairs: PairSequence]; <> <> GetMinMaxPairs: PUBLIC PROC [pairs: PairSequence] RETURNS [mm: MinMaxPairs]; <> GetMinMaxTriples: PUBLIC PROC [triples: TripleSequence] RETURNS [mm: MinMaxTriples]; <> SquarePairDistance: PUBLIC PROC [p0, p1: Pair] RETURNS [REAL]; <> SquareTripleDistance: PUBLIC PROC [p0, p1: Triple] RETURNS [REAL]; <> <> LengthenTriangleSequence: PUBLIC PROC [t: TriangleSequence] RETURNS [TriangleSequence]; <> Triangulate2Polygons: PUBLIC PROC [ poly0, poly1: REF NatSequence, points: TripleSequence] RETURNS [TriangleSequence]; <> <> <> <> << >> END.