Files
ConformalLabpp/doc/architecture/geometry-central-comparison.md
Tarik Moussa b02f08625c
All checks were successful
C++ Tests / test-fast (push) Successful in 2m59s
C++ Tests / test-cgal (push) Has been skipped
docs: detaillierter geometry-central Vergleich (Abgrenzung, Adoption, Mehrwert)
Neues Dokument doc/architecture/geometry-central-comparison.md:
- Gemeinsame mathematische Grundlage (Bobenko–Springborn 2004, Springborn 2020)
- Algorithmenvergleich: Newton (fixed triangulation) vs. Ptolemäische Flips
- Vollständige Feature-Matrix: was existiert wo, was fehlt wo
- Klare Adoptionsempfehlungen: Ptolemäischer Pre-Conditioner ja (GC-2),
  intrinsische Triangulierungen als Architektur nein (Begründung)
- 5 wissenschaftliche Mehrwerte: Kreuz-Validierung, Konvergenzstudie,
  Period-Matrix als Alleinstellungsmerkmal, Sphärische Geometrie, Springborn 2020
- Praktischer Roadmap GC-1 bis GC-paper mit Aufwandsschätzungen
- README-Eintrag ergänzt

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-18 02:06:46 +02:00

282 lines
14 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# conformallab++ vs. geometry-central — Detailed Comparison
> **Purpose of this document.**
> conformallab++ and geometry-central (CMU, Keenan Crane's group) both implement
> discrete conformal equivalence of triangulated surfaces. They share the same
> mathematical core but diverge in algorithmic strategy, scope, and target audience.
> This document maps the overlap precisely, identifies what cannot and should not be
> adopted, and explains where a side-by-side study creates scientific added value.
---
## 1 — Shared mathematical foundation
Both libraries implement the following chain:
```
Input mesh M → edge lengths ℓᵢⱼ → solve for u ∈ ℝᵛ
such that ℓ̃ᵢⱼ = e^{(uᵢ+uⱼ)/2} · ℓᵢⱼ satisfies Σα_v(u) = Θᵥ ∀v
```
The variational framework that makes this a well-posed optimisation problem goes
back to **Bobenko & Springborn (2004)**. The hyperbolic (HyperIdeal) geometry is
from **Springborn (2020)**. The geometry-central implementation (Gillespie,
Springborn & Crane, SIGGRAPH 2021) is an explicit extension of Springborn 2020
to intrinsic triangulations.
**Key consequence:** the *mathematical problem* is identical. Any difference in
output is either a normalization convention or a bug in one of the two libraries —
making cross-validation directly meaningful.
---
## 2 — Algorithmic comparison
| Dimension | conformallab++ | geometry-central (Gillespie 2021) |
|---|---|---|
| **Solver** | NewtonRaphson, analytical Hessian | Newton or Yamabe gradient flow (user choice) |
| **Convergence** | Quadratic (820 iterations on typical meshes) | Newton: quadratic; Yamabe: linear (~hundreds of steps) |
| **Triangulation** | Fixed throughout — operates on original `Surface_mesh` | Ptolemaic flips applied before/during solve to reach intrinsic Delaunay |
| **Hessian** | SimplicialLDLT + SparseQR fallback; analytical for Euclidean/Spherical, FD for HyperIdeal | Assembled on the current (possibly flipped) triangulation |
| **Mesh backend** | CGAL `Surface_mesh<Point_3>` | geometry-central `ManifoldSurfaceMesh` |
| **Geometry modes** | Euclidean ✓ · Spherical ✓ · HyperIdeal ✓ | Euclidean ✓ · Hyperbolic ✓ · Spherical ✗ |
| **Open meshes** | ✓ (boundary DOFs pinned) | ✓ |
### Why Newton on a fixed triangulation works well
The Euclidean and HyperIdeal energies are strictly convex after gauge-fixing.
Newton therefore converges from u=0 in 820 iterations for any reasonable mesh.
The Hessian is the cotangent Laplacian (Euclidean) or its hyperbolic analog —
well-conditioned on Delaunay meshes, but can degrade on strongly non-Delaunay inputs.
### What Ptolemaic flips add
A Ptolemaic flip replaces diagonal AC with BD in a quadrilateral under the constraint
that the Ptolemy relation
```
AC · BD = AB · CD + AD · BC
```
holds. This is *conformal-class-preserving* — the new λ₀ values represent the same
discrete conformal structure. The gain: the flipped triangulation is intrinsic
Delaunay, which bounds the off-diagonal Hessian entries and prevents ill-conditioning
on pathological inputs.
**This is the only genuine algorithmic advantage geometry-central has for the shared
sub-problem.** It costs nothing mathematically and buys robustness on bad meshes.
---
## 3 — Feature matrix: what exists where
| Feature | conformallab++ | geometry-central | Notes |
|---|---|---|---|
| Discrete conformal equivalence (Euclidean) | ✓ | ✓ | Shared core |
| Discrete conformal equivalence (Hyperbolic/HyperIdeal) | ✓ (Springborn 2020 formulation) | ✓ (Gillespie 2021 extension) | Mathematically equivalent |
| Discrete conformal equivalence (Spherical) | ✓ | ✗ | Unique to conformallab++ |
| Analytical Hessian (Euclidean & Spherical) | ✓ | ✓ | |
| Analytical Hessian (HyperIdeal) | FD (Phase 9b: analytical planned) | ✓ | gc has analytical version |
| GaussBonnet check & enforce | ✓ | implicit in solver | |
| Tree-cotree cut graph (2g seam edges) | ✓ | ✗ | Required for period matrix |
| Priority-BFS layout in ℝ²/S²/Poincaré disk | ✓ | partial (conformal param only) | |
| Möbius holonomy SU(1,1) | ✓ | ✗ | Unique to conformallab++ |
| Period matrix τ ∈ + SL(2,) reduction | ✓ | ✗ | Unique to conformallab++ |
| Fundamental domain + tiling | ✓ | ✗ | Unique to conformallab++ |
| Intrinsic Delaunay triangulation | ✗ | ✓ | gc has via SignpostIntrinsicTriangulation |
| Ptolemaic flips | ✗ | ✓ | gc's robustness mechanism |
| Heat method (geodesic distances) | ✗ | ✓ | Auxiliary tool in gc |
| YAML/declarative pipeline | ✓ (Phase 8e spec) | ✗ | |
| CGAL-package submission | ✓ (Phase 8 target) | ✗ | |
| JSON/XML serialisation | ✓ | ✗ | |
| CLI app | ✓ | ✗ | |
| Inversive distance functional (Luo 2004) | ✗ (Phase 9a) | ✗ | Neither has it yet |
| Siegel period matrix Ω (genus g≥2) | ✗ (Phase 10b) | ✗ | |
---
## 4 — What should be adopted — and what should not
### Adopt: Ptolemaic pre-conditioning (GC-2, after Phase 8)
**What:** a single preprocessing pass that Delaunay-izes the input triangulation
via Ptolemaic flips, updates λ₀ accordingly, then hands off to the existing
Newton pipeline unchanged.
**Why it fits:**
- Preserves the conformal class — mathematically sound
- Drop-in before `compute_euclidean_lambda0_from_mesh()`, no interface change
- Does not touch cut graph, holonomy, period matrix
- ~200 lines of code, one new test suite
**Interface sketch:**
```cpp
// include/preprocessing_delaunay.hpp (Phase GC-2)
void ptolemy_delaunay(ConformalMesh& mesh, EuclideanMaps& maps);
// Flips edges until all faces satisfy the Delaunay condition.
// Updates maps.lambda0[e] via the Ptolemy relation after each flip.
// Prerequisite: compute_euclidean_lambda0_from_mesh() already called.
// Postcondition: mesh is an intrinsic Delaunay triangulation of the same surface.
```
### Adopt partially: analytical HyperIdeal Hessian
geometry-central has a closed-form Hessian for the hyperbolic energy.
conformallab++ currently uses finite differences (Phase 9b plans analytical).
The geometry-central implementation can serve as a reference for Phase 9b —
not a code copy, but a mathematical cross-check.
### Do not adopt: full intrinsic triangulations as architecture
**SignpostIntrinsicTriangulation** is geometry-central's core data structure.
It tracks vertex positions as (face, barycentric coordinates) rather than 3D points.
Replacing `CGAL::Surface_mesh` with this would require:
1. Rewriting the cut graph algorithm (which works on halfedges of the *original* mesh
and must survive across flips — non-trivial bookkeeping)
2. Tracking seam edges through flip events for holonomy computation
3. Abandoning the CGAL package target (Phase 8) — CGAL's mesh concepts are extrinsic
4. Losing the 3D layout output (Poincaré disk, sphere) which clients depend on
**Verdict:** the architecture incompatibility is fundamental, not incidental.
The period matrix pipeline requires a stable topological cut that does not survive
arbitrary flip sequences. This is not a solvable engineering problem within the
current project scope — it would be a different project.
### Do not adopt: Yamabe flow
Newton converges in 820 iterations; Yamabe flow needs hundreds.
The only reason to use Yamabe flow is when the Hessian is indefinite (which happens
in the Spherical case — and conformallab++ already handles this with the correct
sign flip in the energy). There is no mesh type where Yamabe flow beats Newton
on metrics that conformallab++ targets.
---
## 5 — Where cross-comparison creates scientific added value
### 5.1 — Independent cross-validation of the shared core
The discrete conformal equivalence problem for Euclidean and HyperIdeal geometry
is implemented independently in two codebases, by different groups, with different
algorithms. Agreement on:
- the u-vector (after normalization)
- UV coordinates (up to Möbius transformation)
- the residual ‖G(u*)‖ at convergence
would constitute **mutual validation without ground truth**. This is the same
methodology used in numerical PDE literature to validate independent solvers.
**Concrete protocol:**
```
For each test mesh (cathead.obj, brezel.obj, torus_4x4.off, torus_hex_6x6.off):
1. Load into both libraries with identical vertex ordering
2. Run conformallab++ Newton solver → u_clab, UV_clab
3. Run geometry-central solver → u_gc, UV_gc
4. Normalize both (subtract mean, divide by scale)
5. Report max|u_clab[v] - u_gc[v]| and mean conformal distortion difference
```
Expected: agreement to ≤ 1e-8 on well-conditioned meshes. Discrepancy would
indicate a bug or a normalization mismatch worth investigating.
### 5.2 — Convergence study: Newton with vs. without Ptolemaic pre-conditioning
Hypothesis: on non-Delaunay meshes (e.g. a torus refined by subdivision without
re-meshing), Ptolemaic Delaunay pre-conditioning reduces Newton iteration count.
**Measurable quantities:**
- Newton iterations to ‖G‖ < 1e-8
- Hessian condition number κ(H) at u = 0
- Wall-clock time
This comparison requires only GC-2 to be implemented in conformallab++ and would
answer the question: *how bad does a mesh have to be before Ptolemaic pre-conditioning
pays off?*
**Publication potential:** a short note or conference contribution comparing the
two approaches on a systematic mesh quality benchmark would be self-contained and
novel neither library has published this comparison.
### 5.3 — Period matrix and holonomy as differentiating contribution
geometry-central deliberately stops at the conformal parameterization. The period
matrix τ and Möbius holonomy computation in conformallab++ extend the pipeline into
Teichmüller theory territory that geometry-central does not address.
This is the strongest scientific differentiator: conformallab++ can compute
```
τ = ω_b / ω_a ∈ , SL(2,)-reduced
```
for any closed genus-1 surface, and (in Phase 10) the Siegel matrix Ω for genus g2.
No other open-source C++ library does this. Cross-comparison with geometry-central
makes this gap explicit and positions conformallab++ as the more complete tool for
Teichmüller-theoretic applications.
### 5.4 — Spherical geometry as unique contribution
The Spherical geometry mode (angle sums on a sphere, NSD Hessian with sign
flip) has no counterpart in geometry-central. A mathematician interested in
conformal maps on surfaces of positive curvature (constant curvature +1) has no
alternative in open-source C++.
### 5.5 — Validation of Springborn 2020 in two independent implementations
Springborn 2020 ("Ideal Hyperbolic Polyhedra and Discrete Uniformization") is the
shared theoretical reference for both the HyperIdeal geometry mode in conformallab++
(Phase 2/3) and the hyperbolic component of Gillespie 2021 in geometry-central.
Cross-checking the ζ-function values (ζ₁₃, ζ₁₄, ζ₁₅) and the resulting angle sums
on the same meshes would validate both implementations of the paper a service to
the discrete geometry community.
---
## 6 — Demarcation: where the comparison ends
| Topic | conformallab++ | geometry-central | Comparable? |
|---|---|---|---|
| u-vector at convergence | | | after normalization |
| UV parameterization | | | up to Möbius |
| Convergence speed (iterations) | | (Newton mode) | direct |
| HyperIdeal angle sums | | | |
| Spherical angle sums | | | |
| Period matrix τ | | | |
| Holonomy T_a, T_b | | | |
| Fundamental domain | | | |
| Intrinsic Delaunay quality | not tracked | | |
| Mesh topology handling | CGAL halfedge | gc manifold mesh | not comparable |
| Scalability (large meshes) | not benchmarked yet | benchmarked in paper | comparable if same mesh |
The comparison is meaningful and complete for the **shared conformal core**.
It ends where conformallab++ continues into Teichmüller theory (holonomy, τ,
fundamental domain) that region has no counterpart in geometry-central and
must be validated by analytic invariants alone (→ `doc/math/validation.md`).
---
## 7 — Practical roadmap for the comparison
| Step | When | What | Effort |
|---|---|---|---|
| **GC-1a** | Now | Manual UV comparison on cathead.obj run both, diff u-vectors | 1 day |
| **GC-1b** | Now | Add normalization utility to conformallab++ (`normalize_u_vector()`) | 2h |
| **GC-1c** | After Phase 8 | Automated comparison script (Python or small C++ binary) | 2 days |
| **GC-2** | After Phase 8 | `ptolemy_delaunay()` preprocessing pass | 1 week |
| **GC-bench** | After GC-2 | Convergence study: Newton ± Ptolemaic pre-conditioning on 10 meshes | 1 week |
| **GC-paper** | Phase 10 | Short note on the comparison period matrix as differentiator | |
---
## 8 — References
| Reference | Role in this comparison |
|---|---|
| **Bobenko, Springborn** *Variational Principles for Circle Patterns*, Trans. AMS (2004) | Shared variational foundation for all three geometry modes |
| **Springborn** *Ideal Hyperbolic Polyhedra and Discrete Uniformization*, DCG (2020) | Mathematical basis for HyperIdeal in conformallab++ AND for Gillespie 2021 |
| **Gillespie, Springborn, Crane** *Discrete Conformal Equivalence of Polyhedral Surfaces*, SIGGRAPH (2021) | geometry-central implementation; introduces Ptolemaic flips |
| **Sharp, Soliman, Crane** *Navigating Intrinsic Triangulations*, SIGGRAPH (2019) | geometry-central `SignpostIntrinsicTriangulation` basis for GC-2 |
| **Sechelmann** doctoral thesis, TU Berlin (2016) | conformallab++ primary source; covers period matrix, holonomy, all three modes |