KullGames TopoScope
Persistent homology on a noisy ring of 24 points (seed=42, jitter=+/-0.12). As the connection radius grows, a Vietoris-Rips filtration is built and the Betti numbers b0 (connected components) and b1 (independent loops) are read off at each stage. Every number is computed live at build time by OnlyCSharp 1.8 Mathematics.Geometry.Topology (VietorisRips + Betti).
Filtration built: 278 distinct radius steps from r=0 to r=2.3.
Shape of the data, radius by radius
| radius | V | E | F | b0 | b1 | what's happening |
|---|---|---|---|---|---|---|
| 0.05 | 24 | 0 | 0 | 24 | 0 | all alone: every point is its own island |
| 0.20 | 24 | 4 | 0 | 20 | 0 | nearest neighbors link into short arcs |
| 0.40 | 24 | 21 | 2 | 5 | 0 | arcs have merged into a few big clusters |
| 0.55 | 24 | 38 | 14 | 1 | 1 | RING CLOSES: one component + one loop -> a hole is detected |
| 1.20 | 24 | 108 | 193 | 1 | 1 | the hole survives as more (short) chords are added |
| 1.80 | 24 | 197 | 750 | 1 | 0 | enough triangles now tile the interior -> the hole is gone |
| 2.30 | 24 | 276 | 2024 | 1 | 0 | fully filled 2-skeleton: a topologically trivial blob |
Automatic transition scan
Every one of the filtration's own steps - nothing hand-picked:
- single connected component (b0=1) first at r = 0.4175
- loop DETECTED (b1>=1) first at r = 0.4193
- loop CLOSES back up (b1=0) first at r = 1.7003
Verdict
A genuine hole is born at r=0.42 and dies at r=1.70 - persistent homology recovers the ring's true topology from noisy points.