The plan of one level, each space drawn at its true area. Focus this diagram and use the arrow keys to move the selected space one grid module at a time, or hold Shift for four; use the square-bracket keys to step through the spaces on this level, and Escape to deselect. The same totals are in the program table and the analysis panel, which screen readers can read directly.
Nothing is fetched and nothing is uploaded. Every number on screen is computed live in your browser from the program in the table — there is no database, API or network call of any kind. This is a design-thinking instrument, not a measured or code-checked result.
Source of the seeded program: the Program Breakdown memo for Champaign County Museum of History and Innovation — ARCH 371 Intermediate Design I, Illinois School of Architecture, Fall 2026 (Altshuler · Clark · Schachman · Chen · Lassiter · Brackeen · Nduom; jshuler@illinois.edu). From the memo, verbatim: the four numbered sections and their names, every space name and its 1.1 – 4.6 numbering, every area, and the totals — 14,000 + 15,000 + 8,000 = 37,000 ft² building net, 40,000 ft² gross (which is where the 0.925 efficiency comes from: 37,000 ÷ 40,000), and 75,000 ft² of civic plaza / exterior amenities.
The site (from the studio's sketch, 2026-09-01): the Round Barn Centre, Champaign — a 60 ft-diameter round barn (2,827 ft² footprint) against the east face of a 140 × 140 ft banquet hall (19,600 ft²) at its south-east corner: the barn's centre half a radius beyond the face, its south edge flush with the hall's, so the two overlap by about 15 ft. Both are seeded as existing: fixed on the site sheet — neither engine moves them and a drag only selects them; right-click one to type its surveyed centre — drawn as a dashed grey shell on every level its height reaches (the 40 ft barn on Levels 1 and 2, the 20 ft hall on Level 1) and a translucent shell in the stack, linkable from any of those sheets, counted as "Existing footprint" and never in net, gross or FAR. Their heights (40 ft barn volume, 20 ft hall) are prisms standing in for the real roofs, and are guesses; where the pair sits on the parcel is a guess too.
The joined shapes are the building (John, 2026-09-02). Every program room must sit inside the union of the two existing footprints, on every level: in the Forces engine every outline point that pokes out is pulled to the nearest shell; in the Pavilion engine a room outside the line steps back in before anything else, and no step may land outside it. Exterior program (parking, drop-off, the plaza) is held beyond the landscape buffer, the joined outline offset by 15 ft (Site & levels), drawn as the green band; the buffer's area and the footprint's are counted on a 2 ft raster and reported in the totals. "Program stays within" lets a scheme grow into the buffer instead. The Fit block reports each level's program as a share of the footprint and counts rooms not fully inside — a brief that does not fit is reported, not hidden: with 5 ft corridors the memo's 37,000 ft² will not sit on one or two levels inside the barn and hall's ~21,856 ft² footprint, so the seed uses three. A link from a room to a shell still reads as a wish to be in that shell (the lobby in the barn), scored as met when the room's centre is inside it or within half its own radius of the edge.
NOT from the memo — this tool's starting hypothesis, and yours to change: which level each space lands on (the memo assigns none; the seed splits 37,000 ft² over three levels — about 13,000, 12,000 and 12,000 ft²); every clear height and the 13 ft floor-to-floor; the 600 × 400 ft site rectangle (5.5 acres), picked only because it holds the two existing buildings, the ground floor and 75,000 ft² of exterior with slack — the real parcel line is yours to enter; and every relationship in the adjacency matrix — the memo contains no adjacency diagram, so the ~26 seeded links are the obvious museum ones, put there to be disagreed with. Replace the whole thing with your own brief through Setup → Import program (CSV).
Forces (v2) — a damped force-directed layout. Related shapes attract, every pair repels within a spacing margin so they keep apart, Avoid pairs get an extra push, and a boundary force plus a hard per-tick clamp keep every shape inside the site. Positions integrate with velocity damping until motion falls below a threshold, then it rests. Shapes are rigid and a shape's drawn size is its true area.
Pavilion — SANAA's Toledo Glass Pavilion (2006) taken as a layout law, and as its plan geometry really works: not a packing of rooms but a subdivision. The hall is cut by a squarified treemap (Bruls, Huizing & van Wijk, 2000) into one cell per room, weighted by the room's own footprint plus a corridor, in an order that keeps linked rooms in the same or the next strip; every room is its cell less one corridor (a whole number of grid modules), so edges align across shared corridors and the in-between is one continuous field; cell boundaries snap to the module, so every edge sits on the grid. The field's slack becomes courtyard cells — Toledo's courtyards are cells of the same field — so rooms stay area-true: the corner radius is solved to make each room's area exact where its cell allows, and a room whose cell came out too small is counted as drawn short in Fit (small rooms on a coarse module suffer most). Rooms linked to the barn take the barn — one room is the barn, its wall the room's wall; several share its inscribed square — the largest first until it is full; if none asks, the largest room that fits takes it; the overflow returns to the hall in the strip against the barn's wall. The rooms are soft rectangles: drag one and the others slide and squish out of its way — a room shortened along the axis of contact grows along the other to keep its square feet, within 1 : 2.6 — bounded by the hall's walls one corridor in. The squish is a descent on one energy: the overlap area of every pair's corridor-inflated boxes (its gradient parts a pair along the axis of least penetration and thins a room along the axis its overlap is long), the same against each wall, a weak spring per link, and a weak memory of each department's own proportions — projected gradient with a backtracking line search, the lighter room yielding faster, so the energy never rises and the plan cannot chatter. When no step lowers it, every room snaps onto the module keeping the proportions it squished into (the corner radius makes the area exact again); the lattice then repairs what the snap disturbed with whole-module steps and whole-module reshapes (width traded for height, area kept within a tenth); a room nothing helps where it stands hops to the nearest clear cell of the field, or shoves: the rooms in its way go to their nearest clear cells, or step just clear of it and shove in turn, two deep — every move a strict descent on crowding, so it cannot cycle. Then it closes any corridor left a module or two too fat, so slack gathers into courts, read off as the largest empty rectangles of the field. A room you drop is anchored where you put it: a spring far stiffer than any adjacency holds it there, so nothing rearranges it for tidiness, but it still yields when the alternative is a plan that breaks its own corridor rule — legality outranks a preference, and a plan that quietly overlaps teaches the wrong thing. A room you lock is different: it never moves, and if your locks make the plan impossible, Fit says so rather than the solver overruling you. (Until 2026-09-02 a drop was a lock, so a few drags froze most of the level and rooms simply overlapped for good.) Drop a room on the barn's room and the two trade places; the arrow keys move the selected room a module at a time. Nothing floats. What still cannot fit is said in Fit: overlap, no corridor, drawn short — and every number in the Analysis panel names its method on hover, on focus, and to a screen reader. Exterior program, beyond the landscape buffer, is laid by a lattice descent: whole-module steps that strictly lower crowding and tension, so it comes to rest on the grid.
0.925, the loaded memo's own 37,000 ÷ 40,000). FAR = building gross ÷ site area. Built volume = Σ (area × height), building only.The physics is a stylized packing model for exploring program & adjacency — not an architectural layout, and not a structural, daylight, energy, or code analysis. Bubbles show relative size and wanted relationships; they don't resolve circulation, structure, or egress. Use it to think, then draw for real.
SANAA (Sejima + Nishizawa), Glass Pavilion, Toledo Museum of Art (2006) — the plan the Pavilion engine takes as its law: rounded rooms, a constant in-between, one envelope. Fruchterman & Reingold, Graph Drawing by Force-Directed Placement (1991) — the Forces engine's lineage. The Pavilion relaxation is position-based (overdamped, constraint projection), in the family of Bender, Müller & Macklin, Position-Based Simulation Methods (2015).