Live demo | Traditional Chinese | Simplified Chinese | Japanese | Korean | Spanish | French | German | Brazilian Portuguese
Find a turning route before the sofa arrives.
A local measurement tool to check whether a rigid rectangular item can turn through a measured floor plan on one level.
Try it: open the live demo and choose Corner landing. Find and play the route at 74 cm, then change Width to 75 cm. Finding no route doesn't prove passage is impossible.
Install Node.js 22.12 or newer and Git, then run the app locally:
npx github:Arthur031221/Unwedged#v1.3.0This downloads the app and serves it on your computer at 127.0.0.1. On your first visit, wait for "Offline ready" before using it offline. Measurements stay in browser storage or files you save.
Unwedged models a rigid rectangle moving on one floor. It doesn't model 3D, stairs, tilting, carriers or deformation. The search has limits and can miss a route. It can't prove passage is impossible.
X and Y are center positions. The origin is at the lower left. X increases right and Y increases up. Positive angles rotate counterclockwise. See Usage for an example.
The drawing is the model. Measure what you put in it.
- Choose Apartment hallway, Corner landing or Blocked corridor, then enter measured room and obstacle dimensions.
- Enter furniture length, width, fixed carry height and safety margin. Set the start and destination positions and angles.
- Find a route, then play or scrub through the returned poses. Warnings mark endpoint collisions or clearance at or below the required margin.
- Save the measurements and checked route as JSON, share a project link, or export a dimensioned SVG route sheet.
See Usage for coordinates and editing details, and Accuracy and limits for geometric checks and search limits.
Save this as room.json, open it in the app, then choose Find route. Dimensions are in centimetres. Angles are in radians.
{"format":"unwedged","schemaVersion":1,"project":{
"schemaVersion":1,"name":"Small room","floor":{"width":500,"height":300},
"furniture":{"length":150,"width":70,"height":70},"margin":2,"rects":[],
"start":{"x":100,"y":150,"angle":0},"goal":{"x":400,"y":150,"angle":0}
}}Install Node.js 22.12 or newer and Git. Run the command below in Terminal, a Linux terminal or PowerShell, then open the printed address. Stop the server with Ctrl+C.
macOS
npx github:Arthur031221/Unwedged#v1.3.0Linux
npx github:Arthur031221/Unwedged#v1.3.0Windows
npx github:Arthur031221/Unwedged#v1.3.0src/core/geometry.tscomputes oriented footprints, doorway gaps and physical clearance.src/core/verify.tscertifies each motion interval with adaptive continuous bounds.src/core/search.tsruns a deterministic A* search with finite state and time limits.src/worker.tsruns search and imported-route verification off the interface thread.src/localescontains nine interface translations.- docs/accuracy.md covers geometric checks and solver limits.
From a checkout, run npm ci, npm run dev, npm test and npm run build. See CONTRIBUTING.md for browser, offline, package and independent Shapely checks. Font files and their OFL notices are included.
Assisted by Claude/Codex.
