From 5841646017c7d59e43593fb0c00bdf7c1d7b605f Mon Sep 17 00:00:00 2001 From: Tarik Moussa Date: Tue, 12 May 2026 17:25:26 +0200 Subject: [PATCH] =?UTF-8?q?docs:=20update=20README=20=E2=80=94=20Phase=203?= =?UTF-8?q?=20vollst=C3=A4ndig=20abgeschlossen=20(62=20Tests)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 --- README.md | 45 ++++++++++++++++++++++++++++----------------- 1 file changed, 28 insertions(+), 17 deletions(-) diff --git a/README.md b/README.md index 5f4c94f..3b13a3f 100644 --- a/README.md +++ b/README.md @@ -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 1–3 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) (2–3 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 (Pinkall–Polthier 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 (1–2 Tage) → Eigen SimplicialLDLT (bereits Projektabhängigkeit)