Draw a wandering line. Ramble calculates a solid whose shape encodes how to roll along it.
Use the live studio · Download the offline release
Open index.html in a modern desktop browser. That's the entire application: no installation, server, network connection, account, or API key. Everything, including the solid-modeling WebAssembly module, is inside the HTML file. WebGL is required.
- Click Watch it roll. Two repeats of the line return the stone to its original orientation.
- Switch to Stone and drag to inspect its surprisingly lopsided surface.
- Choose Look inside to see the core and the two contact traces.
- Choose Try to tip it. Moving the tilt slider calculates how far the actual solid's center must rise to keep its vertices above the table.
- Draw across the green path pad, or try Slalom and the second shape variation. Bend changes the line; fullness changes how much material remains away from the contact surface.
- Take this stone exports an STL sculpture, an editable design, or an experimental two-piece shell with a centered ball cavity and a full-size track.
Use Save a picture to make a 1600 × 1200 image. Designs autosave locally when browser storage is available. Open design restores a .ramble.json file. When opened as a local file, sharing saves the design: send it together with index.html. If you serve the page, sharing encodes the drawing in the URL fragment; there is no backend.
If your browser restricts local HTML, run python3 -m http.server 8080 --bind 127.0.0.1 in this folder and open http://localhost:8080. A localhost link works only on your computer; to share a URL with someone else, host this static file at an address they can reach.
I explored shadow sculptures, drawn musical membranes, optical animation, aperiodic tilings, and nontransitive dice. Several already had excellent browser tools. Trajectoids offered the strongest surprise: a solid can contain a kind of mechanical memory, with no motors, electronics, or active control.
The underlying discovery belongs to Sobolev and colleagues, Nature (2023), with an original scientific implementation and manufacturing notes. Ramble's contribution is an independently implemented, accessible, offline design instrument, including real geometry and numerical checks. A 2024 general existence result makes the subject even more intriguing; it does not guarantee that this particular finite, two-repeat search will solve every drawing.
The candidate pressure tests and important decisions are in DECISIONS.md. The construction and its limits are explained in MATH.md.
A follow-up fabrication research report calculates shell mass and center-of-mass sensitivity from the actual generated geometry. Its useful finding: small core-placement errors can matter more than the nominal shell asymmetry. The report includes reproducible calculations, assumptions, and a proposed physical test protocol.
The preview follows prescribed no-slip rotations. It is not a gravity or rigid-body dynamics simulation. Independently of that preview, Ramble checks mesh closure, winding, orientation closure, and the support of every vertex against every sampled contact plane. It also reports an analytic bound on support error between samples. Difficult drawings can honestly fail the bounded search; the editor preserves them and disables stale exports.
The print kit is experimental and has not been physically printed or rolled in this session. The mathematical model assumes mass concentrated at the rolling center. The kit provides lightweight shell geometry around a heavy metal ball you supply; fabrication accuracy, core placement, shell mass, friction, initial orientation, and slope all matter. A uniformly solid STL print is a sculpture, not the intended rolling experiment. Start with the included ASSEMBLY.txt.
See VERIFICATION.md for results and reproducible checks. The evidence directory contains actual browser screenshots, browser-downloaded STL and kit files, and the seeded stress-test results. examples contains ready-to-open designs and a sample fabrication kit.
To modify the source, install Node.js 22 or later and run:
npm ci
npm run build
npm test
npx playwright install chromium
npm run test:browsernpm ci and the Playwright download need internet access. Running the finished HTML does not. Build and test commands run from this folder. Browser tests use software WebGL for reproducibility. node tests/stress.mjs reruns 80 deterministic extreme designs; node scripts/package.mjs regenerates the example files and portable release ZIP.
The editable source is in src/; build.mjs creates the self-contained page. Runtime dependencies are Three.js (rendering and convex hulls), Manifold (shell booleans), and fflate (local ZIP exports). See THIRD_PARTY_NOTICES.md and licenses/.
- Print and roll the default kit, measure its deviation from the track, and use that evidence to tune wall thickness, core fit, seam alignment, and surface finish.
- Add an initial-orientation jig so a physical specimen can be placed correctly without guessing from the preview.
- Add an independent gravity-driven dynamics experiment to distinguish a geometrically admissible route from one that is dynamically stable for a particular mass distribution.
