import { CellComplex, type CellGroup, type SourceCellIdN, type SourceCellReferenceN } from '@holotope/core'; import { XpbdSimplexSquaredMeasureConstraintN } from './xpbd-simplex-measure.js'; import { XpbdParticleN, XpbdWorldN } from './xpbd-world.js'; export interface XpbdSimplexMeasureFamilyCellContextN { readonly sourceCellIndex: number; readonly sourceVertexIndices: readonly number[]; readonly sourceId: SourceCellIdN; readonly simplexDimension: number; readonly sourceSquaredMeasure: number; } export type XpbdSimplexMeasureFamilyComplianceN = number | ((cell: XpbdSimplexMeasureFamilyCellContextN) => number); export type XpbdSimplexMeasureFamilyRestN = number | ((cell: XpbdSimplexMeasureFamilyCellContextN) => number); export interface CompileXpbdSimplexMeasureFamilyNOptions { readonly id: string; readonly source: CellComplex; readonly simplexGroup: CellGroup; /** One live particle per source vertex, in source-vertex order. */ readonly particles: readonly XpbdParticleN[]; /** Default: squared measure of the source cell at compile time. */ readonly restSquaredMeasure?: XpbdSimplexMeasureFamilyRestN; readonly compliance?: XpbdSimplexMeasureFamilyComplianceN; } export interface XpbdSimplexMeasureFamilyCellN extends XpbdSimplexMeasureFamilyCellContextN { readonly sourceReference: SourceCellReferenceN; readonly restSquaredMeasure: number; readonly constraint: XpbdSimplexSquaredMeasureConstraintN; } /** Source-identified simplex constraints over an existing RN particle binding. */ export declare class XpbdSimplexMeasureFamilyN { readonly id: string; readonly dimension: number; readonly source: CellComplex; readonly sourceSimplexGroup: CellGroup; readonly particles: readonly XpbdParticleN[]; readonly cells: readonly XpbdSimplexMeasureFamilyCellN[]; readonly constraints: readonly XpbdSimplexSquaredMeasureConstraintN[]; private attachedWorld; private constructor(); static compile(options: CompileXpbdSimplexMeasureFamilyNOptions): XpbdSimplexMeasureFamilyN; /** Adds only this family's constraints; particles must already belong to the world. */ addToWorld(world: XpbdWorldN): XpbdWorldN; } /** Compiles one explicitly selected simplex family over existing particles. */ export declare function compileXpbdSimplexMeasureFamilyN(options: CompileXpbdSimplexMeasureFamilyNOptions): XpbdSimplexMeasureFamilyN; //# sourceMappingURL=xpbd-simplex-family.d.ts.map