Files
ConformalLabpp/doc/math/software-landscape.md
Tarik Moussa c5efc3d3cc
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
chore/docs: Onboarding-Sprint für externe Mathematiker
- 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>
2026-05-18 20:35:46 +02:00

129 lines
5.7 KiB
Markdown
Raw Permalink 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.

# 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 |