DDG Discrete Curves

平面中的离散曲线

在离散微分几何中,离散曲线被定义为一种分段线性参数化曲线,即由一系列点通过直线段连接而成的几何对象。形式上,给定一组有序点 $\gamma_0, \gamma_1, \ldots, \gamma_n \in \mathbb{R}^2$,离散曲线 $\gamma$ 是由这些点依次相连构成的折线。其参数化表示为:

\[\gamma(s) = (1-t)\gamma_i + t\gamma_{i+1}, \quad \text{其中} \ s \in [s_i, s_{i+1}], \ t = \frac{s-s_i}{s_{i+1}-s_i}.\]

为简化记号,常用 $\gamma_i$ 表示 $\gamma(s_i)$,即第 $i$ 个顶点的位置。

关键特性有:

  1. 分段线性:曲线在每对相邻点之间是直线段,整体呈现折线形态。
  2. 连续性与参数化:尽管离散,曲线仍是连续的参数化映射,但与传统光滑曲线的解析表达式不同。
  3. 离散微分形式:可通过抽象单纯复形和离散0-形式(顶点坐标)定义,利用Whitney基函数(如“帽子函数”)实现边上的插值。

示例

一个简单的例子是由两段线段组成的L形曲线:

\[\gamma(s) = \begin{cases} (s, 0), & 0 \leq s \leq 1, \\ (1, s-1), & 1 \leq s \leq 2. \end{cases}\]

此曲线从点 $(0,0)$ 水平延伸至 $(1,0)$,再垂直延伸至 $(1,1)$。

离散曲线的微分

在光滑曲线的理论中,微分 $d\gamma$ 描述了曲线在每一点的切向量场。对于离散曲线,这一概念可以通过离散外微积分(Discrete Exterior Calculus)自然地推广:

离散曲线的微分 $d\gamma$ 被定义为边向量的集合。对于相邻顶点 $\gamma_i$ 和 $\gamma_j$,其对应的边向量为:

\[(d\gamma)_{ij} = \gamma_j - \gamma_i.\]

这一表达式直接类比于光滑曲线中微分 $d\gamma = \frac{d\gamma}{ds}ds$ 的离散形式,其中边向量 $(d\gamma)_{ij}$ 取代了连续情形下的切向量 $\frac{d\gamma}{ds}$。

离散切线向量

在光滑曲线中,切线方向由导数 $\frac{d\gamma}{ds}$ 给出。对于离散曲线,我们通过归一化边向量来定义切线,但需要特别注意离散几何与连续几何的关键差异:

对于离散曲线的每一条边 $ij$(连接顶点 $\gamma_i$ 和 $\gamma_j$),其离散切线向量 $T_{ij}$ 定义为:

$ T_{ij} = \frac{(d\gamma){ij}}{|(d\gamma){ij}|} = \frac{\gamma_j - \gamma_i}{|\gamma_j - \gamma_i|}. $

这表示该边的单位方向向量,与光滑曲线中切线的局部方向作用类似。

离散法向量

在平面离散曲线中,法向量的定义延续了光滑曲线中的直观几何思想——通过切线旋转90度得到。然而,离散特性为其带来了独特的性质和应用限制。对于离散曲线的每一条边 $ij$,其离散法向量 $N_{ij}$ 由对应的单位切线 $T_{ij}$ 逆时针旋转90度生成:

\[N_{ij} = \mathcal{J}T_{ij}\]

在二维平面中,若 $T_{ij} = (a, b)$,则法向量为 $N_{ij} = (-b, a)$。

正则离散曲线与离散浸入

在离散微分几何中,为了保证离散曲线具有与光滑曲线类似的良好性质,我们需要引入正则性(regularity)的概念。对于光滑曲线 其正则性要求等价于参数化是局部单射的(无自交或尖点)。

离散化后,直接推广会面临新问题:

  1. 边长度非零
    • 若边长度为零($\gamma_i = \gamma_j$),则微分 $(d\gamma)_{ij} = 0$,破坏了正则性。
    • 但仅此条件不足,因相邻边可能形成零夹角。
  2. 局部单射性
    • 更强的要求是曲线作为映射是局部单射的,即排除以下情况:
      • 边重叠(如两条边共线且部分重合)。
      • 顶点自交(如一条边的端点穿过另一条边)。

离散曲率

在《DDG(2):Curvature》已经提到了如下的定义:

离散平面曲线的基本定理

对于正则离散平面曲线,在刚体运动(平移/旋转)意义下,曲线由其边长度序列 ${l_{ij}}$ 和转角序列 ${\theta_i}$ 唯一确定

其中:

  • 边长度 $l_{ij} = |\gamma_j - \gamma_i|$
  • 转角 $\theta_i$ 为相邻边 $ (i-1,i) $ 与 $ (i,i+1) $ 的有向夹角(逆时针为正)。

