docs(references): M1/M2/M4 citation fixes (audit quick-wins)
M1: Add two missing references used in hyper_ideal_utility: - Kolpakov, Mednykh (2006, arXiv math/0603097) — tetrahedron volume w/ one ideal vertex - Meyerhoff, Ushijima (2006) — tetrahedron volume w/ three ideal vertices M2: Clarify BPS publication year: Geometry & Topology 2015 (arXiv 2010) - Update references.md to note "first posted 2010" - Normalize all code comments from "BPS-2010" → "BPS-2015" (published version) M4: Standardize citation format in code comments - Normalize all "Luo (2004)" / "Luo-2004" / "Luo's 2004" → "Luo 2004" - Matches references.md convention: Author Year (no parens/dashes) 282/282 tests pass. Addresses M1, M2, M4 from math-derivation-citation audit. Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -8,7 +8,7 @@
|
||||
\ingroup PkgConformalMapRef
|
||||
|
||||
User-facing entry for the **face-based** circle-packing functional of
|
||||
Bobenko-Pinkall-Springborn 2010. See `cp_euclidean_functional.hpp`
|
||||
Bobenko-Pinkall-Springborn 2015. See `cp_euclidean_functional.hpp`
|
||||
for the underlying algorithm and `doc/architecture/phase-9a-validation.md`
|
||||
for the line-by-line mapping to the Java original
|
||||
`CPEuclideanFunctional.java`.
|
||||
@@ -44,7 +44,7 @@ namespace CGAL {
|
||||
\ingroup PkgConformalMapConcepts
|
||||
\brief Traits class for `discrete_circle_packing_euclidean()` —
|
||||
declares the kernel, mesh and property-map types used by the
|
||||
BPS-2010 face-based circle-packing functional.
|
||||
BPS-2015 face-based circle-packing functional.
|
||||
|
||||
Primary template; specialise it for non-`Surface_mesh` triangle meshes.
|
||||
*/
|
||||
@@ -115,7 +115,7 @@ struct Circle_packing_result
|
||||
/*!
|
||||
\ingroup PkgConformalMapRef
|
||||
|
||||
Compute the BPS-2010 face-based circle-packing of `mesh`.
|
||||
Compute the BPS-2015 face-based circle-packing of `mesh`.
|
||||
|
||||
\tparam TriangleMesh A `CGAL::Surface_mesh<P>`.
|
||||
\tparam NamedParameters Optional CGAL named-parameter pack.
|
||||
@@ -132,7 +132,7 @@ Compute the BPS-2010 face-based circle-packing of `mesh`.
|
||||
\returns A `Circle_packing_result<FT>` with `ρ_f` per face.
|
||||
|
||||
\pre `mesh` is a triangle mesh.
|
||||
\pre `φ_f` and `θ_e` satisfy the BPS-2010 admissibility conditions
|
||||
\pre `φ_f` and `θ_e` satisfy the BPS-2015 admissibility conditions
|
||||
(Σ_f φ_f = 2π·χ + Σ_e (π − θ_e), see paper §6).
|
||||
*/
|
||||
template <typename TriangleMesh,
|
||||
@@ -201,7 +201,7 @@ auto discrete_circle_packing_euclidean(
|
||||
//
|
||||
// For Phase 8b-Lite we deliberately don't fake it. If the caller
|
||||
// supplies `output_uv_map(pmap)` we throw `std::runtime_error` with a
|
||||
// clear pointer to Phase 9c (BPS-2010 §6 face-based circle-packing
|
||||
// clear pointer to Phase 9c (BPS-2015 §6 face-based circle-packing
|
||||
// layout, ~150 lines, on the porting roadmap). Failing loudly is
|
||||
// better than silently writing zeros.
|
||||
//
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
\ingroup PkgConformalMapRef
|
||||
|
||||
User-facing entry for the **vertex-based** inversive-distance circle-
|
||||
packing functional of Luo (2004), with the Bowers-Stephenson (2004)
|
||||
packing functional of Luo 2004, with the Bowers-Stephenson (2004)
|
||||
initialisation. See `inversive_distance_functional.hpp` for the
|
||||
underlying algorithm and `doc/roadmap/research-track.md` (item 9a.2)
|
||||
for the research-track classification — this functional has **no Java
|
||||
@@ -98,7 +98,7 @@ struct Default_inversive_distance_traits<CGAL::Surface_mesh<typename K::Point_3>
|
||||
/*!
|
||||
\ingroup PkgConformalMapRef
|
||||
|
||||
Compute the Luo-2004 vertex-based inversive-distance circle packing of `mesh`.
|
||||
Compute the Luo 2004 vertex-based inversive-distance circle packing of `mesh`.
|
||||
|
||||
The per-edge constant `I_ij` is computed once at the start from the input
|
||||
3-D geometry via the Bowers-Stephenson identity
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
// │ The variable is ρ_f = log R_f. │
|
||||
// │ Adjacent face-circles intersect at a prescribed angle θ_e per edge. │
|
||||
// │ │
|
||||
// │ This is the FACE-DUAL of the classical vertex-based Luo (2004) │
|
||||
// │ This is the FACE-DUAL of the classical vertex-based Luo 2004 │
|
||||
// │ inversive-distance circle packing implemented in │
|
||||
// │ inversive_distance_functional.hpp (Phase 9a.2). The relation │
|
||||
// │ I_ij = cos θ_e │
|
||||
@@ -33,7 +33,7 @@
|
||||
// │ θ_e per edge intersection angle of the two face-circles │
|
||||
// │ φ_f per face target sum of corner-angles inside the face │
|
||||
// │ │
|
||||
// │ Energy (BPS-2010 §6) │
|
||||
// │ Energy (BPS-2015 §6) │
|
||||
// │ E(ρ) = Σ_f φ_f · ρ_f │
|
||||
// │ + Σ_{(h,f=face(h)): │
|
||||
// │ [ if opposite face exists ] │
|
||||
@@ -52,7 +52,7 @@
|
||||
// │ Per interior hf: −(p + θ*) added to G[face(h)] │
|
||||
// │ Per boundary hf: −2 θ* added to G[face(h)] │
|
||||
// │ │
|
||||
// │ Hessian (analytic, BPS-2010 eq. 6.8; Java getHessian lines 127-166) │
|
||||
// │ Hessian (analytic, BPS-2015 eq. 6.8; Java getHessian lines 127-166) │
|
||||
// │ Per interior undirected edge e (connecting faces j and k): │
|
||||
// │ h_jk = sin θ / (cosh Δρ − cos θ) │
|
||||
// │ H[j,j] += h_jk, H[k,k] += h_jk, H[j,k] −= h_jk, H[k,j] −= h_jk │
|
||||
@@ -90,7 +90,7 @@ using CPEMapD = ConformalMesh::Property_map<Edge_index, double>;
|
||||
// ── Persistent map bundle ─────────────────────────────────────────────────────
|
||||
|
||||
/// Bundle of the three property maps consumed by the CP-Euclidean
|
||||
/// (Bobenko-Pinkall-Springborn 2010) circle-packing functional.
|
||||
/// (Bobenko-Pinkall-Springborn 2015) circle-packing functional.
|
||||
struct CPEuclideanMaps {
|
||||
CPFMapI f_idx; ///< DOF index per face (−1 = pinned)
|
||||
CPEMapD theta_e; ///< intersection angle per edge (default π/2 = orthogonal)
|
||||
|
||||
@@ -465,7 +465,7 @@ inline NewtonResult newton_hyper_ideal(
|
||||
/// Solve the CP-Euclidean circle-packing problem: find ρ ∈ ℝ^F such that the
|
||||
/// per-face angle sums match φ_f at every free face.
|
||||
///
|
||||
/// The CP-Euclidean energy (Bobenko-Pinkall-Springborn 2010 §6) is strictly
|
||||
/// The CP-Euclidean energy (Bobenko-Pinkall-Springborn 2015 §6) is strictly
|
||||
/// convex on its open domain of validity, so the Hessian H is PSD and the
|
||||
/// solution is unique up to the gauge mode pinned by `f_idx == −1`.
|
||||
/// `cp_euclidean_hessian` provides the analytic 2×2-per-edge formula
|
||||
@@ -483,7 +483,7 @@ inline NewtonResult newton_hyper_ideal(
|
||||
/// \note Unlike the Euclidean solver, the CP-Euclidean Hessian is exact
|
||||
/// (analytic), so the SparseQR fallback only triggers in genuine
|
||||
/// gauge-singular situations (no pinned face).
|
||||
/// \see doc/architecture/phase-9a-validation.md §1 for the BPS-2010 mapping.
|
||||
/// \see doc/architecture/phase-9a-validation.md §1 for the BPS-2015 mapping.
|
||||
inline NewtonResult newton_cp_euclidean(
|
||||
ConformalMesh& mesh,
|
||||
std::vector<double> x0,
|
||||
|
||||
Reference in New Issue
Block a user