Skip to content

Repository files navigation

Rhombiverse

Rhombiverse is a free, browser-based geometry builder from 1D to 6D. Everything is made of shapes that fill space perfectly on real lattices — starting from the rhombic dodecahedron, the natural cell of the face-centered cubic (FCC) lattice — and every piece traces back to real crystallography and mathematics: 2D tilings, 3D crystal lattices, 4D polytope worlds, 5D and 6D quasicrystals, and Shells, a scene for building hulls in colour bands. You place, remove, slice and view shapes; nothing more.

Try it at rhombiverse.vercel.app — no install, no account, works on phones, tablets and desktop (touch first), in 7 languages.

Twin project to Polyhedraverse: here the lattice makes shapes possible — placement is constrained by what the lattice allows. There, shapes make the space possible — polyhedra joined face to face with no lattice at all. Same geometry, opposite direction.

What you can do

Pick a dimension from the dimension picker (or the Wizard, top left, which lists every lattice with its pieces as turning wireframes), then tap to build. An empty world shows a cyan outline where your first piece goes; tap a face to add the neighbour across it; long-press (or right-click) removes. The User Guide (in the app, or at /guide) covers every control.

  • 1D+ — 1D, and 1D reaching into the other dimensions. Signal: type a message (or key it on the pulse key: tap a dot, hold a dash) and it becomes a line of bullet cells, its Morse code, shown and editable as dots and dashes; a Morse glossary opens beside Send. Send sets it moving away, and it reads out at the top as it arrives. Outside (in perspective) and Inside (in the tunnel, movable by touch) views. Construct: build shapes from 1D cells, one tap at a time — the first closed shape by hand, then one tap per edge, each new dimension's first edge by hand again, alike parts in one tap ("directions are free, dimensions are earned"):
    • Square → cube → tesseract (cube within a cube, turning through W);
    • Kagome: hexagon → star → the Kagome lattice → 3D pyrochlore (truncated tetrahedron, then its tetrahedra) → 4D hyper-pyrochlore (truncated 5-cell, then its 5-cells); body cyan, limbs gold;
    • RD, the flagship: the RD's own rhombus → the rhombic dodecahedron, its cube inside first, then its six pyramids → its lattice → 4D, the 24-cell (the RD is its shadow: its corners split apart in W). Each closed shape shows its lattice and opens in its own dimension (2D, 3D, 4D); the indicator beside Wizard reads 1D+/2D/3D/4D as you go. ⊘ beside Undo clears to start again; a Signal | Construct toggle switches worlds.
  • 2D — five tiles (Parallelogram, Triangle, Hexagon, Kite, Kagome) on four lattice angles (Square, RD Rhombus, Golden Rhombus, Triangular), plus the Rhombille pattern. Kaleidoscope, a 2D world of its own: Penrose thick and thin rhombi, pentagons, triangles, hexagons and squares reflected by a ring of 1–12 mirrors or a triangle of three; tap an edge to attach or empty space to drop a piece loose (it slides into place beside a partner), Turn, Spin, Shake, and a Safe mode that keeps the rhombi to Penrose's matching rule. Nets, from 2D to 3D: follow a solid's ghost net face by face, then fold it up into the solid with a slider; the Voronoi cells of the cubic lattices (cube, rhombic dodecahedron, truncated octahedron) and the Platonic solids.
  • Spherical (◯) — a view that cycles through every piece as a sphere (whole RDs touching, FCC close packing), then the octahedral and tetrahedral voids between them, with a size slider; view only.
  • Paint — in every dimension but 1D+, the brush recolours pieces you've already placed (except Shells and Golden Rhombohedra, coloured by band and type); in 4D it sits in the 4D panel.
  • 3D — every piece listed under the lattice it lives on:
    • FCC: rhombic dodecahedron (RD), Hemi RD, Hourglass, RD Quarter, Cube, Pyramid
    • RD Dual: Cuboctahedron, Octahedron
    • BCC: Truncated Octahedron; BCC Interstitial: Flattened Octahedron, Disphenoid
    • Elongated Dodecahedron, Hexagonal Prism and Rhombohedra, each on its own lattice
    • Pyrochlore (3D Kagome): truncated tetrahedra with their corner-sharing tetrahedra
  • Shells (a 3D world of its own) — build hulls from shells of rhombic dodecahedra, each shell its own colour band, counted out from your first piece as a cuboctahedron (the magic numbers 13, 55, 147 …), a sphere, or a chosen tetrahedron, cube, octahedron, rhombic dodecahedron or truncated octahedron. Add or remove a whole shell in one tap; Trim cuts the hull exactly flat into its target shape; Fragment breaks any piece into its symmetric parts — halves, thirds, quarters, sixths, eighths, twelfths, sixteenths, 24ths or all 48 wedges — and single parts can be placed on their own. A Scale menu builds with bigger RDs (×2 to ×4), and Merge turns a cluster of small pieces into one big RD, or opens one back up. Info's ring diagram hides or shows single shells to look inside, with a choice of band palettes.
  • Golden Rhombohedra (a 3D world of its own) — build freely with the prolate and oblate golden rhombohedra, the two pieces of the 3D Penrose (Ammann–Kramer) tiling. The Penrose check colours each piece green where it belongs to the true aperiodic tiling and red where the build has drifted; Lattice View shows the true tiling around your build.
  • 4D — three worlds sharing one frame with the RD world: Tesseract (Z4), D4 (the 24-cell, the 4D RD, whose slice at w = 0 is exactly the RD world, and the 16-cell) and Hyper-pyrochlore (4D Kagome) (corner-sharing 5-cells). See 4D as a slice or a projection; one geared slider moves the slice through w or turns it into the fourth dimension (XW, YW, ZW).
  • 5D and 6D quasicrystals — cut and projected from the cube lattices Z⁵ and Z⁶: 6D is the icosahedral quasicrystal of prolate and oblate golden rhombohedra (the Ammann–Kramer tiling); 5D is layers of the Penrose tiling as thick and thin rhombus prisms. The tiling decides each piece. Phason sliders slide the slice through the hidden dimensions (pieces flip), the Approximant slider steps through periodic crystals (1/1, 2/1, 3/2, 5/3 …) toward the true quasicrystal at τ, and Window View shows the acceptance window. The Catalogue holds 155 items — zonohedra up to the rhombic triacontahedron, every vertex star, higher-dimensional polytope shadows and 43 hyperprism bridges — each summoned by name or serial number to where it really occurs in your quasicrystal. Connect joins any two items with the shortest chain of real tiles between them.
  • Views — World View (Colour, Translucent, Skeleton), Lattice View (the open slots around your build and its outer layers, fading inward), X-Ray cutaways (including diagonal cuts), Spherical, Duality Mode (the aperiodic tiling a crystal structure casts) and Dualize (FCC ↔ BCC).
  • Almanac — the maths behind every piece and lattice, including cut and project, phasons and approximants.
  • Save — your World saves automatically in the browser; Export / Import World saves every dimension to one file; Undo per dimension, with hold-to-scrub. What's New lists recent changes.
  • 7 languages — English, 日本語, Español, Français, 한국어, 中文, Русский: the interface, the User Guide and the Wizard.

