chore/docs: Onboarding-Sprint für externe Mathematiker
Some checks failed
C++ Tests / test-fast (push) Successful in 2m16s
C++ Tests / test-cgal (push) Has been skipped
C++ Tests / test-fast (pull_request) Successful in 2m27s
C++ Tests / test-cgal (pull_request) Failing after 2m11s

- LICENSE: Copyright Tarik Moussa <Tarik.moussa95@gmail.com> (war user2595)
- CITATION.cff: maschinenlesbares Zitat mit 3 Primärreferenzen (Sechelmann 2016,
  Springborn 2020, Bobenko–Springborn 2004)
- scripts/try_it.sh: Clone→Build→Test→Beispiel in einem Skript
- doc/math/software-landscape.md: Landkarte aller relevanten Tools,
  Problem-A vs. Problem-B Abgrenzung, vollständige Feature-Matrix
- doc/math/novelty-statement.md: formales Alleinstellungsmerkmal,
  Zielgruppen, was dieses Projekt nicht ist
- code/CMakeLists.txt: cmake --install Target für Header-only-Library
- doc/getting-started.md: Testzähler 158→173, Beispiel-Output, try_it.sh
- README.md: CI/License/DOI-Badges, Cite-Abschnitt, Issue-Tracker-Link,
  Copyright, neue Doku-Einträge software-landscape + novelty-statement

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Tarik Moussa
2026-05-18 20:35:46 +02:00
parent c8e77e715c
commit c5efc3d3cc
8 changed files with 483 additions and 2 deletions

View File

@@ -0,0 +1,143 @@
# Scientific Novelty Statement
> **Purpose.** This document explicitly states what conformallab++ contributes
> that no other open-source C++ library provides, and for which research problems
> it is the right tool. It is intended as a reference for paper introductions,
> grant applications, and collaborator onboarding.
---
## 1 — The one-sentence statement
conformallab++ is the **only open-source C++ library** that implements discrete
conformal equivalence in all three geometric settings (Euclidean, Spherical,
Hyper-ideal), with a complete downstream Teichmüller pipeline — period matrix
τ ∈ , Möbius holonomy, and fundamental domain construction — in a single
cohesive codebase targeting the CGAL ecosystem.
---
## 2 — Unique features (no equivalent elsewhere in C++)
### 2.1 — Three geometry modes in one library
| Mode | Space | Energy | Application |
|---|---|---|---|
| Euclidean | ℝ² | Σ log(ℓᵢⱼ/ℓ̃ᵢⱼ)² | Flat torus uniformization, texture atlasing |
| Spherical | S² | NSD variant | Constant positive curvature, Koebe's theorem |
| HyperIdeal | H² (Poincaré disk) | Springborn 2020 ζ-functions | Hyperbolic surfaces, genus g ≥ 2 |
No other open-source C++ library implements all three. geometry-central
(CMU) has Euclidean and partial HyperIdeal but lacks the Spherical mode entirely.
### 2.2 — Period matrix τ with SL(2,) reduction
For a closed genus-1 surface, conformallab++ computes the complex modulus
τ = ω_b/ω_a ∈ from the holonomy of the uniformizing flat metric, then reduces
τ to the standard fundamental domain
```
F = { τ ∈ : |τ| ≥ 1, |Re(τ)| ≤ 1/2 }
```
via the SL(2,) action. This identifies the conformal class of the surface in
Teichmüller space T₁ ≅ /SL(2,).
**No other open-source C++ library computes τ.** The Java ConformalLab does,
but requires the JVM and is not integrated with any modern mesh processing framework.
### 2.3 — Möbius holonomy in SU(1,1)
The holonomy representation ρ: π₁(Σ) → SU(1,1) is computed for closed surfaces
of any genus. For the torus this gives the lattice generators ω_a, ω_b ∈ .
For hyperbolic surfaces this gives deck transformations as Möbius maps acting on
the Poincaré disk.
### 2.4 — Tree-cotree cut graph (EricksonWhittlesey)
For a closed surface of genus g, the cut graph produces exactly 2g seam edges
that cut the surface to a disk. This is required for layout, holonomy computation,
and fundamental domain construction. The cut graph is not present in any other
C++ conformal geometry library.
### 2.5 — Fundamental domain and tiling
From the holonomy generators, conformallab++ constructs the fundamental domain
parallelogram and its lattice tiling for genus-1 surfaces. This is the discrete
analog of the classical construction of a torus as /Λ.
---
## 3 — What makes this a research tool, not just an implementation
### 3.1 — Variational framework, not heuristic
The energy functionals are derived from first principles (BobenkoSpringborn 2004).
The Newton solver guarantees quadratic convergence to the *global* optimum for
Euclidean and HyperIdeal modes (strict convexity). The solution is mathematically
unique (up to Möbius normalisation) — not an approximation.
### 3.2 — Analytic Hessians
For Euclidean and Spherical modes, the Hessian is computed analytically from the
cotangent Laplacian and its spherical analog. This gives exact derivatives, not
finite-difference approximations, which is required for reproducible research.
### 3.3 — Discrete-to-smooth correspondence
The discrete period matrix τ_discrete is a computable invariant of the triangulated
surface. Its convergence to the smooth Riemannian τ_smooth under mesh refinement
is an open research question that this library is designed to investigate.
### 3.4 — Full test coverage of analytic invariants
173 CGAL tests verify mathematically provable properties:
- GaussBonnet: Σ(2πΘᵥ) = 2π·χ(M) to machine precision
- τ ∈ fundamental domain: three inequalities
- Holonomy closure: [T_a, T_b] = Id (abelian for genus 1)
- Gradient consistency: FD check at ε = 1e-5 for all three functionals
These are not regression tests — they verify mathematical correctness independently
of the input mesh.
---
## 4 — Target audience
| Audience | Primary use |
|---|---|
| Discrete differential geometers | Computing τ, holonomy, uniformization for theoretical examples |
| Computational mathematicians | Benchmarking discrete-to-smooth convergence of τ |
| CGAL developers | Extending the CGAL parameterization package (Phase 8) |
| Computer graphics researchers | Conformal texture atlasing with exact angle preservation |
| Algebraic geometers | Numerical experiments on moduli spaces of tori |
---
## 5 — Relationship to the Java original
conformallab++ is a port of Stefan Sechelmann's Java ConformalLab (TU Berlin,
~850 commits, v1.0.0 2018, LGPL). The port:
- Replaces the custom Java halfedge structure (`CoHDS`) with `CGAL::Surface_mesh`
- Replaces JUnit tests with GTest + CGAL test format (173 tests)
- Adds Doxygen API documentation, CMake build, and CLI
- Is MIT licensed (the Java original is LGPL)
- Targets submission to the CGAL library as package `Discrete_conformal_map`
The mathematics is identical to the Java original. The C++ implementation is
independently validated by the test suite and by agreement with Java outputs on
shared test meshes (cathead, brezel, torus family).
---
## 6 — What conformallab++ is not
- **Not a mesh processing library.** It operates on existing triangulated surfaces.
Remeshing, smoothing, and simplification are outside its scope.
- **Not a real-time renderer.** The Newton solver is accurate but not optimised
for interactive frame rates (though it converges in < 1 second for typical meshes).
- **Not a distortion-minimisation tool.** It computes the unique conformally
equivalent metric, not a least-distortion UV map. Use libigl for the latter.
- **Not complete for genus g 2.** The Siegel period matrix Ω and full
uniformization for higher genus are Phase 10 research targets, not yet implemented.

