import { BivectorN, MatN, Rotor4 } from '@holotope/core'; export type OrientationTrivialization4 = 'world-left' | 'body-right'; export interface BivectorPairCoordinates4 { readonly left: Float64Array; readonly right: Float64Array; } export interface OrientationBranchToken4 { readonly pairSign: 1 | -1; readonly guardAtSelection: number; } export interface RelativeOrientationOptions4 { readonly trivialization?: OrientationTrivialization4; readonly previousBranch?: OrientationBranchToken4; /** Guard on `|wL + wR|`; zero is the SO(4) logarithm cut locus. */ readonly cutLocusTolerance?: number; /** Retain a previous pair lift while its signed `wL + wR` guard is above `-hysteresis`. */ readonly branchHysteresis?: number; } export type RelativeOrientationCoordinates4 = { readonly status: 'regular'; readonly error: BivectorN; readonly branch: OrientationBranchToken4; readonly cutLocusGuard: number; readonly shortestPairSign: 1 | -1; readonly usesShortestLift: boolean; } | { readonly status: 'cut-locus'; readonly branch: OrientationBranchToken4; readonly cutLocusGuard: number; readonly shortestPairSign: 1 | -1; }; /** * Split a lexicographic R4 bivector `(01,02,03,12,13,23)` into the exact * quaternion-log coordinates consumed by `Rotor4.fromBivector`. */ export declare function splitBivectorPair4(bivector: BivectorN): BivectorPairCoordinates4; /** Inverse of `splitBivectorPair4` in the shipped Rotor4 convention. */ export declare function combineBivectorPair4(pair: BivectorPairCoordinates4): BivectorN; /** * Relative SO(4) logarithm with an explicit shortest-lift theorem, cut-locus * result, and optional pair-level hysteresis token. */ export declare function relativeOrientationCoordinates4(current: Rotor4, target: Rotor4, options?: RelativeOrientationOptions4): RelativeOrientationCoordinates4; /** * Differential of the SO(4) exponential in lexicographic bivector * coordinates. Factor blocks use the quaternion-log scale of Rotor4. */ export declare function orientationDexp4(error: BivectorN, trivialization?: OrientationTrivialization4): MatN; /** Analytic inverse of `orientationDexp4` on the regular chart. */ export declare function orientationDlog4(error: BivectorN, trivialization?: OrientationTrivialization4): MatN; /** Tight Euclidean operator norm of the 4x4 skew angular-velocity map. */ export declare function angularVelocityOperatorNorm4(omega: BivectorN): number; //# sourceMappingURL=orientation-coordinates4.d.ts.map