给定 ${l_{ij}}, {\theta_i}$ 和初始点 $\gamma_0$,按以下步骤重构曲线:

  1. 计算累积转角

    从初始方向 $T_0 = (1,0)$ 开始,逐顶点计算边的全局方向角 $\varphi_i$:

    \[\varphi_i = \varphi_{i-1} + \theta_{i-1}, \quad \text{其中} \ \varphi_0 = 0.\]
  2. 生成单位切向量

    将方向角转换为单位切向量:

    \[T_i = (\cos \varphi_i, \sin \varphi_i).\]
  3. 逐边积分求顶点坐标

    通过累加边长与切向量的乘积得到顶点位置:
    \(\gamma_i = \gamma_{i-1} + l_{i-1,i} \cdot T_{i-1}.\)

示例演示

给定数据

  • 边长度:$l_{01} = 1, l_{12} = 1, l_{23} = 1$
  • 转角:$\theta_0 = 0°, \theta_1 = 90°, \theta_2 = 0°$
  • 初始点:$\gamma_0 = (0,0)$

重建过程

  1. 计算方向角:

    • $\varphi_0 = 0°$
    • $\varphi_1 = 0° + 0° = 0°$
    • $\varphi_2 = 0° + 90° = 90°$
    • $\varphi_3 = 90° + 0° = 90°$
  2. 切向量:

    • $T_0 = (1,0)$
    • $T_1 = (1,0)$
    • $T_2 = (0,1)$
    • $T_3 = (0,1)$
  3. 顶点坐标:

    • $\gamma_1 = (0,0) + 1 \cdot (1,0) = (1,0)$
    • $\gamma_2 = (1,0) + 1 \cdot (0,1) = (1,1)$
    • $\gamma_3 = (1,1) + 1 \cdot (0,1) = (1,2)$

最终曲线为直角折线,验证定理正确性。

离散Whitney-Graustein定理

对于局部单射的正则离散平面曲线,其正则同伦类(即在不违反局部单射性的连续变形下的等价类)完全由离散转向数(Discrete Turning Number)决定,完美类比于光滑曲线的Whitney-Graustein定理。

方法 提出者 核心思想 适用场景
构造性算法 Mehlhorn & Yap (1991) 通过案例分析将曲线逐步变形为标准多边形 计算几何实现
凸多面体法 Pinkall (1994) 将曲线提升到三维空间构造凸包,利用投影性质 理论分析

共同策略

  1. 将目标曲线变形为标准参考曲线(如正多边形)。
  2. 通过组合两条曲线到参考曲线的路径得到同伦。

离散空间曲线

同理,离散空间曲线是三维空间中的分段线性参数化曲线,由有序顶点序列 ${\gamma_i} \in \mathbb{R}^3$ 通过直线段连接而成,其数学表示为:

\[\gamma(s) = (1-t)\gamma_i + t\gamma_{i+1}, \quad t \in [0,1], \ s \in [s_i,s_{i+1}].\]

离散空间曲线基本定理

在刚体运动(平移+旋转)意义下,正则离散空间曲线由以下数据唯一确定:

  1. 边长度 ${l_{ij}}$(替代弧长参数)
  2. 顶点曲率 ${\kappa_i}$(相邻边外角)
  3. 边挠率 ${\tau_{ij}}$(法向量扭转角)

与光滑理论的类比

光滑曲线 离散曲线 几何意义
弧长参数 $s$ 边长度 $l_{ij}$ 局部尺度度量
曲率 $\kappa(s)$ 顶点外角 $\kappa_i$ 局部弯曲程度
挠率 $\tau(s)$ 边扭转角 $\tau_{ij}$ 局部扭转程度

曲线重构算法

输入

  • 边长度 ${l_{01}, l_{12}, …, l_{n-1,n}}$
  • 顶点曲率 ${\kappa_1, \kappa_2, …, \kappa_{n-1}}$
  • 边挠率 ${\tau_{01}, \tau_{12}, …, \tau_{n-1,n}}$
  • 初始条件:$\gamma_0 \in \mathbb{R}^3$, 初始标架 $(T_0, N_0, B_0)$

逐边递推

   for i in range(n):
       # 计算下一顶点位置
       γ[i+1] = γ[i] + l[i] * T[i]
       
       # 曲率旋转:绕当前法向量N旋转κ_i
       R_κ = rotation_matrix(N[i], κ[i])
       T[i+1] = R_κ @ T[i]
       B_temp = R_κ @ B[i]
       
       # 挠率旋转:绕新切向量T[i+1]旋转τ_i
       R_τ = rotation_matrix(T[i+1], τ[i])
       N[i+1] = R_τ @ N[i]
       B[i+1] = R_τ @ B_temp

曲率流

曲率流描述曲线随时间演化,其运动速度由曲率函数决定:

\[\frac{\partial \gamma}{\partial t} = V(\kappa)N\]

