docs: record 2026-05-28 full-library scan findings in roadmap
Some checks failed
C++ Tests / test-fast (pull_request) Successful in 1m55s
API Docs / doc-build (pull_request) Successful in 53s
Markdown link check / check (pull_request) Successful in 1m1s
C++ Tests / test-cgal (pull_request) Has been skipped
C++ Tests / quality-gates (pull_request) Failing after 2m3s
Some checks failed
C++ Tests / test-fast (pull_request) Successful in 1m55s
API Docs / doc-build (pull_request) Successful in 53s
Markdown link check / check (pull_request) Successful in 1m1s
C++ Tests / test-cgal (pull_request) Has been skipped
C++ Tests / quality-gates (pull_request) Failing after 2m3s
Cross-referenced all 232 Java classes against the roadmap. New plan entries for genuinely-useful, previously-unplanned items: - 9g.1 conformal quality measures (Isothermicity, ConformalEquivalence, FlippedTriangles, LengthCrossRatio + ConvergenceUtility metrics) - 9g.2 optional period-matrix convergence experiment (method only; Java harness depends on Mathematica/JLink + jReality, not ported) - DEC operator layer (heds/dec/) noted as a 10a prerequisite - HomotopyUtility -> 10a (explicit generator cycles; not covered by cut_graph.hpp, which yields only the 2g cut edges) - SurfaceCurveUtility -> 9c; MercatorTextureProjection -> 9d.3 companion Documented as deliberately out-of-scope: SpanningTreeUtility (subsumed by cut_graph.hpp), convergence/* harness, datasource/* (jReality viewer decoration), *Big arbitrary-precision geometry, jReality GUI, and the MTJ/Tao/PETSc solver bindings. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -58,6 +58,7 @@ They are candidates for Phase 9 or Phase 10.
|
|||||||
| `DiscreteHarmonicFormUtility` (657 lines) | Discrete harmonic 1-forms via cotangent Laplacian (Hodge theory) | 10a prerequisite |
|
| `DiscreteHarmonicFormUtility` (657 lines) | Discrete harmonic 1-forms via cotangent Laplacian (Hodge theory) | 10a prerequisite |
|
||||||
| `DiscreteHolomorphicFormUtility` (285 lines) | Holomorphic differentials via Mercat complex structure | 10a (Bobenko-Springborn 2004 §6) |
|
| `DiscreteHolomorphicFormUtility` (285 lines) | Holomorphic differentials via Mercat complex structure | 10a (Bobenko-Springborn 2004 §6) |
|
||||||
| `CanonicalBasisUtility` (337 lines) | Symplectic homology basis with intersection-form normalisation | 10a prerequisite |
|
| `CanonicalBasisUtility` (337 lines) | Symplectic homology basis with intersection-form normalisation | 10a prerequisite |
|
||||||
|
| `HomotopyUtility` (57 lines) | Reconstructs explicit generator cycles (bridge + tree path) — NOT covered by `cut_graph.hpp` (which gives only the 2g cut edges). Verified 2026-05-28. | 10a |
|
||||||
| `DiscreteRiemannUtility` (186 lines) | Period matrix τ, Siegel reduction (genus g) | 10b |
|
| `DiscreteRiemannUtility` (186 lines) | Period matrix τ, Siegel reduction (genus g) | 10b |
|
||||||
| `DualityUtility` (308 lines), `HomologyUtility` (122 lines) | Primal/dual cohomology, cycle generators | 10a support |
|
| `DualityUtility` (308 lines), `HomologyUtility` (122 lines) | Primal/dual cohomology, cycle generators | 10a support |
|
||||||
| `HyperbolicCyclicFunctional` (530 lines) | Discrete hyperbolic conformal energy (analogue of Euclidean) — completes the geometry suite | 10b–c |
|
| `HyperbolicCyclicFunctional` (530 lines) | Discrete hyperbolic conformal energy (analogue of Euclidean) — completes the geometry suite | 10b–c |
|
||||||
@@ -66,10 +67,30 @@ They are candidates for Phase 9 or Phase 10.
|
|||||||
| `StereographicUnwrapper` (266 lines) | Stereographic projection S²→ℂ + Möbius centring — converts the Spherical-DCE output into a 2-D atlas | 10b' (Sphere visualisation) |
|
| `StereographicUnwrapper` (266 lines) | Stereographic projection S²→ℂ + Möbius centring — converts the Spherical-DCE output into a 2-D atlas | 10b' (Sphere visualisation) |
|
||||||
| `CircleDomainUnwrapper` (570 lines) | Conformal map of a multiply-connected planar region onto a disk-with-holes — classical complex-analysis use case | 11+ (new use-case class) |
|
| `CircleDomainUnwrapper` (570 lines) | Conformal map of a multiply-connected planar region onto a disk-with-holes — classical complex-analysis use case | 11+ (new use-case class) |
|
||||||
| `ElectrostaticSphereFunctional`, `MobiusCenteringFunctional` | Sphere-domain pre-processing functionals | 10c (optional) |
|
| `ElectrostaticSphereFunctional`, `MobiusCenteringFunctional` | Sphere-domain pre-processing functionals | 10c (optional) |
|
||||||
|
| `IsothermicityMeasure` (113), `DiscreteConformalEquivalencemMeasure` (82), `FlippedTriangles` (17), `LengthCrossRatio` (12) | Quantitative conformal-quality / embedding-validity measures (math is GUI-independent) | **9g** (added 2026-05-28) |
|
||||||
|
| `DEC`, `AbstractDECOperator`, `DECPairing`, `DualChain`, `DualForm` (`heds/dec/`) | Discrete-exterior-calculus operator layer (d / ⋆ / pairing) — foundation the Phase-10a form utilities sit on | **10a prerequisite** (added 2026-05-28) |
|
||||||
|
| `SurfaceCurveUtility` (360) | Curve operations on the surface (cut-path tracing) — supports 9c polygon construction | **9c** (added 2026-05-28) |
|
||||||
|
|
||||||
Note: items marked as *new research* (e.g. Inversive Distance, HyperIdeal Hessian variants)
|
Note: items marked as *new research* (e.g. Inversive Distance, HyperIdeal Hessian variants)
|
||||||
are tracked separately in `doc/roadmap/research-track.md`.
|
are tracked separately in `doc/roadmap/research-track.md`.
|
||||||
|
|
||||||
|
### 2026-05-28 scan — valuable items that had been in *no* phase
|
||||||
|
|
||||||
|
A class-by-class cross-reference of all 232 Java production classes against the
|
||||||
|
roadmap found that the "big math" (Schottky 11a, Koebe 10c′/10f, quasi-isothermic
|
||||||
|
10e, circle-pattern layout 9e) is all already planned. Three genuinely useful
|
||||||
|
items were unrecorded and have now been added above:
|
||||||
|
1. **Conformal-quality measures** → new **Phase 9g** (small, no dependencies; raises
|
||||||
|
validation coverage for the already-shipped pipeline).
|
||||||
|
2. **DEC operator layer** (`heds/dec/`) → noted as a **Phase 10a prerequisite** (the
|
||||||
|
form utilities assume these primitives exist).
|
||||||
|
3. **`SurfaceCurveUtility`** → folded into the **Phase 9c** source list.
|
||||||
|
|
||||||
|
Everything else unmentioned is intentionally out of scope: the `plugin/*` jReality
|
||||||
|
Swing GUI, the `MTJ*`/`Tao*`/`*PETSc` solver bindings (replaced by Eigen), the
|
||||||
|
convergence/`*Series` test harness, and the `*Big` arbitrary-precision geometry
|
||||||
|
(`P2Big`/`PnBig`/`RnBig` — deliberately dropped in favour of `Simple_cartesian<double>`).
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Java packages not yet in the roadmap — 2026 full-library scan
|
## Java packages not yet in the roadmap — 2026 full-library scan
|
||||||
@@ -154,6 +175,9 @@ Entirely absent from the current roadmap.
|
|||||||
| `EuclideanUnwrapperPETSc` / `SphericalNormalizerPETSc` | PETSc solver binding — replaced by Eigen |
|
| `EuclideanUnwrapperPETSc` / `SphericalNormalizerPETSc` | PETSc solver binding — replaced by Eigen |
|
||||||
| `Search` | CoHDS-specific graph search — replaced by CGAL halfedge iteration |
|
| `Search` | CoHDS-specific graph search — replaced by CGAL halfedge iteration |
|
||||||
| `SparseUtility` | Colt sparse matrix utils — replaced by Eigen |
|
| `SparseUtility` | Colt sparse matrix utils — replaced by Eigen |
|
||||||
|
| `SpanningTreeUtility` | Primal + dual spanning tree — already implemented inline in `cut_graph.hpp` (tree-cotree Steps 1+2). Verified 2026-05-28. |
|
||||||
|
| `convergence/*` harness (CLI driver, ~1400 lines) | The driver depends on Mathematica (JLink) + jReality OBJ reader + LoopLinear. Do not port the harness — only its math: quality measures → 9g.1, study method → 9g.2 (optional). Verified 2026-05-28. |
|
||||||
|
| `datasource/*` (`ConicalEdgesDataSource`, `CylinderEdgesDataSource`) | jReality SceneGraph viewer decoration (draws cone/cylinder edge arcs) — NOT example geometry; nothing to harvest. Verified 2026-05-28. |
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|||||||
@@ -124,6 +124,10 @@ mesh type.
|
|||||||
Java sources: FundamentalPolygonUtility.java (698 lines)
|
Java sources: FundamentalPolygonUtility.java (698 lines)
|
||||||
+ CanonicalFormUtility.java (532 lines)
|
+ CanonicalFormUtility.java (532 lines)
|
||||||
+ CuttingUtility / SurgeryUtility (~800 lines)
|
+ CuttingUtility / SurgeryUtility (~800 lines)
|
||||||
|
+ SurfaceCurveUtility.java (360 lines, 2026-05-28
|
||||||
|
scan) — curve operations on the surface (cut-path
|
||||||
|
tracing / fundamental-domain boundary); supporting
|
||||||
|
infrastructure for the polygon construction.
|
||||||
Mathematical source: Poincaré 1882 + Sechelmann 2016 §5
|
Mathematical source: Poincaré 1882 + Sechelmann 2016 §5
|
||||||
Research component: bridging to conformallab++ cut_graph.hpp
|
Research component: bridging to conformallab++ cut_graph.hpp
|
||||||
+ holonomy infrastructure.
|
+ holonomy infrastructure.
|
||||||
@@ -164,6 +168,15 @@ mesh type.
|
|||||||
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)
|
||||||
|
Note (2026-05-28 visualisation scan): plugin/algorithm/
|
||||||
|
StereographicTextureProjection.java (88 lines) is the texture
|
||||||
|
front-end of this same math — no separate item. The supporting
|
||||||
|
math/CP1 + ComplexUtility.stereographic are deliberately NOT
|
||||||
|
ported (redundant with std::complex + the existing MobiusMap,
|
||||||
|
see porting-status.md).
|
||||||
|
Optional companion: MercatorTextureProjection.java (47 lines) —
|
||||||
|
a distinct cylindrical conformal display projection; small
|
||||||
|
nice-to-have for the sphere-visualisation bucket, not required.
|
||||||
|
|
||||||
9d.4 MobiusCenteringFunctional (Java port, optional upgrade)
|
9d.4 MobiusCenteringFunctional (Java port, optional upgrade)
|
||||||
→ integrate into layout.hpp normalise_hyperbolic()
|
→ integrate into layout.hpp normalise_hyperbolic()
|
||||||
@@ -210,6 +223,59 @@ mesh type.
|
|||||||
Replaces euclidean_hessian.hpp for non-triangular inputs.
|
Replaces euclidean_hessian.hpp for non-triangular inputs.
|
||||||
Status: 🔲 planned (pure research, no Java source)
|
Status: 🔲 planned (pure research, no Java source)
|
||||||
Effort: medium (~2 weeks core + tests; +1 week Newton integration).
|
Effort: medium (~2 weeks core + tests; +1 week Newton integration).
|
||||||
|
|
||||||
|
9g — Conformal quality measures (Java port — 2026-05-28 scan)
|
||||||
|
──────────────────────────────────────────────────────────────────
|
||||||
|
|
||||||
|
9g.1 Quantitative correctness metrics for a computed conformal map
|
||||||
|
→ conformal_quality.hpp
|
||||||
|
Lifts the measure math out of the jReality plugin + convergence
|
||||||
|
layers (the math is GUI-independent). High value / low effort:
|
||||||
|
these directly strengthen the validation story for the already-
|
||||||
|
shipped genus-0/1 pipeline (doc/math/validation.md).
|
||||||
|
- IsothermicityMeasure (113 lines) — pointwise deviation
|
||||||
|
from conformality (anisotropy of the induced metric).
|
||||||
|
- DiscreteConformalEquivalencemMeasure (82 lines) — per-edge
|
||||||
|
length-cross-ratio residual vs. the conformal-equivalence
|
||||||
|
condition.
|
||||||
|
- FlippedTriangles (17 lines) — detects inverted /
|
||||||
|
degenerate triangles in a 2-D layout (embedding-validity check).
|
||||||
|
- LengthCrossRatio (12 lines) — the discrete conformal
|
||||||
|
invariant itself (per-edge), shared input for the two measures.
|
||||||
|
- ConvergenceUtility measures (~110 lines, math/float only — no
|
||||||
|
Mathematica/jReality deps): getMaxMeanSumCrossRatio
|
||||||
|
(q=(a·c)/(b·d), qfun=(q+1/q)/2−1), getMaxMeanSumMultiRatio
|
||||||
|
(per-face product, =1 iff conformal), and
|
||||||
|
getMaxMeanSumScaleInvariantCircumRadius (R/√A, scale-invariant
|
||||||
|
mesh-quality). The operational counterpart of LengthCrossRatio.
|
||||||
|
Java references:
|
||||||
|
plugin/visualizer/IsothermicityMeasure.java
|
||||||
|
plugin/visualizer/DiscreteConformalEquivalencemMeasure.java
|
||||||
|
plugin/visualizer/FlippedTriangles.java
|
||||||
|
heds/adapter/types/LengthCrossRatio.java
|
||||||
|
convergence/ConvergenceUtility.java
|
||||||
|
Mathematical reference: Springborn-Schröder-Pinkall 2008
|
||||||
|
(length cross-ratio = discrete conformal invariant).
|
||||||
|
Status: 🔲 planned (Java port; no new theory).
|
||||||
|
Effort: small (~3 days incl. gradient-free tests). No
|
||||||
|
dependencies — can land before 9a–9f.
|
||||||
|
|
||||||
|
9g.2 Period-matrix convergence study (validation experiment — optional)
|
||||||
|
→ tests/cgal/test_period_matrix_convergence.cpp (experiment, not
|
||||||
|
a library feature)
|
||||||
|
Empirical validation for the already-shipped period_matrix.hpp +
|
||||||
|
discrete_elliptic_utility.hpp: generate a genus-1 elliptic mesh
|
||||||
|
with a known analytic τ, then refine / subdivide / add Gaussian
|
||||||
|
vertex noise and plot |τ_computed − τ_expected| → 0.
|
||||||
|
Java reference: convergence/* (~1400 lines) — a CLI harness
|
||||||
|
(joptsimple) that drives the same study. Do NOT port the
|
||||||
|
harness: it depends on Mathematica via JLink and on jReality's
|
||||||
|
OBJ reader + LoopLinear subdivision. Port only the *method*:
|
||||||
|
- subdivision → igl::loop (libigl already available)
|
||||||
|
- noise → trivial (vᵢ += σ·N(0,1))
|
||||||
|
- error metric → the 9g.1 quality measures + τ residual
|
||||||
|
Status: 🔲 optional (raises empirical confidence in genus-1 τ;
|
||||||
|
no new library surface). Effort: small (~2–3 days).
|
||||||
```
|
```
|
||||||
|
|
||||||
---
|
---
|
||||||
@@ -332,10 +398,21 @@ Phase 10 Global uniformization for genus g ≥ 2
|
|||||||
Java sources (partial, port-with-research):
|
Java sources (partial, port-with-research):
|
||||||
CanonicalBasisUtility.java 337 lines (homology basis)
|
CanonicalBasisUtility.java 337 lines (homology basis)
|
||||||
HomologyUtility.java 122 lines
|
HomologyUtility.java 122 lines
|
||||||
|
HomotopyUtility.java 57 lines (2026-05-28 scan) —
|
||||||
|
reconstructs the explicit generator *cycles* (bridge edge +
|
||||||
|
tree path via HomologyUtility.findCycle). NOT covered by
|
||||||
|
cut_graph.hpp, which yields only the 2g cut *edges*; the closed
|
||||||
|
loops are needed to integrate 1-forms along b-cycles.
|
||||||
DualityUtility.java 308 lines
|
DualityUtility.java 308 lines
|
||||||
DiscreteHarmonicFormUtility.java 657 lines
|
DiscreteHarmonicFormUtility.java 657 lines
|
||||||
DiscreteHolomorphicFormUtility.java 285 lines
|
DiscreteHolomorphicFormUtility.java 285 lines
|
||||||
Effort: ~6 weeks net (4 utility ports + 1 integration).
|
Prerequisite — DEC operator layer (2026-05-28 scan, previously
|
||||||
|
unrecorded): the four utilities above are built on the discrete-
|
||||||
|
exterior-calculus primitives in heds/dec/ (DEC.java 76 lines,
|
||||||
|
AbstractDECOperator, DECPairing, DualChain, DualForm — the d / ⋆ /
|
||||||
|
primal-dual pairing operators). Port this thin operator layer
|
||||||
|
first; the form utilities assume it exists. Effort: ~3 days.
|
||||||
|
Effort: ~6 weeks net (1 DEC layer + 4 utility ports + 1 integration).
|
||||||
|
|
||||||
10b Siegel period matrix Ω ∈ H_g (g×g complex symmetric, Im(Ω) > 0)
|
10b Siegel period matrix Ω ∈ H_g (g×g complex symmetric, Im(Ω) > 0)
|
||||||
→ Ωᵢⱼ = ∫_{bⱼ} ωᵢ
|
→ Ωᵢⱼ = ∫_{bⱼ} ωᵢ
|
||||||
|
|||||||
Reference in New Issue
Block a user