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

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:
Tarik Moussa
2026-05-28 06:53:09 +02:00
parent 0048d71f11
commit 1ff5382c8b
2 changed files with 102 additions and 1 deletions

View File

@@ -124,6 +124,10 @@ mesh type.
Java sources: FundamentalPolygonUtility.java (698 lines)
+ CanonicalFormUtility.java (532 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
Research component: bridging to conformallab++ cut_graph.hpp
+ holonomy infrastructure.
@@ -164,6 +168,15 @@ mesh type.
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)
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)
→ integrate into layout.hpp normalise_hyperbolic()
@@ -210,6 +223,59 @@ mesh type.
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).
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)/21), 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 9a9f.
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 (~23 days).
```
---
@@ -332,10 +398,21 @@ Phase 10 Global uniformization for genus g ≥ 2
Java sources (partial, port-with-research):
CanonicalBasisUtility.java 337 lines (homology basis)
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
DiscreteHarmonicFormUtility.java 657 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)
→ Ωᵢⱼ = ∫_{bⱼ} ωᵢ