Offset a (centreline) room outline to the chosen wall boundary: center =
the centreline as-is; inner = each edge shifted toward the room by half the
wall thickness (net / inner face); outer = shifted away by half (gross /
outer face). Re-corners by intersecting adjacent offset edges. segments[k]
has thickness wallThicknesses[k]. otherRooms (other rooms' centreline
outlines) lets outer keep shared/internal edges on the centreline so
neighbouring rooms meet there instead of overlapping inside the wall.
Returns the original outline if the offset degenerates (e.g. an inner inset
of a room thinner than its walls). Exact for orthogonal rooms.
Offset a (centreline) room outline to the chosen wall boundary:
center= the centreline as-is;inner= each edge shifted toward the room by half the wall thickness (net / inner face);outer= shifted away by half (gross / outer face). Re-corners by intersecting adjacent offset edges.segments[k]has thicknesswallThicknesses[k].otherRooms(other rooms' centreline outlines) letsouterkeep shared/internal edges on the centreline so neighbouring rooms meet there instead of overlapping inside the wall. Returns the original outline if the offset degenerates (e.g. an inner inset of a room thinner than its walls). Exact for orthogonal rooms.