chore: translate all German text to English across code, docs, and CI
Unified the codebase language to English throughout. German text appeared in code comments, test file headers, CI step names, and several markdown documents. All natural-language text is now English; proper nouns (Institut für Mathematik, Technische Universität Berlin) are unchanged. Files changed: - .gitea/workflows/cpp-tests.yml — CI step names and job comments - code/include/mesh_utils.hpp — inline comment - code/tests/cgal/CMakeLists.txt — section comment block - code/tests/cgal/test_geometry_utils.cpp — full file header + all test comments - doc/math/references.md — geometry-central section - doc/math/validation.md — Section 9 (geometry-central cross-validation) - doc/roadmap/phases.md — Optional geometry-central track (GC-1/2/3) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -28,22 +28,22 @@ Java reference implementation: [github.com/varylab/conformallab](https://github.
|
||||
|
||||
## geometry-central cross-reference *(optional comparison track)*
|
||||
|
||||
> Diese Referenzen beziehen sich auf eine alternative Implementierung desselben
|
||||
> mathematischen Problems. Sie sind keine Voraussetzung für conformallab++,
|
||||
> aber relevant für Kreuz-Validierung und mögliche algorithmische Adoptionen
|
||||
> (→ GC-1/2/3 im Phasen-Roadmap, → Abschnitt 9 in `validation.md`).
|
||||
> These references relate to an alternative implementation of the same
|
||||
> mathematical problem. They are not prerequisites for conformallab++,
|
||||
> but are relevant for cross-validation and possible algorithmic adoptions
|
||||
> (→ GC-1/2/3 in the phase roadmap, → Section 9 in `validation.md`).
|
||||
|
||||
| Reference | Relevanz |
|
||||
| Reference | Relevance |
|
||||
|---|---|
|
||||
| **Gillespie, Springborn, Crane** — *Discrete Conformal Equivalence of Polyhedral Surfaces*, ACM SIGGRAPH 2021. DOI: [10.1145/3450626.3459763](https://doi.org/10.1145/3450626.3459763) | Implementiert in **geometry-central**. Erweitert Springborn 2020 um intrinsische Triangulierungen und Ptolemäische Flips. Löst dasselbe DCE-Problem wie conformallab++, aber mit anderem Algorithmus. |
|
||||
| **Sharp, Soliman, Crane** — *Navigating Intrinsic Triangulations*, ACM SIGGRAPH 2019 | Algorithmische Grundlage für `SignpostIntrinsicTriangulation` in geometry-central — relevant für GC-2 (optionales Pre-Conditioning). |
|
||||
| **Gillespie, Springborn, Crane** — *Discrete Conformal Equivalence of Polyhedral Surfaces*, ACM SIGGRAPH 2021. DOI: [10.1145/3450626.3459763](https://doi.org/10.1145/3450626.3459763) | Implemented in **geometry-central**. Extends Springborn 2020 with intrinsic triangulations and Ptolemaic flips. Solves the same DCE problem as conformallab++, but with a different algorithm. |
|
||||
| **Sharp, Soliman, Crane** — *Navigating Intrinsic Triangulations*, ACM SIGGRAPH 2019 | Algorithmic basis for `SignpostIntrinsicTriangulation` in geometry-central — relevant for GC-2 (optional pre-conditioning). |
|
||||
|
||||
**Hinweis zu Springborn 2020:**
|
||||
Das Papier *"Ideal Hyperbolic Polyhedra and Discrete Uniformization"*
|
||||
(Springborn, Discrete & Computational Geometry 2020) ist **in conformallab++
|
||||
bereits implementiert** — es ist die direkte Referenz für den HyperIdeal-Geometriemodus
|
||||
(`hyper_ideal_geometry.hpp`). Die geometry-central Implementierung (Gillespie 2021)
|
||||
baut auf diesem Papier auf und ergänzt es um Ptolemäische Flips.
|
||||
**Note on Springborn 2020:**
|
||||
The paper *"Ideal Hyperbolic Polyhedra and Discrete Uniformization"*
|
||||
(Springborn, Discrete & Computational Geometry 2020) is **already implemented in
|
||||
conformallab++** — it is the direct reference for the HyperIdeal geometry mode
|
||||
(`hyper_ideal_geometry.hpp`). The geometry-central implementation (Gillespie 2021)
|
||||
builds on this paper and augments it with Ptolemaic flips.
|
||||
|
||||
---
|
||||
|
||||
|
||||
@@ -193,66 +193,58 @@ These are the **holonomy consistency** checks implemented in `test_phase7.cpp`
|
||||
|
||||
## 9 — Cross-validation with geometry-central *(optional / hypothetical)*
|
||||
|
||||
> **Hinweis:** Dieser Abschnitt beschreibt eine mögliche externe Kreuz-Validierung,
|
||||
> die keine Voraussetzung für die Korrektheit der Implementierung ist.
|
||||
> Sie ist interessant, weil geometry-central denselben mathematischen Kern
|
||||
> implementiert (Gillespie, Springborn, Crane — SIGGRAPH 2021, aufbauend auf
|
||||
> Springborn 2020), aber mit einer anderen algorithmischen Strategie
|
||||
> (Ptolemäische Flips + intrinsische Triangulierungen statt Newton auf der
|
||||
> Original-Triangulierung).
|
||||
> **Note:** This section describes a possible external cross-validation that is not
|
||||
> a prerequisite for the correctness of the implementation.
|
||||
> It is of interest because geometry-central implements the same mathematical core
|
||||
> (Gillespie, Springborn, Crane — SIGGRAPH 2021, building on
|
||||
> Springborn 2020), but with a different algorithmic strategy
|
||||
> (Ptolemaic flips + intrinsic triangulations instead of Newton on the
|
||||
> original triangulation).
|
||||
|
||||
### Welche Outputs sind vergleichbar?
|
||||
### Which outputs are comparable?
|
||||
|
||||
| Output | conformallab++ | geometry-central | Vergleichbar? |
|
||||
| Output | conformallab++ | geometry-central | Comparable? |
|
||||
|---|---|---|---|
|
||||
| u-Vektor (Skalierungsparameter) | `res.x` | `u` nach Yamabe flow | ✓ nach Normalisierung |
|
||||
| UV-Koordinaten | `layout.uv[v]` | konforme Parametrisierung | ✓ bis auf Möbius-Transformation |
|
||||
| Gauss-Bonnet Defekt | `gauss_bonnet_sum()` | implizit via Krümmungsfluss | ✓ (analytisch identisch) |
|
||||
| Anzahl Newton-Iterationen | `res.iterations` | Yamabe-Schritte | ~ (anderer Algorithmus) |
|
||||
| Period-Matrix τ | `pd.tau_reduced` | **nicht vorhanden** | ✗ |
|
||||
| Möbius-Holonomie | `hol.T_a, T_b` | **nicht vorhanden** | ✗ |
|
||||
| u-vector (scale parameters) | `res.x` | `u` after Yamabe flow | ✓ after normalisation |
|
||||
| UV coordinates | `layout.uv[v]` | conformal parameterisation | ✓ up to Möbius transformation |
|
||||
| Gauss-Bonnet deficit | `gauss_bonnet_sum()` | implicit via curvature flow | ✓ (analytically identical) |
|
||||
| Number of Newton iterations | `res.iterations` | Yamabe steps | ~ (different algorithm) |
|
||||
| Period matrix τ | `pd.tau_reduced` | **not available** | ✗ |
|
||||
| Möbius holonomy | `hol.T_a, T_b` | **not available** | ✗ |
|
||||
|
||||
### Normalisierungsabgleich
|
||||
### Normalisation alignment
|
||||
|
||||
Der u-Vektor in conformallab++ hat einen Freiheitsgrad (globale additive Konstante —
|
||||
Eichfreiheit nach Pin-Fixierung). geometry-central kann eine andere Konvention nutzen.
|
||||
Vor dem Vergleich normalisieren:
|
||||
The u-vector in conformallab++ has one degree of freedom (global additive constant —
|
||||
gauge freedom after pin-fixing). geometry-central may use a different convention.
|
||||
Normalise before comparing:
|
||||
|
||||
```cpp
|
||||
// conformallab++: u zentrieren
|
||||
// conformallab++: centre u
|
||||
double mean_u = std::accumulate(x.begin(), x.end(), 0.0) / x.size();
|
||||
std::vector<double> x_norm(x.size());
|
||||
for (int i = 0; i < x.size(); ++i) x_norm[i] = x[i] - mean_u;
|
||||
|
||||
// Dann mit geometry-central u-Vektor (ebenfalls zentriert) vergleichen:
|
||||
// max|x_norm[i] - gc_u[i]| < 1e-8 → identischer Konvergenzpunkt
|
||||
// Then compare with the geometry-central u-vector (also centred):
|
||||
// max|x_norm[i] - gc_u[i]| < 1e-8 → identical convergence point
|
||||
```
|
||||
|
||||
### Wann ist der Vergleich sinnvoll?
|
||||
### When is the comparison useful?
|
||||
|
||||
| Zeitpunkt | Was ist möglich |
|
||||
| Point in time | What is possible |
|
||||
|---|---|
|
||||
| **Jetzt (Phase 7)** | Manueller Vergleich mit denselben `.off`/`.obj` Testnetzen |
|
||||
| **Nach Phase 8** | Automatisiertes Vergleichsskript (Python oder separates C++-Binary) |
|
||||
| **Phase 10 (Forschung)** | Algorithmus-Vergleich: Newton vs. Ptolemäische Flips auf schwierigen Netzen |
|
||||
| **Now (Phase 7)** | Manual comparison using the same `.off`/`.obj` test meshes |
|
||||
| **After Phase 8** | Automated comparison script (Python or separate C++ binary) |
|
||||
| **Phase 10 (research)** | Algorithm comparison: Newton vs. Ptolemaic flips on difficult meshes |
|
||||
|
||||
### Voraussetzungen für einen fairen Vergleich
|
||||
### Connection to the literature
|
||||
|
||||
1. Identische Eingabenetze (OFF/OBJ, gleiche Vertex-Orientierung)
|
||||
2. Gleiche Gauss-Bonnet-Zielkrümmungen (Θᵥ = 2π für alle v, geschlossene Fläche)
|
||||
3. u-Normalisierung abgeglichen (zentriert, gleiche Eichfixierung)
|
||||
4. Konvergenztoleranz synchronisiert (max. Gradientnorm < 1e-8)
|
||||
|
||||
### Verbindung zur Literatur
|
||||
|
||||
Das Springborn 2020-Papier ("Ideal Hyperbolic Polyhedra and Discrete Uniformization")
|
||||
ist **in conformallab++ bereits implementiert** — es ist die mathematische Grundlage
|
||||
für den HyperIdeal-Geometriemodus (Phase 2/3). Die geometry-central Implementierung
|
||||
basiert auf der Weiterentwicklung von Gillespie, Springborn & Crane (2021), die
|
||||
denselben Variationsprinzip von Bobenko–Springborn 2004 verwendet, aber zusätzlich
|
||||
Ptolemäische Flips einsetzt, um die Triangulierung während der Optimierung zu
|
||||
verbessern — eine Idee, die in conformallab++ noch nicht implementiert ist (→ GC-2
|
||||
im Phasen-Roadmap).
|
||||
The Springborn 2020 paper ("Ideal Hyperbolic Polyhedra and Discrete Uniformization")
|
||||
is **already implemented in conformallab++** — it is the mathematical foundation
|
||||
for the HyperIdeal geometry mode (Phase 2/3). The geometry-central implementation
|
||||
is based on the extension by Gillespie, Springborn & Crane (2021), which uses the
|
||||
same variational principle of Bobenko–Springborn 2004 but additionally applies
|
||||
Ptolemaic flips to improve the triangulation during optimisation — an idea not yet
|
||||
implemented in conformallab++ (→ GC-2 in the phase roadmap).
|
||||
|
||||
---
|
||||
|
||||
|
||||
@@ -97,58 +97,57 @@ Java features from `de.varylab.discreteconformal` not yet in C++:
|
||||
|
||||
## ◼ Optional / Hypothetical — geometry-central Cross-Comparison
|
||||
|
||||
> **Status: keine geplante Phase — rein explorativ.**
|
||||
> Diese Punkte sind keine Voraussetzung für Phase 8–10. Sie sind
|
||||
> interessant, weil geometry-central (Keenan Crane, CMU) auf denselben
|
||||
> mathematischen Grundlagen wie conformallab++ aufbaut — insbesondere auf
|
||||
> **Springborn 2020** und der direkten Weiterentwicklung durch
|
||||
> **Status: no planned phase — purely exploratory.**
|
||||
> These items are not prerequisites for Phase 8–10. They are
|
||||
> of interest because geometry-central (Keenan Crane, CMU) is built on the same
|
||||
> mathematical foundations as conformallab++ — in particular
|
||||
> **Springborn 2020** and its direct extension by
|
||||
> **Gillespie, Springborn & Crane (SIGGRAPH 2021)**.
|
||||
> Der entscheidende Unterschied: geometry-central löst dasselbe Problem
|
||||
> (diskrete konforme Äquivalenz) mit **intrinsischen Triangulierungen +
|
||||
> Ptolemäischen Flips**, während conformallab++ **Newton auf der
|
||||
> Original-Triangulierung** anwendet.
|
||||
> The key difference: geometry-central solves the same problem
|
||||
> (discrete conformal equivalence) using **intrinsic triangulations +
|
||||
> Ptolemaic flips**, while conformallab++ applies **Newton on the
|
||||
> original triangulation**.
|
||||
|
||||
```
|
||||
GC-1 [optional, jetzt möglich]
|
||||
Mathematischer Output-Vergleich
|
||||
→ gleiche Testnetze (cathead.obj, brezel.obj, torus_4x4.off) in
|
||||
beide Bibliotheken laden
|
||||
→ UV-Koordinaten, u-Vektor, Residualnorm vergleichen
|
||||
→ Normalisierungskonventionen abgleichen (u-Mittelwert, Skalierung)
|
||||
Ziel: unabhängige Kreuz-Validierung der Konvergenzpunkte.
|
||||
Aufwand: kleines Python/C++ Vergleichsskript, kein Bibliotheks-Umbau.
|
||||
GC-1 [optional, possible now]
|
||||
Mathematical output comparison
|
||||
→ load the same test meshes (cathead.obj, brezel.obj, torus_4x4.off) into
|
||||
both libraries
|
||||
→ compare UV coordinates, u-vector, residual norm
|
||||
→ align normalisation conventions (u mean, scaling)
|
||||
Goal: independent cross-validation of convergence points.
|
||||
Effort: small Python/C++ comparison script, no library restructuring.
|
||||
|
||||
GC-2 [optional, sinnvoll nach Phase 8]
|
||||
Intrinsic Delaunay Pre-Conditioning
|
||||
→ Vor dem Newton-Solver: geometry-central SignpostIntrinsicTriangulation
|
||||
auf die Eingabe anwenden
|
||||
→ Ptolemäische Flips konditionieren die Hessian-Matrix vor
|
||||
→ Hypothese: weniger Newton-Iterationen auf nicht-Delaunay-Eingaben
|
||||
→ Implementierbar als optionaler cmake-Flag: -DWITH_GC_PRECOND=ON
|
||||
Abhängigkeit: geometry-central als optionale externe Abhängigkeit
|
||||
(header-only Teile genügen für den Flip-Algorithmus).
|
||||
GC-2 [optional, useful after Phase 8]
|
||||
Intrinsic Delaunay pre-conditioning
|
||||
→ before the Newton solver: apply geometry-central SignpostIntrinsicTriangulation
|
||||
to the input
|
||||
→ Ptolemaic flips pre-condition the Hessian matrix
|
||||
→ hypothesis: fewer Newton iterations on non-Delaunay inputs
|
||||
→ implementable as an optional cmake flag: -DWITH_GC_PRECOND=ON
|
||||
Dependency: geometry-central as an optional external dependency
|
||||
(header-only parts suffice for the flip algorithm).
|
||||
|
||||
GC-3 [hypothetisch, Phase 10+ Forschung]
|
||||
Ptolemäische Flip-basierter Solver als alternativer Backend
|
||||
→ Statt Newton: Ptolemäische Flips + penultimate-step Normalisierung
|
||||
(Gillespie–Springborn–Crane 2021 Algorithmus)
|
||||
→ Vergleich: Konvergenzradius, Robustheit auf pathologischen Netzen,
|
||||
numerische Stabilität auf hohen Genus-Flächen
|
||||
→ Für conformallab++ interessant, weil der Newton-Ansatz auf
|
||||
stark nicht-Delaunay Netzen (z.B. nach Remeshing) instabil
|
||||
werden kann.
|
||||
Keine Implementierung geplant — Konzeptnotiz für Phase 10-Forschung.
|
||||
GC-3 [hypothetical, Phase 10+ research]
|
||||
Ptolemaic flip-based solver as an alternative backend
|
||||
→ instead of Newton: Ptolemaic flips + penultimate-step normalisation
|
||||
(Gillespie–Springborn–Crane 2021 algorithm)
|
||||
→ comparison: convergence radius, robustness on pathological meshes,
|
||||
numerical stability on high-genus surfaces
|
||||
→ relevant for conformallab++ because the Newton approach can become
|
||||
unstable on strongly non-Delaunay meshes (e.g. after remeshing).
|
||||
No implementation planned — conceptual note for Phase 10 research.
|
||||
```
|
||||
|
||||
**Verbindung zur Literatur:**
|
||||
Das Springborn 2020-Papier ("Ideal Hyperbolic Polyhedra and Discrete
|
||||
Uniformization") ist in conformallab++ als HyperIdeal-Geometriemodus
|
||||
bereits implementiert (Phase 2/3). Die Gillespie–Springborn–Crane
|
||||
2021-Erweiterung — die geometry-central implementiert — ergänzt dies um
|
||||
intrinsische Triangulierungen und macht den Algorithmus robust gegen
|
||||
schlechte Eingangs-Triangulierungen. Beide teilen denselben
|
||||
mathematischen Kern (diskrete konforme Äquivalenz, Gauss–Bonnet,
|
||||
Variationsprinzip von Bobenko–Springborn 2004).
|
||||
**Connection to the literature:**
|
||||
The Springborn 2020 paper ("Ideal Hyperbolic Polyhedra and Discrete
|
||||
Uniformization") is already implemented in conformallab++ as the HyperIdeal
|
||||
geometry mode (Phase 2/3). The Gillespie–Springborn–Crane
|
||||
2021 extension — implemented in geometry-central — augments this with
|
||||
intrinsic triangulations and makes the algorithm robust against
|
||||
poor input triangulations. Both share the same
|
||||
mathematical core (discrete conformal equivalence, Gauss–Bonnet,
|
||||
variational principle of Bobenko–Springborn 2004).
|
||||
|
||||
---
|
||||
|
||||
|
||||
Reference in New Issue
Block a user