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:
45
README.md
45
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.
|
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 |
|
| CGAL `Surface_mesh` infrastructure + mesh builders | ✅ Phase 3a |
|
||||||
| Euclidean functional (energy + gradient, CGAL mesh) | ✅ Phase 3d |
|
| Euclidean functional (energy + gradient, CGAL mesh) | ✅ Phase 3d |
|
||||||
| Spherical gauge-fix (scale gauge for closed surfaces) | ✅ Phase 3e |
|
| 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 |
|
| Solvers (Newton, gradient flow) | 🔜 Phase 4 |
|
||||||
| XML serialisation / mesh I/O | 🔜 Phase 5 |
|
| XML serialisation / mesh I/O | 🔜 Phase 5 |
|
||||||
| Full CLI app | 🔜 Phase 5 |
|
| Full CLI app | 🔜 Phase 5 |
|
||||||
@@ -201,34 +203,43 @@ docker buildx build \
|
|||||||
|
|
||||||
## Roadmap
|
## Roadmap
|
||||||
|
|
||||||
Die Phasen 1–3 sind abgeschlossen. Die folgenden Schritte schließen Phase 3 ab und
|
Phase 3 ist vollständig abgeschlossen. Phase 4 (Newton-Solver) ist der nächste Schritt.
|
||||||
bereiten Phase 4 (Solver) vor. Die Zeitangaben sind grobe Schätzungen.
|
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
|
Phase 3d EuclideanCyclicFunctional portieren ✅ abgeschlossen
|
||||||
→ euclidean_geometry.hpp: t-Wert / atan2 Winkelformel
|
|
||||||
→ euclidean_functional.hpp: Energie + Gradient auf ConformalMesh
|
→ 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
|
Phase 3e Gauge-Fix für SphericalFunctional ✅ abgeschlossen
|
||||||
→ spherical_gauge_shift() + apply_spherical_gauge() in
|
→ spherical_gauge_shift() + apply_spherical_gauge() in
|
||||||
spherical_functional.hpp — Newton + Backtracking
|
spherical_functional.hpp — Newton + Backtracking
|
||||||
→ 3 neue Tests: ZerosSumGv, ApplyInPlace, AlreadyAtGauge
|
→ Tests: ZerosSumGv, ApplyInPlace, AlreadyAtGauge
|
||||||
|
|
||||||
Phase 3f Hessian (Sphärisch → Euklidisch) (2–3 Tage)
|
Phase 3f Analytische Hessians ✅ abgeschlossen
|
||||||
→ Analytischer Hessian = Kotangenten-Laplace-Operator
|
→ euclidean_hessian.hpp: Kotangenten-Laplace (Pinkall–Polthier 1993)
|
||||||
→ CGAL::Weights::cotangent_weight() als Basis für
|
mit korrektem 1/2-Normierungsfaktor; 8 Tests
|
||||||
die Kantenbeiträge nutzen (bereits in CGAL 6.0 enthalten)
|
→ spherical_hessian.hpp: ∂α_i/∂u_j direkt aus sphärischem
|
||||||
→ Entsperrt Newton-/Trust-Region-Verfahren
|
Cosinussatz abgeleitet + Chain-Rule mit ∂l/∂λ = tan(l/2); 8 Tests
|
||||||
→ Reihenfolge: Sphärisch zuerst (kleinster Hessian),
|
→ Erkenntnis: Sphärische Energie ist konkav (H ist NSD), nicht konvex
|
||||||
dann Euklidisch
|
|
||||||
|
|
||||||
Phase 3g PI-Konstante konsolidieren (< 1 Stunde)
|
Phase 3g PI-Konstante konsolidieren ✅ abgeschlossen
|
||||||
→ conformallab::PI in hyper_ideal_geometry.hpp und
|
→ constants.hpp mit conformallab::PI und TWO_PI
|
||||||
lokales pi in hyper_ideal_utility.hpp zusammenführen
|
→ 5 Dateien bereinigt; PI_SPHER-Alias rückwärtskompatibel
|
||||||
→ Einzelne constants.hpp oder in conformal_mesh.hpp
|
|
||||||
|
|
||||||
Phase 4a Minimaler Newton-Solver (1–2 Tage)
|
Phase 4a Minimaler Newton-Solver (1–2 Tage)
|
||||||
→ Eigen SimplicialLDLT (bereits Projektabhängigkeit)
|
→ Eigen SimplicialLDLT (bereits Projektabhängigkeit)
|
||||||
|
|||||||
Reference in New Issue
Block a user