diff --git a/README.md b/README.md index 75d69bc..dc38685 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:** Phase 3 complete. Core geometry (Clausen, hyper-ideal, spherical) and the CGAL mesh infrastructure are in place. Solvers and full CLI pipeline are coming next. +> **Status:** Phase 3 abgeschlossen. Kern-Geometrie (Clausen, Hyper-Ideal, Sphärisch) und CGAL-Mesh-Infrastruktur sind vorhanden. Zum Abschluss von Phase 3 und als Vorbereitung für Phase 4 stehen noch sechs konkrete Schritte aus — siehe [Roadmap](#roadmap). --- @@ -192,6 +192,57 @@ 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 3d EuclideanCyclicFunctional portieren (2–3 Tage) + → Wichtigster fehlender Baustein: Euklidische Uniformisierung + (genus-0 Flachparameterisierung, Kotangenten-Laplace) + → Energie + Gradient auf ConformalMesh + → Entsperrt die verbleibenden HDS-blockierten Tests + → Voraussetzung für jeden end-to-end Optimiererlauf + +Phase 3e Gauge-Fix für SphericalFunctional (1 Tag) + → Java-Äquivalent: maximizeInNegativeDirection() vor jeder + Auswertung — 1D-Liniensuche (Brent) entlang der + globalen Additionskonstante in u_v + → Ohne Gauge-Fix ist die Energie auf geschlossenen Flächen + nach unten unbeschränkt; kein Optimierer kann konvergieren + +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 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 4a Minimaler Newton-Solver (1–2 Tage) + → Eigen SimplicialLDLT (bereits Projektabhängigkeit) + → Newton-Schritt: Δx = −H⁻¹·g mit Hessian aus 3f + → Kein externer PETSc-Solver nötig für erste Tests + → Konvergenzkriterium: ||g||∞ < tol + +Phase 4b CGAL::IO für Mesh-Import/Export (< 1 Tag) + → CGAL::IO::read_OBJ / write_OBJ auf Surface_mesh: + null Eigenentwicklung, sofort nutzbar + → Ermöglicht Round-Trip-Tests gegen Java-Referenz-Meshes + → Mittelfristig: CGAL::IO::read_OFF für .off-Dateien + (ersetzt Java-XML-Serialisierung für Testzwecke) +``` + +--- + ## License conformallab++ is released under the MIT License (see [LICENSE](LICENSE)).