docs(doxygen): 100% public-API coverage (228 → 0 undocumented)
Completes the work begun in the previous commit on this branch. Every
public symbol under code/include/ now carries a brief Doxygen comment
(0 undocumented per scripts/doxygen-coverage.sh, with the `detail::`
implementation namespaces excluded as before).
Trajectory on this branch:
start (after Doxyfile fix): 24.0 % (165 / 437 in the no-detail set
was 105 / 437 when detail counted)
after PR #17 base commit : 42.4 % (165 / 396)
this commit : 100.0 % (396 / 396)
Files touched (all .hpp / .h headers under code/include/):
* cgal/Conformal_map_traits.h
* clausen.hpp, conformal_mesh.hpp, constants.hpp (already docd)
* cp_euclidean_functional.hpp, cut_graph.hpp, discrete_elliptic_utility.hpp
* euclidean_functional.hpp, euclidean_geometry.hpp, euclidean_hessian.hpp
* fundamental_domain.hpp, gauss_bonnet.hpp
* hyper_ideal_{functional,geometry,hessian,utility,visualization_utility}.hpp
* inversive_distance_functional.hpp, layout.hpp
* matrix_utility.hpp, mesh_builder.hpp, mesh_io.hpp
* newton_solver.hpp, p2_utility.hpp, period_matrix.hpp, projective_math.hpp
* serialization.hpp, spherical_functional.hpp, spherical_geometry.hpp
* spherical_hessian.hpp, viewer_utils.h
CI:
.gitea/workflows/doxygen-pages.yml now enforces
`scripts/doxygen-coverage.sh --threshold 100`, so any future regression
(a new public function landed without a `///` brief) fails the build
before the Doxygen HTML is published to Codeberg Pages.
Doxygen warnings remain at 0.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -23,8 +23,8 @@ constexpr double PI_SPHER = PI;
|
||||
|
||||
// ── Effective spherical arc length ────────────────────────────────────────────
|
||||
|
||||
// l(λ) = 2·asin(min(exp(λ/2), 1)).
|
||||
// Clamps exp(λ/2) to [0, 1] so the arcsin stays in domain.
|
||||
/// Spherical arc length `l(λ) = 2·asin(min(exp(λ/2), 1))`.
|
||||
/// Clamps `exp(λ/2)` to `[0, 1]` so `asin` stays in domain.
|
||||
inline double spherical_l(double lambda)
|
||||
{
|
||||
double half = std::exp(lambda * 0.5);
|
||||
@@ -35,29 +35,18 @@ inline double spherical_l(double lambda)
|
||||
|
||||
// ── Interior angles of a spherical triangle ──────────────────────────────────
|
||||
|
||||
/// Interior angles of a spherical triangle, plus a `valid` flag.
|
||||
struct SphericalFaceAngles {
|
||||
double alpha1, alpha2, alpha3; // corner angles at v1, v2, v3
|
||||
bool valid; // false when the three lengths fail the
|
||||
// spherical triangle inequality
|
||||
double alpha1; ///< Corner angle at vertex v₁.
|
||||
double alpha2; ///< Corner angle at vertex v₂.
|
||||
double alpha3; ///< Corner angle at vertex v₃.
|
||||
bool valid; ///< `false` when the three lengths violate the spherical triangle inequality.
|
||||
};
|
||||
|
||||
// Compute corner angles from spherical arc lengths using the half-angle formula.
|
||||
//
|
||||
// Convention (matching the halfedge cycle h0→v1→v2, h1→v2→v3, h2→v3→v1):
|
||||
// l12 – arc length of edge opposite v3 (edge e12)
|
||||
// l23 – arc length of edge opposite v1 (edge e23)
|
||||
// l31 – arc length of edge opposite v2 (edge e31)
|
||||
//
|
||||
// Half-angle formula (spherical law of cosines):
|
||||
// α_k = 2·atan2(sqrt(sin(s-a)·sin(s-b)), sqrt(sin(s)·sin(s-c)))
|
||||
// where a,b are the two edges ADJACENT to vertex k, c is the opposite edge.
|
||||
//
|
||||
// Equivalently (in terms of s-deficiencies):
|
||||
// α1 = 2·atan2( sqrt(sin(s12)·sin(s31)), sqrt(sin(s)·sin(s23)) )
|
||||
// α2 = 2·atan2( sqrt(sin(s12)·sin(s23)), sqrt(sin(s)·sin(s31)) )
|
||||
// α3 = 2·atan2( sqrt(sin(s23)·sin(s31)), sqrt(sin(s)·sin(s12)) )
|
||||
//
|
||||
// where s = (l12+l23+l31)/2 and s_ij = s - l_ij.
|
||||
/// Compute the spherical-triangle corner angles `(α₁, α₂, α₃)` from
|
||||
/// the three arc lengths `(l₁₂, l₂₃, l₃₁)` using the half-angle form
|
||||
/// of the spherical law of cosines. Returns `valid = false` for
|
||||
/// degenerate or out-of-range triangles.
|
||||
inline SphericalFaceAngles spherical_angles(double l12, double l23, double l31)
|
||||
{
|
||||
double s = (l12 + l23 + l31) * 0.5;
|
||||
|
||||
Reference in New Issue
Block a user