/** * Canonical face lattice: the complete incidence structure of a polytope, * kept separate from the render-oriented `CellComplex`. `CellComplex` * stores homogeneous fixed-arity groups for rendering; a `FaceLattice` * stores every k-face with ragged arities plus the boundary maps between * consecutive layers. Wythoff-constructed polytopes are born as face * lattices and compiled down to cell complexes. */ /** Ragged array of index tuples: item i is data[offsets[i] … offsets[i+1]). */ export interface RaggedIndexBuffer { /** Length = itemCount + 1. */ readonly offsets: Uint32Array; /** Concatenated item data. */ readonly data: Uint32Array; } export declare function buildRagged(items: ReadonlyArray>): RaggedIndexBuffer; export declare function raggedCount(buffer: RaggedIndexBuffer): number; /** Item `i` as a subarray view (no copy). */ export declare function raggedItem(buffer: RaggedIndexBuffer, i: number): Uint32Array; /** All k-faces of one dimension. */ export interface FaceLayer { /** * Vertex set of each face. For 2-faces the vertices are stored in * canonical cyclic (loop) order; other layers are order-insensitive. */ readonly vertices: RaggedIndexBuffer; /** Orbit/type of each face under the constructing symmetry group. */ readonly typeId: Uint16Array; } export interface FaceLattice { readonly rank: number; readonly vertexCount: number; /** layers[k] holds all k-faces, k = 1 … rank − 1. layers[0] is trivial. */ readonly layers: ReadonlyArray; /** * boundary[k] maps each k-face to its incident (k−1)-face IDs. * boundary[0] and boundary[1] may be undefined (edge boundaries are * the edge vertex pairs themselves). */ readonly boundary: ReadonlyArray; } /** Face counts by dimension: [vertices, edges, 2-faces, …]. */ export declare function fVector(lattice: FaceLattice): number[]; /** Alternating-sum Euler characteristic of the boundary complex. */ export declare function eulerCharacteristic(lattice: FaceLattice): number; //# sourceMappingURL=face-lattice.d.ts.map