docs: update README — Phase 3 vollständig abgeschlossen (62 Tests)

Mark all Phase 3 sub-phases (3a–3g) as done in the roadmap.
Add euclidean_hessian and spherical_hessian to the feature table.
Update status banner: 62 tests, Phase 4 is next.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
Tarik Moussa
2026-05-12 17:25:26 +02:00
parent 194effba97
commit 5841646017

View File

@@ -4,7 +4,7 @@ conformallab++ is a modern C++ reimplementation of the [ConformalLab](https://gi
The long-term goal is a **CGAL package** that brings discrete conformal maps (hyper-ideal, spherical, Euclidean) to the CGAL ecosystem using `CGAL::Surface_mesh` as the underlying half-edge data structure.
> **Status:** Phasen 3d + 3e abgeschlossen. Alle drei Kern-Geometrien (Hyper-Ideal, Sphärisch, Euklidisch) plus Sphärischer Gauge-Fix sind auf `ConformalMesh` portiert. **45 Tests, 3 skipped** (Hessian-Stubs). Nächster Schritt: Phase 3f (Hessian) → Phase 4 (Newton-Solver) — siehe [Roadmap](#roadmap).
> **Status:** Phase 3 vollständig abgeschlossen. Alle drei Kern-Geometrien (Hyper-Ideal, Sphärisch, Euklidisch) plus analytische Hessians (Kotangenten-Laplace) sind auf `ConformalMesh` portiert. **62 Tests, 3 skipped**. Nächster Schritt: Phase 4 (Newton-Solver) — siehe [Roadmap](#roadmap).
---
@@ -19,6 +19,8 @@ The long-term goal is a **CGAL package** that brings discrete conformal maps (hy
| CGAL `Surface_mesh` infrastructure + mesh builders | ✅ Phase 3a |
| Euclidean functional (energy + gradient, CGAL mesh) | ✅ Phase 3d |
| Spherical gauge-fix (scale gauge for closed surfaces) | ✅ Phase 3e |
| Euclidean Hessian (cotangent-Laplace operator) | ✅ Phase 3f |
| Spherical Hessian (∂α/∂u from law of cosines) | ✅ Phase 3f |
| Solvers (Newton, gradient flow) | 🔜 Phase 4 |
| XML serialisation / mesh I/O | 🔜 Phase 5 |
| Full CLI app | 🔜 Phase 5 |
@@ -201,34 +203,43 @@ docker buildx build \
## Roadmap
Die Phasen 13 sind abgeschlossen. Die folgenden Schritte schließen Phase 3 ab und
bereiten Phase 4 (Solver) vor. Die Zeitangaben sind grobe Schätzungen.
Phase 3 ist vollständig abgeschlossen. Phase 4 (Newton-Solver) ist der nächste Schritt.
Die Zeitangaben sind grobe Schätzungen.
---
```
Phase 3a CGAL Surface_mesh Infrastruktur ✅ abgeschlossen
→ conformal_mesh.hpp, mesh_builder.hpp
→ 14 Tests: Topologie, Traversal, Properties, Validity
Phase 3b HyperIdealFunctional portieren ✅ abgeschlossen
→ hyper_ideal_functional.hpp: Energie + Gradient
→ 6 Tests (1 skipped): Gradient-Checks, FD-Tests
Phase 3c SphericalFunctional portieren ✅ abgeschlossen
→ spherical_functional.hpp: Energie + Gradient
→ Tests: Winkelformel, Gradient-Checks
Phase 3d EuclideanCyclicFunctional portieren ✅ abgeschlossen
→ euclidean_geometry.hpp: t-Wert / atan2 Winkelformel
→ euclidean_functional.hpp: Energie + Gradient auf ConformalMesh
11 Tests: Winkelformel, Gradient-Checks, NaN-Test, Fan, Mixed-Pinned
→ Tests: Winkelformel, Gradient-Checks, NaN-Test, Fan, Mixed-Pinned
Phase 3e Gauge-Fix für SphericalFunctional ✅ abgeschlossen
→ spherical_gauge_shift() + apply_spherical_gauge() in
spherical_functional.hpp — Newton + Backtracking
3 neue Tests: ZerosSumGv, ApplyInPlace, AlreadyAtGauge
→ Tests: ZerosSumGv, ApplyInPlace, AlreadyAtGauge
Phase 3f Hessian (Sphärisch → Euklidisch) (23 Tage)
Analytischer Hessian = Kotangenten-Laplace-Operator
→ CGAL::Weights::cotangent_weight() als Basis für
die Kantenbeiträge nutzen (bereits in CGAL 6.0 enthalten)
→ Entsperrt Newton-/Trust-Region-Verfahren
Reihenfolge: Sphärisch zuerst (kleinster Hessian),
dann Euklidisch
Phase 3f Analytische Hessians ✅ abgeschlossen
euclidean_hessian.hpp: Kotangenten-Laplace (PinkallPolthier 1993)
mit korrektem 1/2-Normierungsfaktor; 8 Tests
→ spherical_hessian.hpp: ∂α_i/∂u_j direkt aus sphärischem
Cosinussatz abgeleitet + Chain-Rule mit ∂l/∂λ = tan(l/2); 8 Tests
Erkenntnis: Sphärische Energie ist konkav (H ist NSD), nicht konvex
Phase 3g PI-Konstante konsolidieren (< 1 Stunde)
→ conformallab::PI in hyper_ideal_geometry.hpp und
lokales pi in hyper_ideal_utility.hpp zusammenführen
→ Einzelne constants.hpp oder in conformal_mesh.hpp
Phase 3g PI-Konstante konsolidieren ✅ abgeschlossen
→ constants.hpp mit conformallab::PI und TWO_PI
→ 5 Dateien bereinigt; PI_SPHER-Alias rückwärtskompatibel
Phase 4a Minimaler Newton-Solver (12 Tage)
→ Eigen SimplicialLDLT (bereits Projektabhängigkeit)