import { BivectorN, Rotor4, TransformN, VecN } from '@holotope/core'; import type { RigidMotion4 } from './contact-kinematics4.js'; import { RigidTrajectory4 } from './rigid-trajectory4.js'; export interface KinematicBody4Options { readonly trajectory: RigidTrajectory4; readonly duration: number; } /** * Non-dynamic R4 pose owner driven by one explicit rigid trajectory segment. * It supplies prescribed contact velocity but never receives solver impulses. */ export declare class KinematicBody4 implements RigidMotion4 { readonly position: VecN; rotation: Rotor4; constructor(options: KinematicBody4Options); static fromTransforms(start: TransformN, end: TransformN, duration: number): KinematicBody4; /** Alias required by the prescribed rigid-motion response contract. */ get center(): VecN; /** Snapshot of the prescribed physical translation rate. */ get linearVelocity(): VecN; /** Snapshot of the prescribed physical world-left angular rate. */ get angularVelocityWorld(): BivectorN; get duration(): number; get elapsedTime(): number; get remainingTime(): number; pose(): TransformN; /** * Starts a new continuous segment at the current pose. Discontinuous * replacement is refused rather than being mislabeled as continuous motion. */ setTrajectory(trajectory: RigidTrajectory4, duration: number): this; } export interface KinematicBodyPosePlan4 { readonly body: KinematicBody4; readonly duration: number; readonly startElapsedTime: number; readonly trajectory: RigidTrajectory4; /** Opaque segment identity used to refuse stale plans after replacement. */ readonly revision: number; } /** Freezes the exact next suffix of a prescribed kinematic segment. */ export declare function planKinematicBodyPose4(body: KinematicBody4, duration: number): KinematicBodyPosePlan4; /** Applies an absolute normalized sample of a frozen kinematic pose plan. */ export declare function applyKinematicBodyPosePlan4(plan: KinematicBodyPosePlan4, time: number): KinematicBody4; //# sourceMappingURL=kinematic-body4.d.ts.map