DIRECTORY Rope, IO, AlgebraClasses, Ints, BigRats, RatIntervals, Variables, Polynomials, AlgebraicNumbers, Vectors, Sequences, Formulas, SamplePoints, CoveringSets; QECellStructure: CEDAR DEFINITIONS ~ BEGIN OPEN AC: AlgebraClasses, BR: BigRats, RI: RatIntervals, VARS: Variables, AN: AlgebraicNumbers, SEQ: Sequences, POL: Polynomials, QFF: Formulas, SP: SamplePoints, CS: CoveringSets; Cell: TYPE = AC.Object; CellIndex: TYPE = Vectors.Vector; -- of Ints.Int Signature: TYPE = Vectors.Vector; -- of FormulaOperators.Operators CellData: TYPE = REF CellDataRec; CellDataRec: TYPE = RECORD [ cad: AC.Object _ NIL, -- access to the cad to which this cell belongs dimension: Ints.Int, -- = sum of parities of index components index: CellIndex, -- length of index (= cad.dimension) is dimension r of ambient space basisSignature: Signature _ NIL, -- signature with respect to cad.basis inputSignature: Signature _ NIL, -- signature with respect to cad.inputPolynomials samplePoint: SP.SamplePoint _ NIL, definingFormula: QFF.Formula _ NIL, coveringSet: CS.CoveringSet _ NIL, boundary: SEQ.Sequence _ NIL, -- of the Cells that comprise this Cell's boundary, in lexicographic order (for binary searching). Assumes that the Cad has the boundary property. boundaryCoveringSet: CS.CoveringSet _ NIL, -- a CoveringSet that "fills in the gap" between a cell and its boundary. At this time we only offer complete boundaryCoveringSets, e.g. not the fill-in between a cell and just one of its adjacent cells inBoundary: SEQ.Sequence _ NIL, -- of the Cells in whose boundaries this Cell is contained, in lexicographic order (for binary searching). Assumes that the Cad has the boundary property. Taken together, boundary and inBoundary comprise the set of all Cells adjacent to this one. look: REF ANY _ NIL -- rendering parameters, e.g. color, "fatness" ]; CellStructureData: TYPE = REF CellStructureDataRec; CellStructureDataRec: TYPE = RECORD [ samplePointVariable: Variables.Variable, -- = variable of appropriate Sample Point Structure, i.e. variable in terms of which the minimal polynomials of sample point primitive elements will be expressed, and so also SamplePoint coordinates formulaPolyRing: AC.Object -- for the polynomials occurring in cell defining formulas. Length[allVariables] of this polynomial ring = ambientSpaceDimension of cell = ambientSpaceDimension of appropriate Covering Set Structure = dimension of appropriate Sample Point Structure. ]; MakeCellStructure: AC.BinaryOp; PrintName: AC.ToRopeOp; ShortPrintName: AC.ToRopeOp; SamplePointVariable: AC.UnaryOp; FormulaPolyRing: AC.UnaryOp; AmbientSpaceDimension: AC.UnaryOp; IsCellStructure: AC.UnaryPredicate; Recast: AC.BinaryOp; CanRecast: AC.BinaryPredicate; ToExpr: AC.ToExprOp; LegalFirstChar: AC.LegalFirstCharOp; Read: AC.ReadOp; FromRope: AC.FromRopeOp; ToRope: AC.ToRopeOp; Write: AC.WriteOp; Cad: AC.UnaryOp; Dimension: AC.UnaryOp; Index: AC.UnaryOp; BasisSignature: AC.UnaryOp; SamplePoint: AC.UnaryOp; DefiningFormula: AC.UnaryOp; Boundary: AC.UnaryOp; CoveringSet: AC.UnaryOp; BoundingBox: AC.UnaryOp; Color: AC.UnaryOp; SetCad: AC.BinaryOp; ComputeDimension: AC.UnaryOp; DimensionTwoOrLess: AC.UnaryPredicate; DimensionTwo: AC.UnaryPredicate; DimensionOneOrLess: AC.UnaryPredicate; DimensionOne: AC.UnaryPredicate; DimensionZero: AC.UnaryPredicate; IsSection: AC.UnaryPredicate; IsSector: AC.UnaryPredicate; MakeBoundaryCoveringSet: AlgebraClasses.UnaryOp; ModifyCoveringSet: AlgebraClasses.BinaryOp; END. jQECellStructure.mesa Last Edited by: Arnon, May 3, 1986 3:53:47 pm PDT Cell Representation abstractVertex: Graphs.Vertex _ Graphs.nullVertex, primarySignature: Signature _ NIL, -- with respect to cad.primaryPolynomials primaryRegion: NAT _ 0, -- which signed component wrt primarySignature secondarySignature: Signature _ NIL, -- with respect to cad.secondaryPolynomials secondaryRegion: NAT _ 0, -- which signed component wrt secondarySignature extensionData: ExtensionData _ NIL, -- needed by current E^3 adjacency algorithm identicallyZeroBasisElements: SEQ.Sequence _ NIL, -- of polynomials, elements of cad.basis which are identically zero on this cell; currently used only for degenerate 0-cells in E^2. sectionDefiningPolynomial: POL.Polynomial _ NIL, -- possibly nonNIL for sections only; r-variate integral polynomial whose variety contains it (used by display) sectionDefiningPolynomialRoot: NAT _ 0, -- which real root of sectionDefiningPolynomial is this section (over base of this stack) (used by display) Instance Data for Cell Structures Cell Structure Ops arguments are samplePointVariable: Variables.Variable and formulaPolyRing: PolynomialStructure selector: return the samplePointVariable characterizing this particular Cell Structure selector: return the formulaPolyRing characterizing this particular Cell Structure selector: return the ambient Space Dimension (as an Ints.Int) for this particular Cell Structure Conversion and IO Selectors of cell covering set, if any Operations Args are a Cell and a Cad. cad field of Cell set to second arg. Arg is cell index, output is its dimension as an Ints.Int. Arg is Cell, returns true if dimension is 2 or less. Arg is Cell, returns true if dimension = 2. Arg is Cell, returns true if dimension is 1 or less. Arg is Cell, returns true if dimension = 1. Arg is Cell, returns true if dimension = 0. Arg is Cell, returns true if a section. Arg is Cell, returns true if a sector. Input is a Cell. Returns a CoveringSet that "fills in the gap" between the input Cell and its boundary. It is assumed that for each pair of CoveringSets of the input Cell and one of its adjacent (boundary) Cells, that one of the CoveringSets is a "refinement" of the other. Probably need to be multiple routines here for different modifications. Intended to do things like refine a covering set, perhaps adaptively according to curvature. Κ–˜Jšœ™J™1J˜J™šΟk ˜ Icodešœ˜Kšœ˜J˜J˜Jšœ˜J˜ Jšœ ˜ J˜ Jšœ˜Jšœ˜Jšœ ˜ J˜ J˜ J˜ J˜—head2šœœ ˜"J˜—Jšœœœœœ œœ œœ œœ œœ˜ΌheadšΟn™šœœœ˜J˜—Jšœ œΟc˜0J˜Jšœ œŸ ˜BJ˜Jšœ œœ ˜!šœ œœ˜Jšœœ œŸ/˜EJšœŸ*˜?JšœŸE˜XJšœœŸ&˜GJšœœŸ1˜RJšœ œœ˜"Jšœœ œ˜#Jšœ œ˜"Jšœ œ œŸ“˜²JšœœœŸΛ˜φJšœ œ œŸψ˜™JšœœœœŸ/˜CJ˜Jšœ2™2JšœœŸ)™LJšœœŸ.™FJšœ œŸ+™PJšœœŸ0™JJšœœŸ,™QJšœœ œŸ„™ΆJšœœœŸo™ JšœœŸk™“J™Jšœ˜——šœ!™!Kšœœœ˜3šœœœ˜%Kšœ)ŸΖ˜οKšœœŸϊ˜•K˜——šœ™šžœœ ˜Kšœ^™^J™—šž œœ ˜K˜—šžœœ ˜K˜—šžœœ ˜ KšœW™WK™—šžœœ ˜KšœS™SK™—šžœœ ˜"Kšœa™aK™—Kšžœœ˜#—šœ™šžœœ ˜J˜—šž œœ˜J˜—šžœœ ˜J˜—šžœœ˜$J˜—šžœœ˜J˜—šžœœ ˜J˜—šžœœ ˜J˜—Jšžœ ˜—™ šžœœ ˜J˜—šž œœ ˜J˜—šžœœ ˜J˜—šžœœ ˜J˜—šž œœ ˜J˜—šžœœ ˜J˜—šžœœ ˜J˜—šž œœ ˜J˜—šž œœ ˜Jšœ™J™—Jšžœœ ˜—™ šžœœ ˜Jšœ@™@J˜—šžœœ ˜Jšœ:™:J˜—šžœœ˜&Jšœ4™4J™—šž œœ˜ Jšœ+™+J™—šžœœ˜&Jšœ4™4J™—šž œœ˜ Jšœ+™+J™—šž œœ˜!Jšœ+™+J™—šž œœ˜Jšœ'™'J™—šžœœ˜Jšœ&™&J™—šžœ˜0Jšœ“™“J˜—šžœ˜+J™₯J˜—J˜—Jšœ˜J˜—…— ΖΖ