Plan and replay furniture turning routes in a measured floor plan.
TypeScript
2
5 commits
updated Oct 11, 2026
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.0
This 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.
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.
npx github:Arthur031221/Unwedged#v1.3.0
npx github:Arthur031221/Unwedged#v1.3.0
npx github:Arthur031221/Unwedged#v1.3.0
src/core/geometry.ts computes oriented footprints, doorway gaps and physical clearance.src/core/verify.ts certifies each motion interval with adaptive continuous bounds.src/core/search.ts runs a deterministic A* search with finite state and time limits.src/worker.ts runs search and imported-route verification off the interface thread.src/locales contains nine interface translations.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.
Plan and replay furniture turning routes in a measured floor plan.
TypeScript
2
5 commits
updated Oct 11, 2026
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.0
This 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.
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.
npx github:Arthur031221/Unwedged#v1.3.0
npx github:Arthur031221/Unwedged#v1.3.0
npx github:Arthur031221/Unwedged#v1.3.0
src/core/geometry.ts computes oriented footprints, doorway gaps and physical clearance.src/core/verify.ts certifies each motion interval with adaptive continuous bounds.src/core/search.ts runs a deterministic A* search with finite state and time limits.src/worker.ts runs search and imported-route verification off the interface thread.src/locales contains nine interface translations.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.