docs: fix cherry-pick duplicate 9d/9e sections — merge into unified structure
Some checks failed
C++ Tests / test-fast (pull_request) Successful in 1m55s
API Docs / doc-build (pull_request) Successful in 57s
Markdown link check / check (pull_request) Successful in 48s
C++ Tests / test-cgal (pull_request) Failing after 11m5s
C++ Tests / quality-gates (pull_request) Failing after 1m57s

Auto-merge from cherry-pick concatenated both branch versions of Phase 9d
and 9e. This commit resolves the duplication:

- 9d now has 4 sub-items (9d.1–9d.4) combining both branches:
    9d.1  ConesUtility (detailed: BFS, auto-placement, quantization)
          + Troyanov/Springborn refs (from literature analysis)
    9d.2  Non-Euclidean cone extensions (RESEARCH)
          + Bobenko-Lutz 2025 + Crane 2018 (from literature analysis)
    9d.3  StereographicUnwrapper + SphereUtility
    9d.4  MobiusCenteringFunctional
- 9e keeps the detailed reviewer/meeting-prep version
  + adds mathematical references (Bobenko-Hoffmann-Springborn 2006)
- 9f (Polygon Laplacian, Alexa 2011/2020) retained as standalone section

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Tarik Moussa
2026-05-26 00:02:42 +02:00
parent e8a118fa5f
commit 8daee1bb21

View File