View File

@@ -0,0 +1,128 @@
# Software Landscape — Discrete Conformal Geometry Tools
> **Purpose.** A mathematician evaluating conformallab++ needs to know how it
> relates to existing tools. This document maps the full landscape and explains
> why no existing library covers the same ground.
---
## 1 — The two problems that look the same but are not
The term "conformal parameterization" covers two fundamentally different problems:
### Problem A — Conformal distortion minimization (LSCM / ABF++ / ARAP)
Find a UV map u: V → ℝ² that *minimises* a measure of angle distortion.
This is an unconstrained or lightly constrained optimisation over UV coordinates.
The solution depends on the embedding in ℝ³ and is **not unique** — it minimises
distortion but does not assign the surface to a canonical conformal class.
Tools: **libigl, CGAL Surface_parameterization, pmp-library, Blender, MeshLab**.
### Problem B — Discrete conformal equivalence (DCE)
Find scale factors u ∈ ℝᵛ such that the rescaled metric
ℓ̃ᵢⱼ = e^{(uᵢ+uⱼ)/2} · ℓᵢⱼ has prescribed cone angles Θᵥ at every vertex.
This is a variational problem on the *intrinsic metric* — independent of any
embedding. The solution is **unique** (up to a global Möbius transformation)
and places the surface in its canonical position in Teichmüller space.
Tools: **conformallab++, geometry-central (partial), original Java ConformalLab**.
> **This distinction matters.** A UV map from LSCM minimises distortion but
> cannot be used to compute the period matrix τ ∈ . A DCE solution can.
---
## 2 — Full comparison table
| Library | Lang | DCE solver | Spherical | HyperIdeal | Cut graph | Holonomy | Period τ | Open source |
|---|---|---|---|---|---|---|---|---|
| **conformallab++** | C++17 | Newton (quad.) | ✓ | ✓ | ✓ (tree-cotree) | ✓ SU(1,1) | ✓ SL(2,) | ✓ MIT |
| Java ConformalLab | Java 8 | Newton | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ LGPL |
| geometry-central | C++17 | Newton / Yamabe | ✗ | ✓ (partial) | ✗ | ✗ | ✗ | ✓ MIT |
| libigl | C++14 | LSCM / ARAP¹ | ✗ | ✗ | ✗ | ✗ | ✗ | ✓ MPL-2 |
| CGAL Parameterization | C++ | LSCM / Orbifold¹ | ✗ | ✗ | ✗ | ✗ | ✗ | ✓ GPL/LGPL |
| pmp-library | C++17 | harmonic / param.¹ | ✗ | ✗ | ✗ | ✗ | ✗ | ✓ MIT |
| OpenFlipper | C++ | LSCM plugin¹ | ✗ | ✗ | ✗ | ✗ | ✗ | ✓ LGPL |
| Matlab geom. toolbox | MATLAB | LSCM / ABF++¹ | ✗ | ✗ | ✗ | ✗ | ✗ | commercial |
¹ These are Problem-A methods (distortion minimisation), not DCE.
---
## 3 — Detailed comparison: conformallab++ vs. Java ConformalLab
conformallab++ is a C++17 reimplementation of the Java library:
| Aspect | Java ConformalLab | conformallab++ |
|---|---|---|
| Language | Java 8 | C++17 |
| Mesh type | Custom `CoHDS` halfedge | `CGAL::Surface_mesh` |
| Build system | Maven | CMake |
| Test framework | JUnit 4 | GTest + CGAL test format |
| Static linking | JVM required | standalone binary |
| CGAL integration | none | native (target: CGAL package) |
| Inversive distance | ✓ | planned (Phase 9a) |
| Analytic HI Hessian | ✓ | planned (Phase 9b) |
| Genus g>1 domain | ✓ partial | planned (Phase 9c) |
| Siegel matrix Ω | partial | planned (Phase 10b) |
| All three modes | ✓ | ✓ |
| Period matrix τ | ✓ | ✓ |
| Holonomy | ✓ | ✓ |
**Phase parity:** Phases 17 of conformallab++ cover all core Java features.
Phases 910 will complete the remaining items. See `doc/roadmap/java-parity.md`
for the full feature-by-feature table.
---
## 4 — Detailed comparison: conformallab++ vs. geometry-central
geometry-central (Keenan Crane, CMU) is the closest external peer.
Both implement DCE but diverge significantly in scope and algorithm.
| Dimension | conformallab++ | geometry-central |
|---|---|---|
| **Solver** | Newton, quadratic convergence | Newton or Yamabe flow |
| **Triangulation** | Fixed original mesh | Intrinsic + Ptolemaic flips |
| **Spherical geometry** | ✓ (NSD Hessian, sign flip) | ✗ |
| **Cut graph** | ✓ tree-cotree, 2g seams | ✗ |
| **Holonomy** | ✓ SU(1,1) Möbius maps | ✗ |
| **Period matrix** | ✓ τ ∈ , SL(2,)-reduced | ✗ |
| **Fundamental domain** | ✓ genus 1 complete | ✗ |
| **Mesh backend** | CGAL `Surface_mesh` | gc `ManifoldSurfaceMesh` |
| **CGAL integration** | ✓ (target: package) | ✗ |
For a full analysis including adoption candidates and scientific added value,
see `doc/architecture/geometry-central-comparison.md`.
---
## 5 — What Problem-A tools cannot do
The following tasks require DCE (Problem B) and cannot be done with LSCM/ARAP:
| Task | Requires |
|---|---|
| Compute the period matrix τ of a torus | DCE + holonomy + period matrix |
| Classify a surface in Teichmüller space | DCE |
| Construct a flat metric with prescribed cone angles | DCE |
| Tile a surface by a lattice (fundamental domain) | DCE + cut graph + holonomy |
| Compare two surfaces conformally | DCE (same conformal class ↔ same τ) |
| Uniformize a hyperbolic surface (genus g ≥ 2) | HyperIdeal DCE |
| Compute holomorphic differentials (Phase 10) | DCE + cut graph + integration |
---
## 6 — When to use which tool
| Goal | Recommended tool |
|---|---|
| Fast UV unwrapping for texture mapping | libigl LSCM or pmp-library |
| Angle-preserving parameterization, distortion study | CGAL Surface_parameterization |
| Discrete conformal equivalence, research | **conformallab++** |
| DCE with maximum numerical robustness on bad meshes | geometry-central (+ Ptolemaic flips) |
| Full Teichmüller pipeline (τ, holonomy, domain) | **conformallab++** only |
| Interactive exploration (viewer) | conformallab++ (`-DWITH_CGAL=ON`) |
| Java ecosystem / existing ConformalLab workflow | Java ConformalLab |