/** * Unit-quaternion helpers for the per-factor arithmetic of Rotor4 * animation. Layout matches Rotor4's factors: [i, j, k, real] — the * real part lives at index 3 so a quaternion doubles as a 4D point. * * None of these choose a double-cover sign: on SO(4) the cover choice * is a *pair-level* decision ((l, r) ~ (−l, −r) only jointly), so it is * made once, by the track's neighborhooding pass, never inside factor * arithmetic. */ export declare function qdot(a: Float64Array, b: Float64Array): number; export declare function qmul(a: Float64Array, b: Float64Array): Float64Array; export declare function qconj(a: Float64Array): Float64Array; export declare function qnormalize(a: Float64Array): Float64Array; /** * Log of a unit quaternion: the pure-imaginary [v·θ̂, 0] with θ the * rotation half-angle. atan2 form — accurate near identity where * acos(w) loses digits, and well-defined at θ = π/2 (w = 0). Only * q → −1 is singular, which neighborhooded tracks never approach. */ export declare function qlog(a: Float64Array): Float64Array; /** Exp of a pure-imaginary quaternion (inverse of qlog). */ export declare function qexp(v: Float64Array): Float64Array; /** * Geodesic interpolation toward `b` as stored — no shortest-arc flip * (see module note). Falls back to nlerp for nearly parallel inputs. */ export declare function qslerp(a: Float64Array, b: Float64Array, t: number): Float64Array; //# sourceMappingURL=quat.d.ts.map