@@ -129,16 +129,22 @@ mesh type.
+ holonomy infrastructure. + holonomy infrastructure.
Effort: ~2 weeks for fundamental polygon, +2 weeks for surgery Effort: ~2 weeks for fundamental polygon, +2 weeks for surgery
layer, +1 week integration. layer, +1 week integration.
```
9d — Cone singularities + sphere atlas (Java port + research extension) 9d — Cone metrics + sphere utilities (Java port + research extension)
──────────────────────────────────────────────────────────────────────── ────────────────────────────────────────────────────────────────────
9d.1 ConesUtility (Java port — Euclidean only) ```
→ cones_utility.hpp 9d.1 ConesUtility (Java port: unwrapper/ConesUtility.java)
Java source: ConesUtility.java (~200 lines) → cone_singularities.hpp
Fills the "⚠️ data structure only" gap in java-parity.md:
- Detect interior cone vertices (angle deficit ≠ 0)
- BFS path from cone to mesh boundary → cut edge set
- Auto-placement: conjugate gradient on Θ-gradient magnitude
- Quantization: snap cone angles to π/2, π/3, π/6 for
quad / triangle / hexagonal atlas targets
Java reference: unwrapper/ConesUtility.java
Mathematical reference: Troyanov 1991 + Springborn 2020 §3 Mathematical reference: Troyanov 1991 + Springborn 2020 §3
Port scope: prescribed cone angles Θᵥ ≠ 2π in Euclidean mode.
Status: 🔲 planned
9d.2 Non-Euclidean cone extensions (RESEARCH, not in Java) 9d.2 Non-Euclidean cone extensions (RESEARCH, not in Java)
→ extend ConesUtility to HyperIdeal + Spherical modes → extend ConesUtility to HyperIdeal + Spherical modes
@@ -153,68 +159,13 @@ mesh type.
automatic cone placement; directly applicable to 9d.2 algorithm. automatic cone placement; directly applicable to 9d.2 algorithm.
Status: 🔲 planned Status: 🔲 planned
9d.3 StereographicUnwrapper (Java port) 9d.3 StereographicUnwrapper + SphereUtility (Java port)
→ stereo_unwrapper.hpp
Java source: StereographicUnwrapper.java (266 lines)
Converts spherical DCE output (Point_3 on S²) to a 2-D atlas
via stereographic projection + Möbius centring.
Closes the visualisation gap from discrete_conformal_map_spherical().
Effort: small (~3 days).
Status: 🔲 planned
9e — CirclePatternLayout (Java port)
─────────────────────────────────────
9e CirclePatternLayout + CirclePatternUtility (Java port)
→ circle_pattern_layout.hpp
Java sources: CirclePatternLayout.java + CirclePatternUtility.java
+ CPEuclideanRotation.java
Mathematical reference: Bobenko-Springborn 2004 variational principle
+ Bobenko-Hoffmann-Springborn 2006 "Minimal
surfaces from circle patterns" (Discrete &
Comput. Geom. 35, 2006).
Status: 🔲 planned
9f — Polygon Laplacian (RESEARCH — no Java equivalent)
──────────────────────────────────────────────────────
9f Discrete Laplacian on general polygonal meshes
→ polygon_laplacian.hpp
Java source: NONE
Mathematical reference:
Alexa, Wardetzky 2011 "Discrete Laplacians on General Polygonal
Meshes" (ACM SIGGRAPH 2011) — virtual-node construction,
polygon cotangent weights extending the Pinkall-Polthier formula.
Alexa 2020 "Discrete Laplacians on General Polygonal Meshes"
(ACM TOG 39, 2020) — extended journal treatment, error bounds.
Enables: DCE energy evaluation on quad-dominant / Voronoi /
polygon meshes without forced triangulation.
Replaces euclidean_hessian.hpp for non-triangular inputs.
Status: 🔲 planned (pure research, no Java source)
Effort: medium (~2 weeks core + tests; +1 week Newton integration).
```
9d — Cone metrics + sphere utilities (Java port — 2026 library scan)
────────────────────────────────────────────────────────────────────
```
9d.1 ConesUtility (Java port: unwrapper/ConesUtility.java)
→ cone_singularities.hpp
Fills the "⚠️ data structure only" gap in java-parity.md:
- Detect interior cone vertices (angle deficit ≠ 0)
- BFS path from cone to mesh boundary → cut edge set
- Auto-placement: conjugate gradient on Θ-gradient magnitude
- Quantization: snap cone angles to π/2, π/3, π/6 for
quad / triangle / hexagonal atlas targets
Java reference: unwrapper/ConesUtility.java
9d.2 StereographicUnwrapper + SphereUtility (Java port)
→ stereographic_layout.hpp → stereographic_layout.hpp
Stereographic projection S²→{∞} + Möbius centering for Stereographic projection S²→{∞} + Möbius centering for
genus-0 surfaces. Converts spherical DCE output to a flat 2-D atlas. genus-0 surfaces. Converts spherical DCE output to a flat 2-D atlas.
Java reference: unwrapper/StereographicUnwrapper.java (266 lines) Java reference: unwrapper/StereographicUnwrapper.java (266 lines)
9d.3 MobiusCenteringFunctional (Java port, optional upgrade) 9d.4 MobiusCenteringFunctional (Java port, optional upgrade)
→ integrate into layout.hpp normalise_hyperbolic() → integrate into layout.hpp normalise_hyperbolic()
Variational Möbius centering via Lorentz geometry: Variational Möbius centering via Lorentz geometry:
E = Σ log(-⟨x,p⟩/√(-⟨x,x⟩)) E = Σ log(-⟨x,p⟩/√(-⟨x,x⟩))
@@ -235,6 +186,30 @@ mesh type.
- CPEuclideanRotation: rotation-invariant CP functional variant - CPEuclideanRotation: rotation-invariant CP functional variant
Java references: unwrapper/circlepattern/CirclePattern{Layout,Utility}.java Java references: unwrapper/circlepattern/CirclePattern{Layout,Utility}.java
unwrapper/circlepattern/CPEuclideanRotation.java unwrapper/circlepattern/CPEuclideanRotation.java
Mathematical reference: Bobenko-Springborn 2004 variational principle
+ Bobenko-Hoffmann-Springborn 2006 "Minimal
surfaces from circle patterns" (Discrete &
Comput. Geom. 35, 2006).
```
9f — Polygon Laplacian (RESEARCH — no Java equivalent)
──────────────────────────────────────────────────────
```
9f Discrete Laplacian on general polygonal meshes
→ polygon_laplacian.hpp
Java source: NONE
Mathematical reference:
Alexa, Wardetzky 2011 "Discrete Laplacians on General Polygonal
Meshes" (ACM SIGGRAPH 2011) — virtual-node construction,
polygon cotangent weights extending the Pinkall-Polthier formula.
Alexa 2020 "Discrete Laplacians on General Polygonal Meshes"
(ACM TOG 39, 2020) — extended journal treatment, error bounds.
Enables: DCE energy evaluation on quad-dominant / Voronoi /
polygon meshes without forced triangulation.
Replaces euclidean_hessian.hpp for non-triangular inputs.
Status: 🔲 planned (pure research, no Java source)
Effort: medium (~2 weeks core + tests; +1 week Newton integration).
``` ```
--- ---