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:

  1. 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;
  2. 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

QueryTime
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