Reanimate is a Haskell-based animation library for programmatically creating high-quality vector animations. It provides declarative functionality for composing SVG-based animations and integrates with tools like LaTeX, FFmpeg, Inkscape, Blender, and more to deliver rich, animated content for educational and mathematical visualizations. Reanimate aims at being a batteries-included way of gluing together different technologies: SVG as a universal image format, LaTeX for typesetting, ffmpeg for video encoding, inkscape/imagemagick for rasterization, potrace for vectorization, blender/povray for 3D graphics, and Haskell for scripting. Reanimate is a library for programmatically generating animations with a twist towards mathematics / 2D vector drawings. A lot of inspiration was drawn from 3b1b's manim library.
Features
- Declarative SVG animation via pure Haskell code using combinators like seqA, parA, and mapA
- Built-in web viewer with live reloading and real-time frame stepping
- Integration with external tools: LaTeX for typesetting, FFmpeg for video output, Inkscape, Potrace, Blender, POV-Ray
- Defaults to a 16:9 Cartesian coordinate system with scalable viewboxes
- Supports effects, easing functions (signals), scenes, sprites, and mutable variables through a functional interface
- Outputs to various formats, including GIF, MP4, and interactive display modes