arXiv:math/0603097 is Springborn 2008 ("A variational principle for weighted
Delaunay triangulations and hyperideal polyhedra"), not a Kolpakov-Mednykh paper.
The author pair Kolpakov & Mednykh has no joint publication from 2006; their
earliest collaboration is arXiv:1008.0312 (2010, on torus knots, unrelated).
The wrong author name was introduced during the Java→C++ port — the Java source
correctly links to math/0603097 without naming the authors; whoever ported it
invented "Kolpakov-Mednykh". The S1 citation audit (2026-05-31) then cemented
the error by adding the incorrect row to references.md.
Files corrected (7):
- code/include/hyper_ideal_utility.hpp
- code/include/hyper_ideal_functional.hpp
- code/tests/cgal/test_hyper_ideal_functional.cpp
- doc/math/references.md
- doc/roadmap/research-track.md
- doc/architecture/project-structure.md
- doc/api/tests.md
Also:
- doc/reviewer/math-derivation-citation-audit-2026-05-31.md: M1 post-correction noted
- doc/reviewer/finding-orchestration.md: lesson-learned section added (AI citation
audits can introduce plausible-but-wrong attributions; human expert review required
before CGAL submission)
- papers/MANUAL-DOWNLOAD.md: overview of papers requiring manual download (paywalled
journals, TU Berlin theses, books)
- .gitignore: papers/*.pdf excluded (downloaded arXiv PDFs, not tracked)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
116 lines
6.8 KiB
Markdown
116 lines
6.8 KiB
Markdown
# Project Structure
|
||
|
||
```
|
||
ConformalLabpp/
|
||
├── CLAUDE.md # Claude Code context file
|
||
├── README.md # Entry point — what/why, quick start, doc index
|
||
├── LICENSE # MIT
|
||
│
|
||
├── code/ # All C++ source
|
||
│ ├── CMakeLists.txt # Root: three build modes (default / CGAL_TESTS / CGAL)
|
||
│ │
|
||
│ ├── include/ # Header-only library — all algorithms here
|
||
│ │ ├── conformal_mesh.hpp # ConformalMesh = CGAL::Surface_mesh<Point3>
|
||
│ │ ├── constants.hpp # conformallab::PI, TWO_PI
|
||
│ │ ├── clausen.hpp # Cl₂, Lobachevsky Л, ImLi₂
|
||
│ │ ├── hyper_ideal_geometry.hpp # ζ₁₃/₁₄/₁₅, lᵢⱼ, αᵢⱼ, σᵢ, σᵢⱼ
|
||
│ │ ├── hyper_ideal_utility.hpp # Tetrahedron volumes (Meyerhoff / Springborn 2008)
|
||
│ │ ├── hyper_ideal_visualization_utility.hpp # Poincaré disk projection, circumcircle helpers
|
||
│ │ ├── hyper_ideal_functional.hpp # HyperIdeal energy + gradient on ConformalMesh
|
||
│ │ ├── hyper_ideal_hessian.hpp # HyperIdeal Hessian (symmetric FD, Phase 9b: analytic)
|
||
│ │ ├── spherical_geometry.hpp # Spherical arc-length, half-angle formula
|
||
│ │ ├── spherical_functional.hpp # Spherical energy + gradient + gauge-fix
|
||
│ │ ├── spherical_hessian.hpp # Spherical Hessian (∂α/∂u via law of cosines)
|
||
│ │ ├── euclidean_geometry.hpp # Euclidean corner angle (t-value / atan2)
|
||
│ │ ├── euclidean_functional.hpp # Euclidean energy + gradient
|
||
│ │ ├── euclidean_hessian.hpp # Cotangent Laplacian Hessian (Pinkall–Polthier)
|
||
│ │ ├── newton_solver.hpp # newton_{euclidean,spherical,hyper_ideal} + solve_linear_system
|
||
│ │ ├── gauss_bonnet.hpp # euler_characteristic, genus, check/enforce_gauss_bonnet
|
||
│ │ ├── cut_graph.hpp # CutGraph + compute_cut_graph (tree-cotree)
|
||
│ │ ├── layout.hpp # Priority-BFS layout, MobiusMap, halfedge_uv, HolonomyData
|
||
│ │ ├── mesh_builder.hpp # make_triangle / make_tetrahedron / make_quad_strip / make_fan
|
||
│ │ ├── mesh_io.hpp # load_mesh / save_mesh (OFF/OBJ/PLY via CGAL::IO)
|
||
│ │ ├── mesh_utils.hpp # CGAL → Eigen conversion (cgal_to_eigen)
|
||
│ │ ├── serialization.hpp # save/load_result_json + save/load_result_xml
|
||
│ │ ├── period_matrix.hpp # PeriodData, compute_period_matrix, SL(2,ℤ) reduction
|
||
│ │ └── fundamental_domain.hpp # FundamentalDomain, tiling_copy, tiling_neighbourhood
|
||
│ │
|
||
│ ├── src/
|
||
│ │ ├── apps/v0/conformallab_cli.cpp # CLI app (Phase 5): load → solve → layout → export
|
||
│ │ └── viewer/simple_viewer.cpp # libigl/GLFW viewer wrapper
|
||
│ │
|
||
│ ├── examples/ # Standalone example programs (require WITH_CGAL=ON)
|
||
│ │ ├── example_euclidean.cpp # Euclidean pipeline end-to-end
|
||
│ │ ├── example_hyper_ideal.cpp # HyperIdeal pipeline end-to-end
|
||
│ │ ├── example_layout.cpp # Full pipeline: solve → layout → OFF/JSON/XML + round-trip
|
||
│ │ └── example_viewer.cpp # Interactive libigl viewer
|
||
│ │
|
||
│ ├── tests/
|
||
│ │ ├── CMakeLists.txt
|
||
│ │ ├── test_clausen.cpp
|
||
│ │ ├── test_hyper_ideal_utility.cpp
|
||
│ │ ├── test_matrix_utility.cpp
|
||
│ │ ├── test_surface_curve_utility.cpp
|
||
│ │ ├── test_discrete_elliptic_utility.cpp
|
||
│ │ ├── test_p2_utility.cpp
|
||
│ │ ├── test_hyper_ideal_visualization_utility.cpp
|
||
│ │ └── cgal/ # CGAL test suite (WITH_CGAL_TESTS or WITH_CGAL)
|
||
│ │ ├── test_conformal_mesh.cpp
|
||
│ │ ├── test_hyper_ideal_functional.cpp
|
||
│ │ ├── test_spherical_functional.cpp
|
||
│ │ ├── test_euclidean_functional.cpp
|
||
│ │ ├── test_euclidean_hessian.cpp
|
||
│ │ ├── test_spherical_hessian.cpp
|
||
│ │ ├── test_newton_solver.cpp
|
||
│ │ ├── test_mesh_io.cpp
|
||
│ │ ├── test_pipeline.cpp
|
||
│ │ ├── test_layout.cpp
|
||
│ │ ├── test_phase6.cpp
|
||
│ │ ├── test_phase7.cpp
|
||
│ │ └── test_geometry_utils.cpp
|
||
│ │
|
||
│ └── deps/ # All dependencies as bundled tarballs
|
||
│ ├── tarballs/
|
||
│ │ ├── eigen-3.4.0.tar.gz
|
||
│ │ ├── CGAL-6.1.1.tar.xz
|
||
│ │ ├── libigl-2.6.0.tar.gz
|
||
│ │ ├── libigl-glad.tar.gz
|
||
│ │ └── glfw-3.4.tar.gz
|
||
│ └── single_includes/ # CLI11.hpp, json.hpp (header-only)
|
||
│
|
||
├── doc/
|
||
│ ├── getting-started.md
|
||
│ ├── contributing.md
|
||
│ ├── api/
|
||
│ │ ├── pipeline.md # Full pipeline API with code examples
|
||
│ │ ├── extending.md # New functionals, geometry modes, Java porting
|
||
│ │ ├── contracts.md # Processing unit preconditions/provides table
|
||
│ │ └── cgal-package.md # Phase 8 CGAL package design (TODO)
|
||
│ ├── architecture/
|
||
│ │ ├── overall_pipeline.md # Mermaid diagram + stage descriptions
|
||
│ │ ├── design-decisions.md # Key architectural choices + rationale
|
||
│ │ └── project-structure.md # This file
|
||
│ ├── math/
|
||
│ │ ├── geometry-modes.md # Euclidean / Spherical / HyperIdeal comparison
|
||
│ │ └── references.md # All papers by module
|
||
│ └── roadmap/
|
||
│ ├── phases.md # Phases 1–10 with porting/research boundary
|
||
│ └── java-parity.md # Java vs C++ feature parity table
|
||
│
|
||
└── .gitea/
|
||
├── docker/Dockerfile.ci-cpp # Ubuntu 22.04 ARM64 CI image
|
||
└── workflows/cpp-tests.yml # Two-job CI pipeline
|
||
```
|
||
|
||
## Build targets
|
||
|
||
| Target | Mode | Description |
|
||
|---|---|---|
|
||
| `conformallab_tests` | default | 36 non-CGAL pure-math tests |
|
||
| `conformallab_cgal_tests` | `WITH_CGAL_TESTS` or `WITH_CGAL` | 158 CGAL tests |
|
||
| `conformallab_core` | `WITH_CGAL` | CLI application |
|
||
| `example_euclidean` | `WITH_CGAL` | Euclidean example program |
|
||
| `example_hyper_ideal` | `WITH_CGAL` | HyperIdeal example program |
|
||
| `example_layout` | `WITH_CGAL` | Full pipeline example |
|
||
| `example_viewer` | `WITH_CGAL` | Interactive viewer |
|