RHOMBIS

A standalone 3D geometric packing-puzzle game (rhombis.html, linked from the welcome screen) built on the same pieces: 117 stages that teach real crystal-lattice geometry through play. Rotate a target shape and tap pieces into place. Stages run from single whole shapes to orientation matching (6-, 12- and 24-way splits of the RD), molecules of joined shapes, mirror-image molecules, hulls broken into chunks (up to a 13-cell cuboctahedron and a 20-cell tetrahedral stack), branching molecules and burr puzzles where placement order matters, plus crystal stages (real FCC and BCC metals), alloys (NiAl, FeAl, beta brass, alloy steels, carbon steel, electrum, white and rose gold, bronze), rock salt (NaCl) and calcite. Stage order follows real difficulty, and every stage's decoy pieces come from the same shape family. Its engine lives in src/rhombis/ and reuses the app's lattice maths rather than re-deriving it.

Structure

rhombiverse/
  index.html            # the app: static entry point, Three.js via import map (no bundling; see "Running locally")
  rhombis.html          # RHOMBIS, the standalone packing-puzzle game
  src/
    render.js           # Three.js scene, per-frame loop, most UI wiring
    core/               # lattice math, placement/removal and input (build.js), world state, persistence
    app/                # UI: wheels, Dimension wizard, the 4D, 5D/6D and Shells worlds, Almanac, settings, i18n, welcome, What's New
    geometry-extensions/  # every lattice beyond FCC: BCC, 2D tilings, ED, hex prism, rhombohedra,
                        #   Pyrochlore, 4D (lattice-4d.js), quasicrystals and their catalogue,
                        #   RD pieces and hulls (rd-pieces.js), dual/Duality math, spherical view
    rhombis/            # RHOMBIS' own code
  data/
    starter-world.json  # the empty world every visit starts from
    changelog.json      # What's New
    catalogue-5d6d.json # the 5D/6D Catalogue
  scripts/              # build, and the verify:* checks (geometry, i18n, stale wording)
  tests/                # unit tests and the browser smoke test
  docs/                 # the user guide (7 languages), principles, compliance checklist

Documents

Doc What it is
docs/guide.md (+ guide.<lang>.md) The Rhombiverse User Guide, also served at /guide
docs/RHOMBIVERSE_PRINCIPLES.md The design law: real geometry, simplest version, world as data
docs/RHOMBIVERSE_COMPLIANCE.md What's in place legally, and what to re-check before adding a backend
CLAUDE.md Technical onboarding: scope, running and checking, conventions

Contributing

Humans and AI coding agents are both welcome to open PRs — see CONTRIBUTING.md for how this project actually works and CODE_OF_CONDUCT.md for the community standard. CLAUDE.md is the real technical onboarding doc.

Running locally

No build step — plain ES modules loaded via an import map in index.html. Serve the directory with any static file server, e.g.:

cd ~/rhombiverse
python3 -m http.server 8000

Then open http://localhost:8000. Everything works fully offline — there is no server side; your World lives in the browser's localStorage.

Production (Vercel) additionally runs npm run build (scripts/build.mjs) before deploying — real profiling on the actual Pi 500 this app is played on (2026-08-24) found over half of src/'s JS bytes were comments, so esbuild minifies each file in place (no bundling, same module graph) for a real, measured improvement. This has no effect on local dev — the command above still serves raw, fully-commented source directly, zero tooling required.

The primary dev machine is that same Pi (arm64) — fine for day-to-day work, but slow for anything browser-automation-heavy. Where a second machine is available (dicto-node on the LAN, reachable over SSH), it's worth using for that kind of task rather than waiting on the Pi.

About

A free browser geometry builder from 1D to 6D: 1D+ (a Morse signal line, and Construct: shapes built cell by cell up the dimensions, square to tesseract, Kagome to hyper-pyrochlore, rhombus to RD), tilings, a kaleidoscope, nets that fold into solids, RD lattices, 4D polytopes, Penrose/icosahedral quasicrystals, Shells. Twin of Polyhedraverse.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages