.gitignore: build-Verzeichnisse, .DS_Store, .claude/, CMake-Artefakte Doc-Dateien die beim Restructure-Commit fehlten: doc/api/headers.md — alle 24 Public-Header mit Beschreibung doc/api/tests.md — 26 Suiten, 158 Tests, Einzelzahlen doc/architecture/design-decisions.md — Architekturentscheidungen + Begründung doc/architecture/project-structure.md — Verzeichnisbaum + Build-Targets README.md: Links zu den vier neuen Doc-Dateien ergänzt Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
4.0 KiB
4.0 KiB
Public Headers (code/include/)
All algorithms are header-only. Include the headers you need directly — there is no compiled library to link against (only GTest for tests and CGAL/Eigen for the CGAL-dependent headers).
Core mesh type
| Header | Description |
|---|---|
conformal_mesh.hpp |
ConformalMesh = CGAL::Surface_mesh<Point3>. Property-map naming convention. Index type aliases. GeometryType enum. |
constants.hpp |
conformallab::PI, TWO_PI |
mesh_builder.hpp |
make_triangle() / make_tetrahedron() / make_quad_strip() / make_fan() / make_open_cylinder() — test mesh factories |
mesh_io.hpp |
load_mesh() / save_mesh() via CGAL::IO (OFF / OBJ / PLY) |
mesh_utils.hpp |
cgal_to_eigen() — convert ConformalMesh vertex positions to Eigen::MatrixXd |
Special functions
| Header | Description |
|---|---|
clausen.hpp |
clausen_cl2(θ) (Clausen Cl₂), lobachevsky(θ) (Л), im_li2(θ) (ImLi₂ = imaginary part of dilogarithm) |
HyperIdeal geometry (H²)
| Header | Description |
|---|---|
hyper_ideal_geometry.hpp |
ζ₁₃, ζ₁₄, ζ₁₅ (Springborn 2020), l_from_zeta(), alpha_ij(), beta_i(), sigma_i(), sigma_ij() |
hyper_ideal_utility.hpp |
Tetrahedron volumes (Meyerhoff formula, Kolpakov–Mednykh) |
hyper_ideal_visualization_utility.hpp |
Poincaré disk projection, circumcircle helpers, Lorentz boost |
hyper_ideal_functional.hpp |
HyperIdealMaps, setup_hyper_ideal_maps(), compute_hyper_ideal_lambda0_from_mesh(), assign_all_dof_indices(), hyper_ideal_gradient(), hyper_ideal_energy() |
hyper_ideal_hessian.hpp |
hyper_ideal_hessian() — symmetric FD Hessian (Phase 9b: analytic) |
Spherical geometry (S²)
| Header | Description |
|---|---|
spherical_geometry.hpp |
Spherical arc-length, half-angle formula, spherical law of cosines |
spherical_functional.hpp |
SphericalMaps, setup_spherical_maps(), compute_spherical_lambda0_from_mesh(), spherical_gradient(), spherical_energy() |
spherical_hessian.hpp |
spherical_hessian() — analytic Hessian via ∂α/∂u from law of cosines |
Euclidean geometry (ℝ²)
| Header | Description |
|---|---|
euclidean_geometry.hpp |
Euclidean corner angle (t-value / atan2), edge lengths from DOF vector |
euclidean_functional.hpp |
EuclideanMaps, setup_euclidean_maps(), compute_euclidean_lambda0_from_mesh(), euclidean_gradient(), euclidean_energy() |
euclidean_hessian.hpp |
euclidean_hessian() — cotangent Laplacian (Pinkall–Polthier 1993) |
Solver
| Header | Description |
|---|---|
newton_solver.hpp |
newton_euclidean(), newton_spherical(), newton_hyper_ideal(), solve_linear_system() (SimplicialLDLT + SparseQR fallback), NewtonResult struct |
Preprocessing
| Header | Description |
|---|---|
gauss_bonnet.hpp |
euler_characteristic(), genus(), gauss_bonnet_sum(), gauss_bonnet_rhs(), gauss_bonnet_deficit(), check_gauss_bonnet(), enforce_gauss_bonnet() |
Layout and holonomy
| Header | Description |
|---|---|
cut_graph.hpp |
CutGraph struct, compute_cut_graph() — tree-cotree algorithm (Erickson–Whittlesey 2005), produces 2g seam edges |
layout.hpp |
euclidean_layout(), spherical_layout(), hyper_ideal_layout(), normalise_{euclidean,hyperbolic,spherical}(). Structs: Layout2D, Layout3D, HolonomyData. MobiusMap (T(z)=(az+b)/(cz+d), from_three, compose, inverse, apply). Priority-BFS, halfedge_uv. |
Post-processing
| Header | Description |
|---|---|
period_matrix.hpp |
PeriodData, compute_period_matrix(), reduce_to_fundamental_domain(), is_in_fundamental_domain() — period ratio τ = ω₂/ω₁ ∈ ℍ, SL(2,ℤ) reduction |
fundamental_domain.hpp |
FundamentalDomain, compute_fundamental_domain() (genus 1: CCW parallelogram; genus > 1: empty, TODO Phase 9c), tiling_copy(), tiling_neighbourhood() |
serialization.hpp |
save_result_json(), load_result_json(), save_result_xml(), load_result_xml(), save_layout_off() |