layoutOf function
host's layout among walls: one computation for the wall and for each
of its openings. Null for a degenerate host.
Implementation
HostLayout? layoutOf(WorldWall host, List<WorldWall> walls) {
final frame = hostFrameOf(host, walls);
if (frame == null) return null;
final obstacles = obstaclesOf(frame, host, walls);
return (
frame: frame,
obstacles: obstacles,
stretches: stretchesOf(frame, obstacles),
);
}