diff --git a/doc/roadmap/phases.md b/doc/roadmap/phases.md index 2db01de..0f991cd 100644 --- a/doc/roadmap/phases.md +++ b/doc/roadmap/phases.md @@ -129,16 +129,22 @@ mesh type. + holonomy infrastructure. Effort: ~2 weeks for fundamental polygon, +2 weeks for surgery 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 - Java source: ConesUtility.java (~200 lines) +``` +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 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) → extend ConesUtility to HyperIdeal + Spherical modes @@ -153,68 +159,13 @@ mesh type. automatic cone placement; directly applicable to 9d.2 algorithm. Status: 🔲 planned -9d.3 StereographicUnwrapper (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) +9d.3 StereographicUnwrapper + SphereUtility (Java port) → stereographic_layout.hpp Stereographic projection S²→ℂ∪{∞} + Möbius centering for genus-0 surfaces. Converts spherical DCE output to a flat 2-D atlas. 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() Variational Möbius centering via Lorentz geometry: E = Σ log(-⟨x,p⟩/√(-⟨x,x⟩)) @@ -235,6 +186,30 @@ mesh type. - CPEuclideanRotation: rotation-invariant CP functional variant Java references: unwrapper/circlepattern/CirclePattern{Layout,Utility}.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). ``` ---