Phase 3g — constants.hpp:
- Introduce conformallab::PI and TWO_PI in a single constants.hpp
- Remove scattered local PI/pi definitions from hyper_ideal_geometry.hpp,
hyper_ideal_utility.hpp, euclidean_functional.hpp, mesh_builder.hpp,
spherical_geometry.hpp (backward-compatible PI_SPHER alias kept)
Phase 3f — Euclidean Hessian (euclidean_hessian.hpp):
- Cotangent-Laplace operator (Pinkall–Polthier 1993)
- euclidean_cot_weights() helper + euclidean_hessian() + hessian_check_euclidean()
- Correct Pinkall–Polthier 1/2 normalization factor
- 8 tests: cot weights, symmetry, null-space (H·1=0), PSD, FD × 4 meshes
Phase 3f — Spherical Hessian (spherical_hessian.hpp):
- Derives ∂α_i/∂u_j directly from the spherical law of cosines:
∂α1/∂l_opp = sin(l_opp) / [sin(l_a)·sin(l_b)·sin(α1)]
∂α1/∂l_adj = [cot(l_adj)·cos(α1) − cot(l_other)] / sin(α1)
then chains with ∂l/∂λ = tan(l/2)
- spherical_cot_weights() kept as a standalone helper (tested separately)
- 8 tests: cot weights, symmetry, correct null-space & sign-convention
(H·1 ≠ 0; H is NSD at equilibrium), FD × 3 meshes
All 62 cgal tests pass (3 skipped as before).
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
56 lines
1.9 KiB
CMake
56 lines
1.9 KiB
CMake
# tests/cgal/CMakeLists.txt
|
|
#
|
|
# CGAL-dependent test target. Only built when -DWITH_CGAL=ON.
|
|
# Requires Boost (find_package(Boost REQUIRED) is called in the root CMakeLists).
|
|
#
|
|
# Run with:
|
|
# cmake -S code -B build -DWITH_CGAL=ON
|
|
# cmake --build build --target conformallab_cgal_tests
|
|
# ctest --test-dir build -R cgal
|
|
|
|
add_executable(conformallab_cgal_tests
|
|
# ── Phase 3a: mesh infrastructure ──────────────────────────────────────
|
|
test_conformal_mesh.cpp
|
|
|
|
# ── Phase 3b: HyperIdealFunctional ─────────────────────────────────────
|
|
test_hyper_ideal_functional.cpp
|
|
|
|
# ── Phase 3c + 3e: SphericalFunctional + gauge-fix ────────────────────
|
|
test_spherical_functional.cpp
|
|
|
|
# ── Phase 3d: EuclideanCyclicFunctional ───────────────────────────────
|
|
test_euclidean_functional.cpp
|
|
|
|
# ── Phase 3f: Hessians (cotangent Laplacian, spherical + Euclidean) ───
|
|
test_euclidean_hessian.cpp
|
|
test_spherical_hessian.cpp
|
|
)
|
|
|
|
target_include_directories(conformallab_cgal_tests SYSTEM PRIVATE
|
|
${CMAKE_SOURCE_DIR}/deps/eigen-3.4.0
|
|
${CMAKE_SOURCE_DIR}/deps/CGAL-6.1.1/include
|
|
${Boost_INCLUDE_DIRS}
|
|
)
|
|
|
|
target_include_directories(conformallab_cgal_tests PRIVATE
|
|
${CMAKE_SOURCE_DIR}/include
|
|
)
|
|
|
|
target_compile_definitions(conformallab_cgal_tests PRIVATE
|
|
CGAL_DISABLE_GMP
|
|
CGAL_DISABLE_MPFR
|
|
)
|
|
|
|
# Suppress warnings from CGAL/Boost headers
|
|
target_compile_options(conformallab_cgal_tests PRIVATE
|
|
$<$<CXX_COMPILER_ID:GNU,Clang,AppleClang>:-Wno-unused-parameter>
|
|
)
|
|
|
|
target_link_libraries(conformallab_cgal_tests PRIVATE GTest::gtest_main)
|
|
|
|
include(GoogleTest)
|
|
gtest_discover_tests(conformallab_cgal_tests
|
|
TEST_PREFIX "cgal."
|
|
DISCOVERY_TIMEOUT 60
|
|
)
|