I wanted to confirm exactly when the red outline switches on. The area figures and the route check use the same overlap test, so a mistake at the boundary would show up in those numbers too.

In a 300 × 300 cm room the desk (105 × 50) stays at (20, 20) and only the wardrobe moves. The desk's right edge is at x = 125, so a wardrobe starting at 125 touches it, at 124 overlaps it by 1 cm, and at 126 sits 1 cm away. Touching top to bottom, meeting at a corner and a wardrobe turned 90° make eight placements in all.

What counts as overlapping

Two pieces overlap only if they share some width and some depth. Edges lying on the same line just touch, and the outline stays off. The overlap area is the shared width times the shared depth.

The eight results

All eight came out right (8/8). The three touching placements show no overlap area. A 1 cm overlap covers 50 cm² when the pieces meet side by side and 100 cm² when they meet top to bottom. The strip is 1 cm thick either way; it runs along the desk's 50 cm depth in the first case and the wardrobe's 100 cm width in the second.

The old planner already handled this correctly. Its overlap formula, copied as it was, also got all eight right. What changed is the area figure: the old version added overlapping parts twice. Experiment 004 covers that.

Things to keep in mind

  • Height is ignored. A chair pushed under a desk shows as an overlap even though it fits fine.
  • The planner's input fields take whole centimeters. A value like 0.5 cm only gets in through a JSON file.
  • Furniture is drawn as the rectangle around its outer edge, so rounded corners and gaps between legs aren't included.

Data

EXP-001Calculated only, no room was measuredNew calculation v2.0.0 · old v1.0.0Checked 8/8 PASS

PlacementWardrobe (x, y) w×dRight answerNewOverlap cm²
answer / new
Gap cm
answer / new
OldResult
Edges touch (x)Wardrobe (125, 20) 100×60nono0 / 00 / 0noPASS
1 cm overlap (x)Wardrobe (124, 20) 100×60overlapoverlap50 / 500 / 0overlapPASS
1 cm apart (x)Wardrobe (126, 20) 100×60nono0 / 01 / 1noPASS
Edges touch (y)Wardrobe (20, 70) 100×60nono0 / 00 / 0noPASS
1 cm overlap (y)Wardrobe (20, 69) 100×60overlapoverlap100 / 1000 / 0overlapPASS
Corners touchWardrobe (125, 70) 100×60nono0 / 00 / 0noPASS
Rotated wardrobe touchesWardrobe (125, 20) 60×100nono0 / 00 / 0noPASS
Rotated wardrobe, 1 cm overlapWardrobe (124, 20) 60×100overlapoverlap50 / 500 / 0overlapPASS

Where the right answers came from. A separate Python program, not the planner's code, worked them out again. Overlap was checked by comparing the horizontal and vertical ranges one at a time, and the floor the two pieces cover was counted cell by cell on a 1 cm grid. Every coordinate is a whole centimeter, so the count is exact.

Open in the planner

Running these three lines in the site's repository rebuilds the files. If the calculation code changes and these files aren't rebuilt, the site won't build, so the numbers on this page can't drift away from what the planner does.

python tools/scenarios.py --dump
node tools/run_experiments.mjs
python tools/verify_experiments.py