import { VecN } from '@holotope/core'; export interface AnalyzeLinearSimplexOrientationNOptions { /** Non-degenerate full-dimensional N-simplex defining positive material orientation. */ 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 signed current/rest measure ratio. Zero detects collapse/inversion. */ readonly minimumSignedMeasureRatio: 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 orientation analysis. * * Unlike measure, the signed ratio carries a sign, so crossing the threshold * means the simplex inverted rather than merely flattened. The fields record * the polynomial analysed along the trajectory and the tolerances used, so an * outcome can be reproduced from the record without re-deriving it. */ export interface LinearSimplexOrientationAnalysisBaseN { /** Euclidean dimension shared by the simplex vertices. */ readonly dimension: number; /** Degree of the signed-ratio polynomial in normalized time. */ readonly degree: number; /** Required signed current/rest measure ratio, as authored. */ readonly minimumSignedMeasureRatio: number; /** Signed measure ratio at normalized time zero. */ readonly startSignedMeasureRatio: number; /** Signed measure ratio at normalized time one. */ readonly endSignedMeasureRatio: number; /** Coefficients of `signedRatio(t) - minimumSignedMeasureRatio` in powers of t. */ readonly monomialCoefficients: Float64Array; /** The same threshold polynomial in the Bernstein basis 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 LinearSimplexOrientationSafeN extends LinearSimplexOrientationAnalysisBaseN { readonly status: 'safe'; /** Conservative positive lower bound assembled from accepted Bernstein leaves. */ readonly minimumMarginLowerBound: number; } export interface LinearSimplexOrientationInitialViolationN extends LinearSimplexOrientationAnalysisBaseN { readonly status: 'initial-violation'; readonly initialMargin: number; } export interface LinearSimplexOrientationPossibleViolationN extends LinearSimplexOrientationAnalysisBaseN { 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 LinearSimplexOrientationAnalysisN = LinearSimplexOrientationSafeN | LinearSimplexOrientationInitialViolationN | LinearSimplexOrientationPossibleViolationN; /** * Conservatively checks a linear full-dimensional simplex trajectory. * * `det(A + tB)` is assembled exactly with respect to the chosen Float64 * determinant routine by multilinearity over column subsets. Bernstein convex * hull bounds and left-to-right de Casteljau subdivision then exclude the * complete interval or return its earliest unresolved threshold enclosure. * * The reference coefficient construction costs O(2^N N^3). It is intended as * an auditable small-N golden path, not a high-dimensional performance backend. */ export declare function analyzeLinearSimplexOrientationN(options: AnalyzeLinearSimplexOrientationNOptions): LinearSimplexOrientationAnalysisN; //# sourceMappingURL=simplex-orientation-cast.d.ts.map