Interface SpringOpts<T>

    interface SpringOpts<T = unknown> {
        omega?: number;
        precision?: number;
        project?: (v: T) => T;
        rate?: () => number;
        zeta?: number;
    }

    Type Parameters

    • T = unknown
    Hierarchy
    Index

    Properties

    omega?: number

    Natural angular frequency (rad/s). Default 13 (~0.48 s period).

    precision?: number

    Settle threshold; snap+complete when both ‖e‖ < eps and ‖v‖ < eps·ω.

    project?: (v: T) => T

    Project each frame's next value into an admissible set (clamp to a range, snap to a manifold, etc.). If projection moves the value, velocity is reset to zero — soft absorbing wall, no integrator fighting the boundary. Pair with precision: 0 when the target may lie outside the admissible set (settle never fires there).

    rate?: () => number

    Per-frame rate multiplier on tick.dt. 0 freezes evolution; 2× doubles speed. Reactive — re-read each frame. Default 1.

    zeta?: number

    Damping ratio. <1 underdamped, =1 critical, >1 overdamped. Default 1.