Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Free space and clearance

Free-space computation is a typed host service. The engine owns validated source-neutral requests and evidence; Axiolid or another trusted geometry provider owns rasterization, CSG, collision tests, search, and spatial indexes.

Fixed clearance volumes

ClearanceRequest combines:

  • an object-grounded MetricFrame in canonical metres;
  • orthonormal right, forward, and up directions;
  • a validated box or cylinder;
  • a deterministic source-qualified obstacle candidate set selected by the trusted rule capability.

Semantic filtering stays outside geometry: the provider evaluates exactly the supplied candidate objects. This represents directional component clearance without leaking IFC placements, meshes, B-reps, or kernel types into the engine.

The result is asymmetric:

  • Obstructed needs one exact, non-empty obstruction witness;
  • Clear needs exact and complete obstacle coverage for the request.

Partial geometry therefore cannot produce a false clear result.

PlacementRequest asks whether a box or cylinder can fit in a source-qualified search scope. A PlacementDomain makes the admissible candidate set explicit:

  • Unconstrained preserves generic searches without implying support;

  • Supported requires the whole candidate base on a source-qualified support object within a maximum gap;

  • FrameOffsets limits right/forward/up translation in an anchor frame;

  • SupportedFrameOffsets requires both support and anchor-relative bounds.

  • Found carries one exact, scope-grounded placement frame. Supported domains additionally require exact evidence that the whole candidate base is supported by the requested source-qualified object at that exact frame and within the requested gap.

  • NoPlacement requires complete exact search evidence.

A bounded or partial search cannot claim that no placement exists. Connected corridor requirements use metric routing with an appropriate mobility profile rather than inventing a second path contract.

Free-area bounds

FreeAreaRequest measures accessible area for a scope and mobility profile. AreaInterval stores conservative square-metre bounds. Minimum-area comparisons are three-valued:

  • the lower bound meets the minimum: satisfied;
  • the upper bound is below the minimum: violated;
  • bounds straddle the minimum: indeterminate.

Runtime boundary

FreeSpaceServiceHandle is registered in ServiceRegistry. It validates that every response is bound to the exact request. Missing geometry, unsupported composition, resource limits, and incomplete evidence return FreeSpaceError; none become clear, no-placement, or passing results.

The contract contains no IFC, STEP, ICDD, Axiolid, OpenCascade, CGAL, or vendor-specific type.