Directional reachability

Open an example or start from scratch
Article domain Planar map, its regions and the explored reachable blocks

Click inside the work area to place the first point

Each next click adds a segment. Click the first point again to close a shape.

Work area boundaryDrawn segments

Click inside the work area to place the first point.

The mathematical model, Algorithm 1 & the limits of this demo

A direction constraint belongs to a face.

Inside a closed triangular face , a movement vector must belong to its assigned convex cone . Shared boundaries can use either incident face's allowed motion. At a vertex, incident faces are considered by the algorithm. Source and target are inserted as vertices by a conforming subdivision.

A degenerate ray permits nonzero forward motion. Proper sectors include their boundary directions. Half-planes and the full plane are explicitly admitted in Section 2. This edition excludes opposite-ray lines and arbitrary cone unions; no imported cone is silently replaced. Choose the cone type in the toolbar beside the selected face; it applies immediately. Drag the on-map handles or use the inspector for exact values.

What the colors establish

The green blocks are computed explored reachable subsets. The optional purple skeleton connects representative points and supports pruning; its drawn segments are structural links, not validated trajectories. The display never presents a skeleton path as a reachability certificate.

Drawing, triangulation and regions

The explicit work area is the domain. Its border is visible and editable with Area; outside it is excluded. Drawn polygon cycles are constraints, not automatic domain boundaries or holes. The entire declared area is triangulated, including spaces between components and concave notches. Triangles connected across non-constraint edges form one logical face and share one cone. An explicit manual merge groups faces; its grouping is preserved. Changing the work area preserves the drawing, clears cone assignments and requires retriangulation; Undo restores the previous area and cones. Points and required segments form the source drawing. Crossings and T-junctions are noded exactly at triangulation. Segment parts inside the active domain are recovered as chains of triangle edges; parts outside it or inside white holes stay in the drawing but are excluded from the active mesh. The editor accepts up to 100 triangles after triangulation, independently of its 300-point / 500-segment input limits. If that triangle limit is exceeded, the whole drawing is preserved: remove unneeded points or simplify shapes and try again. A merged region keeps all its technical triangles and constraints and shares one cone. Refining a region with the same cone preserves reachability by finite paths; it does not imply that the queue, pruning or trace of Algorithm 1 are unchanged. Unconfigured cones block execution.

Follow the paper's queue, pruning and updates.

The run starts at the source and processes a FIFO queue of frontier objects paired with faces. Propagating an object computes its boundary image, applies the paper's pruning rules, then creates new skeleton and queue entries. Vertex objects require additional incident-face operations.

Algorithm 1 is described in the primary SoCG article (pp. 17:7–17:8). Theorem 1 states that if Algorithm 1 terminates, the reachable vertices are nodes of Ske; its proof is omitted in the conference version. This edition admits only the cones the authors intended (rays, proper sectors, half-planes and the full plane): with opposite-ray line cones the literal same-edge pruning (ii) can lose reachable vertices. This implementation preserves the literal pruning and can explore spirals indefinitely. The omitted conference proof does not invalidate the theorem. Applying it to this implementation requires establishing full correspondence with the published algorithm and its hypotheses; tests provide finite evidence rather than that guarantee. This demo reports trace exhaustion without T as uncertified. A completed separate closure check can certify an excluded target.

An exact closure certificate

The extension maintains finite unions of exact closed intervals on each edge. Every set increase is sent through all incident faces, including the face of arrival; reached vertices activate every incident face. Same-edge expansion is retained even when its midpoint does not change. Intervals are merged only when they overlap or touch, never across a gap. After the worklist empties, a separate verification pass recomputes source membership, vertex synchronization and every edge-face image inclusion. This checked fixed point, by induction on finite feasible paths, proves that no reachable boundary point was omitted. Infinite limits are never added. If an event or arithmetic limit stops this process, unreached targets remain unknown.

Scope and arithmetic

This research preview distinguishes exact rational geometric operations from the numerical SVG display. Degree controls store six-decimal rational direction vectors; the exact vectors can be edited directly. The current kernel's coverage notes appear after initialization. The general pruning proof is omitted in the published paper; tests do not replace an independent proof for every input.

Read the original paper ↗

Start from…

Ready maps include their geometry, cones, S and T. Loading a ready map replaces the current map; Undo brings it back. New map clears all current work after confirmation.

Import a triangulated map file. It is checked before replacing the current map.

Start a new map?

This clears the drawing, regions, cones, S and T, execution, Skeleton, paths and history. It cannot be undone. Choose Cancel to keep this work. Triangulated maps can be exported from Maps.

Work area

Apply uses a rectangular border and keeps explicitly blocked holes. It preserves every drawn point and segment, clears cones and requires triangulation again. Undo restores the previous area and cones.