import { VecN } from '@holotope/core'; export interface AnalyzeLinearSimplexMeasureNOptions { /** Non-degenerate k-simplex rest state, with `1 <= k <= ambientDimension`. */ readonly restPositions: readonly VecN[]; /** Particle positions at normalized trajectory time zero. */ readonly startPositions: readonly VecN[]; /** Particle positions at normalized trajectory time one. */ readonly endPositions: readonly VecN[]; /** Required intrinsic current/rest k-measure ratio. */ readonly minimumMeasureRatio: number; /** Smallest unresolved normalized-time interval. Default 2^-30. */ readonly timeTolerance?: number; /** Hard de Casteljau subdivision depth. Default 48. */ readonly maximumDepth?: number; /** Relative Bernstein-coefficient tolerance. Default 256 * Number.EPSILON. */ readonly relativeCoefficientTolerance?: number; } /** * Evidence shared by every outcome of one linear simplex-measure analysis. * * The squared measure ratio along a linear trajectory is a polynomial in * normalized time, so the question "does this simplex stay above its minimum * measure" is a polynomial threshold question. These fields record the * polynomial that was analysed and the tolerances it was analysed under, * which is what makes any outcome reproducible from the record alone. */ export interface LinearSimplexMeasureAnalysisBaseN { /** Euclidean dimension the simplex vertices live in. */ readonly ambientDimension: number; /** Intrinsic simplex dimension `k`, counting one less than its vertices. */ readonly simplexDimension: number; /** Degree of the squared-ratio polynomial in normalized time. */ readonly degree: number; /** Required intrinsic current/rest k-measure ratio, as authored. */ readonly minimumMeasureRatio: number; /** Its square, which is the threshold actually compared against. */ readonly minimumSquaredMeasureRatio: number; /** Squared measure ratio at normalized time zero. */ readonly startSquaredMeasureRatio: number; /** Squared measure ratio at normalized time one. */ readonly endSquaredMeasureRatio: number; /** Coefficients of `squaredMeasureRatio(t) - minimumMeasureRatio^2`. */ readonly monomialCoefficients: Float64Array; /** The same squared-ratio threshold polynomial in Bernstein form on [0,1]. */ readonly bernsteinCoefficients: Float64Array; /** Smallest normalized-time interval the subdivision will not split. */ readonly timeTolerance: number; /** Hard de Casteljau subdivision depth, bounding the search regardless. */ readonly maximumDepth: number; /** Bernstein-coefficient tolerance relative to the coefficient scale. */ readonly relativeCoefficientTolerance: number; /** Absolute Bernstein-coefficient tolerance derived from that scale. */ readonly absoluteCoefficientTolerance: number; } export interface LinearSimplexMeasureSafeN extends LinearSimplexMeasureAnalysisBaseN { readonly status: 'safe'; /** Conservative lower bound on the squared-ratio margin. */ readonly minimumMarginLowerBound: number; } export interface LinearSimplexMeasureInitialViolationN extends LinearSimplexMeasureAnalysisBaseN { readonly status: 'initial-violation'; /** Initial squared-ratio margin. */ readonly initialMargin: number; } export interface LinearSimplexMeasurePossibleViolationN extends LinearSimplexMeasureAnalysisBaseN { readonly status: 'possible-violation'; /** Earliest conservative normalized-time enclosure that could meet the threshold. */ readonly timeBracket: readonly [number, number]; readonly candidateTime: number; readonly marginAtBracketStart: number; readonly marginAtBracketEnd: number; readonly bernsteinBounds: readonly [number, number]; readonly reason: 'negative-enclosure' | 'resolution-limit'; } export type LinearSimplexMeasureAnalysisN = LinearSimplexMeasureSafeN | LinearSimplexMeasureInitialViolationN | LinearSimplexMeasurePossibleViolationN; /** * Conservatively checks intrinsic k-measure along a linear simplex trajectory. * * For edge matrix `E(t) = A + tB`, the normalized Gram determinant * `det(E(t)^T E(t)) / det(Erest^T Erest)` is the squared current/rest * k-measure ratio. Its degree is at most 2k. The Float64 reference constructs * the three Gram coefficient matrices, expands their determinant by column * multilinearity, and classifies the threshold polynomial with Bernstein * convex-hull bounds and de Casteljau subdivision. * * Coefficient construction costs O(3^k k^3 + N k^2). It is an auditable * small-k golden path, not a high-dimensional performance backend. */ export declare function analyzeLinearSimplexMeasureN(options: AnalyzeLinearSimplexMeasureNOptions): LinearSimplexMeasureAnalysisN; //# sourceMappingURL=simplex-measure-cast.d.ts.map