DIRECTORY Rope, IO, AlgebraClasses, Variables, QETypes, Graphs; QEIO: CEDAR DEFINITIONS ~ BEGIN OPEN AC: AlgebraClasses, VARS: Variables, QET: QETypes; ReadCad: PROC [in: IO.STREAM] RETURNS [out: QET.Cad]; CadFromRope: PROC [in: Rope.ROPE] RETURNS [out: QET.Cad]; CadToRope: PROC [in: QET.Cad] RETURNS [out: Rope.ROPE]; WriteCad: PROC [in: QET.Cad, out: IO.STREAM]; GetInducedCad: PROC [inCad: QET.Cad, dimension: CARDINAL] RETURNS [outCad: QET.Cad]; cadVertexClass: Graphs.VertexClass; cadGraphClass: Graphs.GraphClass; CadEnumerateVertices: Graphs.EnumerateVerticesProc; CellExpand: Graphs.ExpandProc; ReadSignedRegion: PROC [in: IO.STREAM, cellIndexStructure, inputPolynomialRing, minPolyRing, signatureStructure: AC.Structure] RETURNS [out: QET.SignedRegion]; SignedRegionFromRope: PROC [in: Rope.ROPE, cellIndexStructure, inputPolynomialRing, minPolyRing, signatureStructure: AC.Structure] RETURNS [out: QET.SignedRegion]; SignedRegionToRope: PROC [in: QET.SignedRegion] RETURNS [out: Rope.ROPE]; WriteSignedRegion: PROC [in: QET.SignedRegion, out: IO.STREAM]; ReadSignedRegionSeq: PROC [in: IO.STREAM, cellIndexStructure, inputPolynomialRing, minPolyRing, signatureStructure: AC.Structure] RETURNS [clusters: QET.SignedRegionSeq, termToken: Rope.ROPE]; SignedRegionSeqFromRope: PROC [in: Rope.ROPE, cellIndexStructure, inputPolynomialRing, minPolyRing, signatureStructure: AC.Structure] RETURNS [regions: QET.SignedRegionSeq]; SignedRegionSeqToRope: PROC [in: QET.SignedRegionSeq] RETURNS [out: Rope.ROPE]; WriteSignedRegionSeq: PROC [in: QET.SignedRegionSeq, out: IO.STREAM]; ReadCell: PROC [in: IO.STREAM, cellIndexStructure, inputPolynomialRing, inputSignatureStructure, minPolyRing, formulaAlgebra: AC.Structure] RETURNS [out: QET.Cell, termToken: Rope.ROPE]; CellFromRope: PROC [in: Rope.ROPE, cellIndexStructure, inputPolynomialRing, inputSignatureStructure, minPolyRing, formulaAlgebra: AC.Structure] RETURNS [out: QET.Cell, termToken: Rope.ROPE]; CellToRope: PROC [in: QET.Cell] RETURNS [out: Rope.ROPE]; WriteCell: PROC [in: QET.Cell, out: IO.STREAM]; LookupCell: PROC [cells: QET.CellSeq, index: QET.CellIndex] RETURNS [QET.Cell]; ReadCellSeq: PROC [in: IO.STREAM, cellIndexStructure, inputPolynomialRing, inputSignatureStructure, minPolyRing, formulaAlgebra: AC.Structure] RETURNS [cells: QET.CellSeq, termToken: Rope.ROPE]; CellSeqFromRope: PROC [in: Rope.ROPE, cellIndexStructure, inputPolynomialRing, inputSignatureStructure, minPolyRing, formulaAlgebra: AC.Structure] RETURNS [out: QET.CellSeq]; CellSeqToRope: PROC [in: QET.CellSeq] RETURNS [out: Rope.ROPE]; WriteCellSeq: PROC [in: QET.CellSeq, out: IO.STREAM]; ReadCellIndex: PROC [in: IO.STREAM, cellIndexStructure: AC.Structure] RETURNS [out: QET.CellIndex]; CellIndexFromRope: PROC [in: Rope.ROPE, cellIndexStructure: AC.Structure] RETURNS [out: QET.CellIndex]; CellIndexToRope: PROC [in: QET.CellIndex] RETURNS [out: Rope.ROPE]; WriteCellIndex: PROC [in: QET.CellIndex, out: IO.STREAM]; CellIndexEqual: PROC [in1, in2: QET.CellIndex]RETURNS [BOOL]; CellDimension: PROC [in: QET.CellIndex] RETURNS [dimension: CARDINAL]; ReadCellIndexSeq: PROC [in: IO.STREAM, cellIndexStructure: AC.Structure] RETURNS [out: QET.CellIndexSeq]; CellIndexSeqFromRope: PROC [in: Rope.ROPE, cellIndexStructure: AC.Structure] RETURNS [out: QET.CellIndexSeq]; CellIndexSeqToRope: PROC [in: QET.CellIndexSeq] RETURNS [out: Rope.ROPE]; WriteCellIndexSeq: PROC [in: QET.CellIndexSeq, out: IO.STREAM]; ReadSignature: PROC [in: IO.STREAM, signatureStructure: AC.Structure] RETURNS [out: QET.Signature]; SignatureToRope: PROC [in: QET.Signature] RETURNS [out: Rope.ROPE]; ReadSamplePoint: PROC [in: IO.STREAM, inputPolynomialRing, minPolyRing: AC.Structure] RETURNS [out: QET.SamplePoint]; SamplePointToRope: PROC [in: QET.SamplePoint] RETURNS [out: Rope.ROPE]; ReadAdjacencies: PROC [in: IO.STREAM, cad: QET.Cad]; AdjacenciesFromRope: PROC [in: Rope.ROPE, cad: QET.Cad]; ReadAdjacency: PROC [in: IO.STREAM, cellIndexStructure: AC.Structure, cells: QET.CellSeq]; CellAdjacenciesToRope: PROC [in: QET.Cell] RETURNS [out: Rope.ROPE]; CadAdjacenciesToRope: PROC [in: QET.Cad] RETURNS [out: Rope.ROPE]; WriteCadAdjacencies: PROC [in: QET.Cad, out: IO.STREAM]; ReadCoveringSets: PROC [in: IO.STREAM, cad: QET.Cad]; ReadCellCoveringSet: PROC [in: IO.STREAM, dimension: CARDINAL] RETURNS [out: QET.CoveringSet]; CoveringSetsFromRope: PROC [in: Rope.ROPE, cad: QET.Cad]; CellCoveringSetToRope: PROC [in: QET.Cell] RETURNS [out: Rope.ROPE]; CadCoveringSetsToRope: PROC [in: QET.Cad] RETURNS [out: Rope.ROPE]; WriteCadCoveringSets: PROC [in: QET.Cad, out: IO.STREAM]; CoveringSetSize: PROC [in: QET.CoveringSet] RETURNS [size: CARDINAL]; CountTriangles: PROC [in: QET.CoveringSet] RETURNS [number: CARDINAL]; GenerateTriangles: PROC [in: QET.CoveringSet] RETURNS [out: QET.TriangleSeq]; CoveringSetToThreeDWorldRope: PROC [in: QET.CoveringSet] RETURNS [out: Rope.ROPE]; GenerateThreeDWorldTrianglesRope: PROC [in: QET.CoveringSet] RETURNS [out: Rope.ROPE]; CellToThreeDWorldRope: PROC [in: QET.Cell] RETURNS [out: Rope.ROPE]; ReadCadFile: PROC [in: IO.STREAM] RETURNS [out: QET.Cad]; CadFileFromRope: PROC [in: Rope.ROPE] RETURNS [out: QET.Cad]; CadFileToRope: PROC [in: QET.Cad] RETURNS [out: Rope.ROPE]; WriteCadFile: PROC [in: QET.Cad, out: IO.STREAM]; END.  QEIO.mesa Cylindrical Algebraic Decompositions Clusters and Cluster Sequences termToken is first ID following the Cluster Seq. Assumes that there is at leat one cluster. Cells and Cell Sequences Return pointer to cell itself, given index. termToken is first ID following the Cluster Seq. Assumes that there is at leat one cluster. Cell Indices and Cell Index Sequences It is assumed that both cells lie in same dimensional ambient space Signatures Sample Points Adjacencies "BEGINADJACENCIES", followed by a list of pairs of cell indices (each pair enclosed in parentheses, comma between), followed by "ENDADJACENCIES". In case the list is sorted, we don't relookup the first component cell index unless differs from current. While fixed, just build up list, CONC with previous list. List of blank-separated pairs of cell indices. Covering Sets and Triangulations Read covering sets and store in cell coveringSet fields. Standard interchange cad file format expected. dimension is of ambient space in which cells lie. Read covering sets and store in cell coveringSet fields. Ouput the non-nil covering sets of all cells in a cad in a form that can be read back in. Ouput the non-nil covering sets of all cells in a cad in a form that can be read back in. Total number of points in a covering set. Count how many triangles will be produced by a call to GenerateThreeDWorldTrianglesRope on this covering set. in is assumed to be a covering set for a 2-cell. Ouput a triangulation of it. out = NIL if no triangles can be generated. Ouput the points of a covering set in ThreeDWorld format, i.e. one point to a line, blank-separated coordinates. The points are output in lexicographical order. in is assumed to be a covering set for a 2-cell. Ouput a triangulation of it, in ThreeDWorld format, i.e. one triangle to a line, each line begins with "3" (number of vertices in a triangle), followed by the indices of the three points in the (linearized order imposed on the) covering set which are the vertices of this triangle. out = NIL if no triangles can be generated. Write a complete ThreeDWorld format file for the covering set of a 2-cell. out = NIL if in.coveringSet = NIL. CAD Files ส\˜Jšœ ™ J™šฯk ˜ J˜Jšœ˜J˜Jšœ ˜ Jšœ˜J˜—J˜Ihead2šœœ ˜Jš œœœœœ œ ˜?J˜headšฯn$™$š žœœœœœœ˜5J˜—š ž œœ œœœ˜9J˜—š ž œœœœ œ˜7J™—š žœœœ œœ˜-J˜—codeš ž œœ œœœ œ˜TM˜—šœ#˜#M˜—šœ!˜!M˜—šžœ˜3M˜—Mšž œ˜—™šžœœœœLœ œœ˜ŸJ˜—š žœœ œLœ œœ˜ฃJ˜—š žœœœœ œ˜IJ˜—š žœœœœœ˜?J˜—šžœœœœLœ œ œ"œ˜ภJšœ\™\J˜—š žœœ œLœ œ œ˜ญJ˜—š žœœœœ œ˜OJ˜—Jš žœœœœœ˜E—™šžœœœœaœ œœœ˜บJ™—šž œœ œaœ œœœ˜พJ˜—š ž œœœœ œ˜9J˜—š ž œœœ œœ˜/J˜—š ž œœ œœ œœ˜OM™+J™—šž œœœœaœ œ œœ˜ยJšœ\™\J˜—š žœœ œaœ œœ ˜ฎJ˜—š ž œœœ œ œ˜?J˜—Jš ž œœœœœ˜5—™%šž œœœœœ œœ ˜cJ˜—š žœœ œœ œœ ˜gJ˜—š žœœœ œ œ˜CJ˜—š žœœœœœ˜9J˜—š žœœ œ œœ˜=J™CJ˜—š ž œœœ œ œ˜FJ˜—šžœœœœœ œœ˜iJ˜—š žœœ œœ œœ˜mJ˜—š žœœœœ œ˜IJ˜—Jš žœœœœœ˜?—™ šž œœœœœ œœ ˜cJ˜—Jš žœœœ œ œ˜C—™ šžœœœœ$œ œœ˜uJ˜—Jš žœœœœ œ˜G—™ š žœœœœœ˜4Jšœ‘™‘J™คJ˜J˜—šžœœ œœ˜8J˜—š ž œœœœœœ ˜ZJ˜—š žœœœœ œ˜DMšœ.™.M˜—š žœœœœ œ˜BM˜—Mš žœœœ œœ˜8—™ š žœœœœœ˜5Jšœ8™8J˜—šžœœœœ œœœ˜^Jšœ`™`J˜—šžœœ œœ˜9Jšœ8™8J˜—š žœœœœ œ˜DJ™ZJ™—š žœœœœ œ˜CJ™ZJ™—š žœœœ œœ˜9J™—š žœœœœœ˜EMšœ)™)J˜—š žœœœœ œ˜FMšœm™mJ˜—š žœœœœœ˜MMšœz™zJ˜—š žœœœœ œ˜RJ™ขJ˜—š ž œœœœ œ˜VMšœ๗™๗J˜—š žœœœœ œ˜DMšœRœœ™n——™ š ž œœœœœœ˜9J˜—š žœœ œœœ˜=J˜—š ž œœœœ œ˜;J˜—š ž œœœ œœ˜1J˜——Jšœ˜—…—่%ไ