CCG 08-06:实现、诊断与算法边界

本页只解决一个问题

离散曲率流代码应监控哪些不变量,它与调和参数化有何本质差别?

本页是原长篇讲义的单概念版本。第一次阅读只追踪本页定义的对象;看见未掌握的前置符号时,先沿链接退回,不要跳过定义硬背结论。

开始前

12. 离散曲率流伪代码

input: triangulation T, initial lengths l0, target curvature K_bar
u <- 0
fix scale gauge, e.g. sum(u) = 0

repeat:
    l <- conformal_lengths(l0, u)
    while T is not intrinsic Delaunay:
        flip offending edge
        update intrinsic length with Ptolemy relation

    theta <- triangle_angles(l)
    K <- angle_defects(theta)
    residual <- K - K_bar
    if max_abs(residual) < tolerance: break

    H <- curvature_jacobian(theta)  # Laplace-type Hessian
    du <- solve_gauged_system(H, -residual)
    step <- backtracking_line_search(u, du)
    u <- u + step * du

output: conformal factor u, final intrinsic metric l, triangulation T

13. 数值不变量与诊断

每次迭代至少记录:

量应满足
目标曲率总和∑Kˉ=2πχ\sum\bar K=2\pi\chi(含边界版本)
当前曲率总和数值上保持 Gauss–Bonnet
最小三角不等式余量严格为正
非 Delaunay 边数翻边后为 0
∣K−Kˉ∣∞|K-\bar K|_\infty下降至容差
∑ui\sum u_i 或固定点满足尺度规范
Hessian 最小非零特征值不应异常接近 0

14. Ricci flow 与调和参数化的区别

调和/LSCMRicci/Yamabe flow
直接求点的二维坐标先求目标内在度量
通常是线性或二次优化非线性曲率处方
边界/锚点强烈影响结果目标曲率与拓扑主导
适合圆盘参数化可统一球面、环面、高亏格
输出坐标输出度量,之后还需 development

15. 常见错误

  1. 目标曲率不满足 Gauss–Bonnet,问题根本无解。
  2. 忘记固定尺度,Hessian 奇异。
  3. 固定原三角剖分不翻边,迭代撞上三角不等式边界。
  4. 把角度亏损当作曲率密度;二者相差 dual area。
  5. Newton 不做 line search,远离解时发散。
  6. 得到目标度量后直接把原三维坐标当作参数坐标;仍需发展映射。
  7. 球面/双曲参数未做自同构归一化,比较结果会漂移。

读完必须能回答

  1. 不看公式,用自己的话回答开头的核心问题。
  2. 指出本页最重要公式中每个符号的类型:标量、向量、矩阵、映射还是集合。
  3. 找出定理成立所需的假设,并举一个删除某条假设后可能失败的例子。
  4. 对最小例子手算一遍;若本页含代码,再比较手算与程序输出。

前后课程

上一课:球面、欧氏与双曲标准域 | 返回模块目录