Skip to content

A Gravity Simulation

Notifications You must be signed in to change notification settings

notaroomba/gravitron

Folders and files

NameName
Last commit message
Last commit date

Latest commit

7ffd400 · · Dec 1, 2025

History

86 Commits
Apr 13, 2023
Dec 1, 2025
Nov 27, 2025
Nov 27, 2025
Aug 17, 2023
Nov 26, 2025
Dec 1, 2025
Nov 27, 2025
Nov 18, 2025
Jul 13, 2023
Nov 18, 2025
Nov 18, 2025
Nov 27, 2025
Nov 18, 2025
Nov 18, 2025
Nov 18, 2025
Nov 18, 2025

Repository files navigation


Gravitron
Gravitron

Interactive N-body gravity simulation with a Rust physics engine compiled to WebAssembly

Rust WASM React PixiJS

An interactive N-body gravity simulation that combines a high-performance physics engine (written in Rust and compiled to WASM) with a responsive web UI (React + TypeScript), and PixiJS for high-performance 2D canvas rendering.

Live demo · gravity.notaroomba.dev

Key features

  • High-performance physics core implemented in Rust and compiled to WebAssembly for accurate, real-time N-body gravitational simulation
  • Smooth, interactive 2D visualization built with React, PixiJS, and TypeScript
  • Barnes-Hut quadtree optimization for efficient simulation of 500+ bodies
  • Multiple numerical integration methods (Euler, RK4, Verlet, Leapfrog)
  • Adjustable parameters (gravity, mass, speed, quadtree theta) and simulation controls
  • Real-time editing: pause to drag planets, modify properties, and adjust velocities
  • Interactive viewport with pan and zoom controls
  • Visual features: velocity vectors, trails, FPS counter, and quadtree visualization
  • Add/remove planets dynamically with hold-to-add/remove functionality

Preview

Open https://gravity.notaroomba.dev in a browser.

Building

Prerequisites

Build the physics engine

npm run build:rust

# or
bun run build:rustt

Run the development server

npm run dev

# or
bun run devv

Build for production

npm run build

# or
bun run buildd

TODO

  • Additional integration methods for improved energy conservation
  • Presets for interesting orbital configurations (binary stars, solar systems, etc.)
  • Export/import simulation states
  • Performance optimizations for 1000+ body simulations

Credits

  • Rust and wasm-bindgen for the physics engine
  • React for the UI, TailwindCSS for the styling, and PixiJS for rendering
  • Barnes-Hut algorithm for quadtree optimization
  • Inspiration from classic N-body simulations and orbital mechanics visualizations

License

MIT


notaroomba.dev  ·  GitHub GitHub @NotARoomba  · · 

About

A Gravity Simulation

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published