其中 $V(\kappa)$ 是曲率 $\kappa$ 的标量函数,$N$ 为单位法向量。

Length Shortening Flow

长度缩短流是最基础的曲率流,其演化方程由曲线长度的变分直接导出:

\[\frac{\partial \gamma}{\partial t} = \kappa N\]

其中曲率 $\kappa$ 和法向量 $N$ 共同决定了曲线的收缩速度。

  1. 凸性保持
    • 初始凸的曲线保持凸性
    • 非凸曲线会产生拐点(根据Gage-Hamilton定理)
  2. 封闭曲线演化
    | 阶段 | 现象 | 数学描述 |
    |——|——|———-|
    | 早期 | 高频振荡快速平滑 | $|\kappa|_{max}$ 递减 |
    | 中期 | 渐近圆形化 | $\text{偏心率} \to 0$ |
    | 末期 | 收敛到圆点 | $\text{面积} \sim O(t_f-t)$ |

Gage-Grayson-Hamilton

质心守恒定理 渐近圆形化(Round Points) 嵌入性保持(Embeddedness)

离散长度缩短流

给定连续方程:

\[\frac{d}{dt} \gamma(s, t) = -\kappa(s, t) N(s, t)\]

离散化为显式欧拉格式,这里的$\tau$是离散下的$\Delta t$:

\[\frac{\gamma^{k+1}(s) - \gamma^k(s)}{\tau} = -\kappa^k(s) N^k(s)\]

最终得到顶点更新公式:

\[\gamma_i^{k+1} = \gamma_i^k - \tau \kappa_i^k N_i^k\]

Elastic Flow 弹性流

弹性流以弯曲能最小化为目标,其连续形式能量泛函为欧拉-伯努利能量:

\[E(\gamma) = \int_\gamma \kappa^2 \, ds\]

对应的梯度流方程为:

\[\frac{\partial \gamma}{\partial t} = -\left( \frac{\partial^2 \kappa}{\partial s^2} + \frac{1}{2}\kappa^3 \right)N\]

Isometric Elastic Flow 等距弹性流

通过直接调整离散曲率(转角)实现曲线平滑,同时严格保持边长不变。其优势在于:

  • 刚性保持:不改变边长度(等距约束)
  • 数值稳定性:避免显式处理高阶导数
  • 几何直观:曲率缩放对应物理上的”弯曲刚度”调节

曲线还有很多其他的应用,具体可以查看slides以及对应的videos,比如:

  1. 弹性杆 (Elastic Rods)
    • 核心量:曲率κ + 挠率τ
    • 能量:$E = \int (\alpha \kappa^2 + \beta \tau^2) ds$
    • 应用:头发/电缆模拟
  2. 粘性丝线 (Viscous Threads)
    • 核心量:曲率κ + 黏度η
    • 方程:$\gamma_t = \eta (\kappa N)_t$
    • 特性:拉伸时变细,松弛时回弹
  3. 解结算法 (Untangling Knots)
    • 方法:Möbius能量最小化
    • 能量:$E = \iint \frac{1}{ \gamma(s)-\gamma(t) ^2} ds dt$
    • 用途:分子生物学/拓扑优化
  4. 排斥曲线 (Repulsive Curves)
    • 核心:几何排斥势 $E = \sum e^{-d_{ij}^2/\sigma}$
    • 优势:避免自交同时保持光滑
  5. 烟环流 (Smoke Ring Flow)
    • 方程:$\gamma_t = \kappa B$ (Binormal流)
    • 特性:保持涡丝环量
    • 离散:Hashimoto离散格式
  6. 气泡环与墨水晶灯 (Bubble Rings & Ink Chandeliers)
    • 现象:流体-固体耦合中的三维涡环
    • 关键:浸入边界法 + 表面张力模型

总结

  • 离散曲线:由顶点序列 ${\gamma_i}$ 和连接它们的直线段(边)构成的分段线性曲线。
  • 参数化:$γ(s) = (1-t)γ_i + tγ_{i+1}$,其中 $t \in [0,1]$ 为局部参数。
  • 正则性:要求无自交、无退化边(边长 $>0$),且局部单射。
  • 长度缩短流:$\gamma_t = -\kappa N$
    • 特性:收缩曲线,凸性保持,封闭曲线收敛到圆点(Gage-Grayson-Hamilton定理)。
  • 弹性流:最小化弯曲能 $E = \int \kappa^2 ds$,方程为 $\gamma_t = -(\kappa_{ss} + \frac{1}{2}\kappa^3)N$。
  • 等距弹性流:缩放曲率但保持边长不变,适用于刚性变形。



Enjoy Reading This Article?

Here are some more articles you might like to read next:

  • DDG Smooth Curves
  • DDG Discrete Surfaces
  • DDG Curvature
  • DDG k-Forms
  • Learning Modern C++ Through pbrt-v4