fix: derive zone quantities from room topology (#512)
This commit is contained in:
@@ -28,7 +28,7 @@ Smart pointer handling is latest-event-wins. One shared animation-frame schedule
|
||||
|
||||
Zone visuals intentionally unmount outside zone presentation, so a 3D Smart floor hit cannot depend only on a zone mesh. When the visible hit is an upward/downward slab face, Smart checks active-level zone polygons in level-local plan space and resolves the smallest containing zone. It never replaces a wall hit. When zone geometry is mounted, a nearly coplanar zone may also win over its slab within the bounded surface tolerance.
|
||||
|
||||
`deriveZoneQuantityReport` is a pure, conservative Core report. Footprint area, perimeter, and individual edge lengths are always available. Enclosed-room classification requires either a matching detected wall loop or complete wall coverage of the closed zone boundary within the modeling tolerance. Detected loops contribute their ordered boundary-face polylines, so concave rooms, curved segments, T-junction spans, and unequal per-wall heights do not have to be reconstructed from a simplified polygon. Floor surface requires exactly one slab that covers the zone and subtracts holes contained by the zone; the slab may serve a larger level footprint. Volume additionally requires one covering flat upper surface and a positive clear height. Missing or ambiguous evidence returns a user-facing unavailable reason rather than a plausible estimate.
|
||||
`deriveZoneQuantityReport` is a pure, conservative Core report. Footprint area, perimeter, and individual edge lengths are always available. Enclosed-room classification requires the zone to be substantially covered by detected spaces that are themselves contained by the zone, or complete wall coverage of the closed zone boundary within the modeling tolerance. Every overlapping detected space contributes its ordered indoor-facing boundary-face spans clipped to the zone: an exterior wall contributes only its room-facing side, an internal separator contributes both room-facing sides, and a semantic sub-zone never invents a wall along an open boundary. Wall surface may therefore be available even when the zone remains classified as a footprint. Floor and ceiling evidence may combine multiple surfaces only when their union covers at least 95% of the zone and their elevations or heights agree; contained holes subtract, crossing holes remain unavailable. Flat volume uses the proven floor area and positive clear height without requiring a fabricated wall enclosure. Missing or conflicting evidence returns a user-facing unavailable reason rather than a plausible estimate.
|
||||
|
||||
The zone parametric inspector derives this report from the current zone polygon and scene nodes, then renders a compact top-view SVG with every edge dimension plus wall, floor, and volume rows. None of these values are persisted in `ZoneNode.metadata`, represented by hidden measurement nodes, or written during rendering. Net wall-opening subtraction, normalized persisted span parameters, and sloped upper surfaces remain future topology work.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user