Purpose: A multi-resolution representation of a convex polytope that answers many queries in — polytope separation, extreme point in a direction, ray shooting, and distance between two convex polytopes.
The Structure
Build a sequence of nested convex polytopes , where each is obtained from by:
- finding an independent set of vertices (no two adjacent) with bounded degree — a constant fraction of the vertices, since planar/3-polytope graphs have bounded average degree;
- deleting them and re-triangulating the resulting holes.
Each step removes a constant fraction of the vertices, so:
- the hierarchy has levels;
- the total size across all levels is — a geometric series;
- the coarsest level is a constant-size polytope (a tetrahedron).
How queries use it
Answer the query on the tiny top-level polytope in , then refine downwards: at each level, the answer on is within combinatorial distance of the answer on , because only an independent set of vertices was reinserted. So each level costs and there are levels.
Queries it supports
| Query | Time |
|---|---|
| Is a point inside the polytope? | |
| Extreme vertex in direction | |
| Intersection of a line with the polytope (ray shooting) | |
| Separating plane between two convex polytopes | |
| Distance between two convex polytopes | |
| Tangent lines/planes from an external point |
The 2D analogue you will actually use
In two dimensions, all of this collapses into something much simpler: a convex polygon’s vertices, in order, form a cyclically unimodal sequence with respect to any linear objective. So:
- extreme point in a direction → ternary search or binary search on the hull, ;
- point in convex polygon → binary search on the fan from vertex 0, ;
- tangents from a point → binary search, ;
- line-polygon intersection → two binary searches.
These are 20-line routines and they are what contest problems need. The hierarchy is the machinery required to get the same guarantees in 3D, where “binary search on the boundary” no longer makes sense.
Complexity
- Construction:
- Space:
- Query: or
The general technique
Building an -level hierarchy where each level is a constant-factor coarsening, then refining the answer level by level, is a broadly reusable idea:
- Sparse tables and binary lifting — the same doubling in a different dress
- Fractional cascading — reuse a binary search across many sorted lists
- Borůvka-style contraction — geometric shrinking in graph algorithms
- Level-of-detail meshes in graphics — literally this structure
Variants / Use Cases
- Convex Hull — build the polytope first
- Seidel’s LP — the other route to low-dimensional geometric optimisation
- GJK algorithm — the practical collision-detection method for convex bodies; different technique, same problem
- 3D Geometry — the topic page