charmed-harmonica 0.1.1

Physics-based animation tools: spring oscillator and projectile motion
Documentation

Harmonica

Physics-based animation primitives for terminal UIs and time-based motion.

Role in the charmed_rust (FrankenTUI) stack

Harmonica sits at the bottom of the stack as the motion engine. It provides deterministic physics helpers that higher-level crates can use to animate UI state over time without depending on any UI framework directly. In practice, bubbletea uses harmonica helpers for animation timing, bubbles components use it to animate progress and transitions, and charmed-demo-showcase uses it to demonstrate smooth, spring-like motion in the overall system.

Crates.io package

Package name: charmed-harmonica
Library crate name: harmonica

What it provides

  • Spring for damped harmonic motion.
  • Projectile for simple ballistic motion.
  • fps(...) helper for fixed-timestep updates.

Typical usage

use harmonica::{fps, Spring};

let spring = Spring::new(fps(60), 6.0, 0.2);
let (mut pos, mut vel) = (0.0, 0.0);

(pos, vel) = spring.update(pos, vel, 100.0);

Where to look next

  • crates/harmonica/src/spring.rs
  • crates/harmonica/src/projectile.rs