DDG Smooth Curves

曲线与表面

生活中的几何

我们日常接触的绝大多数几何对象,无论是自然界还是人造物,都可以用曲线曲面来描述。比如行星的运行轨道和心电图都是曲线的形式,而飞机机翼,人脸建模则是曲面。即便是实体的边界,比如三维物体(如球体),其本质也是由曲面(边界)定义的。因此,曲线和曲面是连接数学与现实的桥梁。

微分几何则主要研究n维流形,通常聚焦于低维: 曲线(n=1)曲面(n=2)体积(n=3)。主要原因如下:

  • 应用广泛:从机器人路径规划到计算机图形学。
  • 低维并非简单,也可能极其深刻:
    • n=1:纽结识别(2022年才解决!)。
    • n=2:Willmore猜想(2012年证得部分结果)。
    • n=3:几何化猜想(2003年佩雷尔曼证明,价值百万美元)。
  • 高维未必复杂,机器学习中的高维数据反而可能缺乏几何深度(如对称性、曲率流等)。

反直觉:低维流形是数学的“实验室”,蕴藏最丰富的结构与未解之谜。

描述几何的多种“方言”:

  • 局部参数化(如圆弧 $(\cos\theta, \sin\theta)$)。
  • 微分形式(坐标无关,适合全局分析)。
  • 活动标架(Frenet标架用于曲线,曲面上的标架场)。
  • 隐式方程(如 $x^2 + y^2 = 1$ 定义圆)。

同样,复杂问题下不必拘泥于一种方法,就如同一个人掌握多种语言的必要性一般。

离散描述

数值计算需要离散化:
| 方法 | 优点 | 缺点 |
|—————-|—————————–|—————————–|
| 隐式(如水平集) | 拓扑变化灵活(如分裂、合并) | 存储成本高、自适应困难 |
| 显式(如网格) | 计算高效、工具成熟 | 拓扑修改复杂 |

就如同DDG课程所讲,本课程的目标就是在光滑理论上,通过微分形式揭示几何本,而在离散逼近上,用网格和离散微分形式实现算法,从而实现在理论(纸上推导)与计算(代码实现)间的自由切换。

比如在汽车设计中,设计汽车曲面(光滑)->生成有限元网格(离散)-> 模拟碰撞(算法)。

平面曲线

隐式描述

定义:通过函数$\phi(x,y)=0$定义的平面点集

  • 典型示例:单位圆的方程$x^2+y^2-1=0$
  • 优势
    • 表示简洁,一个方程描述完整曲线
    • 容易判断点是否在曲线上(代入验证)
  • 局限
    • 自交点处理困难(如双纽线)
    • 难以直接获取几何属性(如切线方向)

数学内涵:体现了曲线的全局性质,是代数几何的研究对象。

参数化描述

定义:通过$\gamma:[a,b] \rightarrow \mathbb{R}^2$的映射给出

  • 经典示例:圆的参数方程$\gamma (\theta) = (\cos \theta, \sin \theta)$
  • 显著优势
    • 明确处理自交(浸入vs.嵌入)
    • 自然包含运动信息($\gamma^\prime (t)$表示速度)
    • 适合物理建模(如粒子轨迹)

关键特征:参数化本质上是将一维区间”拉伸扭曲”到平面。

参数化曲线自然地导出离散表示:用顶点序列${v_0,v_1,…,v_n}$逼近。

特征 隐式描述 参数化描述
自交处理 困难 明确
几何计算 需隐函数求导 直接微分
运动描述 不自然 包含速度信息
离散化难度 复杂(如体素化) 简单(取采样点)

一个平面参数化曲线是指从实数区间到平面的映射:

\[\gamma: [0,L] \to \mathbb{R}^2\]

其中:

  • 定义域 $[0,L]$ 是实直线上的闭区间(参数空间)
  • 值域 $\gamma([0,L])$ 是平面上的点集(轨迹)

曲线微分

参数化曲线 $\gamma: [0,L] \to \mathbb{R}^2$ 的微分 $ \mathrm{d} \gamma$ 是将参数空间的切向量映射到平面切向量的线性变换:

\[\mathrm{d} \gamma: T_s[0,L] \to T_{\gamma(s)}\mathbb{R}^2\]

曲线切向量

切向量是曲线在某点的”最佳逼近直线”的方向向量:

对于 $ C^1 $ 类正则曲线 $\gamma: I \to \mathbb{R}^n $:

\[T(t) = \frac{\mathrm{d}\gamma/\mathrm{d}t}{\|\mathrm{d}\gamma/\mathrm{d}t\|} \in S^{n-1}\]

其中正则性条件 $|d\gamma/dt| \neq 0$ 确保定义良好。

  • 微分 如同”橡皮筋拉伸规则”:
    • 参数空间是松弛的橡皮筋,$\mathrm{d}\gamma$ 描述它被拉伸到曲线时的变形方式。
  • 切向量 如同”指南针方向”:
    • 在曲线每点标出一个箭头,指向曲线前进方向(长度固定为1)。

曲线的重新参数化

给定一条参数化曲线 $\gamma: [a,b] \to \mathbb{R}^n$ 和一个双射映射 $\eta: [c,d] \to [a,b]$,我们可以构造重新参数化的曲线

\[\tilde{\gamma}(t) = \gamma(\eta(t)), \quad t \in [c,d]\]

关键性质

  • 新曲线 (\tilde{\gamma}) 与原始曲线 (\gamma) 几何形状完全相同
  • 仅改变了曲线的遍历方式(速度、参数间隔等)

微分 $\mathrm{d}\tilde{\gamma}$ 揭示了参数变换导致的向量伸缩:

\[\mathrm{d}\tilde{\gamma} = \mathrm{d}\gamma \circ d\eta\]

一条参数化曲线 $\gamma: [a,b] \to \mathbb{R}^n$ 是正则的,其微分(速度向量)处处非零:

\[\gamma'(t) \neq 0, \quad \forall t \in [a,b]\]

几何解释

  • “永不停滞”:曲线在任意点都有明确的前进方向
  • 切空间良定义:每点存在一维切空间 $T_{\gamma(t)}\mathcal{C}$
  • 排除奇点:如尖点(cusp)、回溯点等病理情况

非正则曲线示例

同样,一个非正则曲线则表明其曲线微分在至少某一点上为零。如果举一个例子。

  • 原始曲线

    \[\gamma(s) = \begin{cases} (s, s) & s \leq 0 \\ (s, -s) & s > 0 \end{cases}\]
  • 重新参数化:取$\eta(s) = s^3$,得到:

    \[\tilde{\gamma}(s) = \gamma(s^3) = \begin{cases} (s^3, s^3) & s \leq 0 \\ (s^3, -s^3) & s > 0 \end{cases}\]

微分分析

计算一阶导数:

\[\tilde{\gamma}'(s) = \begin{cases} (3s^2, 3s^2) & s < 0 \\ (0, 0) & s = 0 \\ (3s^2, -3s^2) & s > 0 \end{cases}\]
  • 连续性:$\lim_{s\to 0^-} \tilde{\gamma}’(s) = \lim_{s\to 0^+} \tilde{\gamma}’(s) = (0,0)$
  • 正则性破坏点:在$s=0$处$\tilde{\gamma}’(0) = 0$

嵌入曲线(Embedded Curve)

直观理解

嵌入曲线是不自交的曲线,满足:

  • 没有交叉点(如数字”8”不是嵌入曲线)
  • 没有端点重合(如闭合环除外)
  • 在平面上看起来是”一根连续不断的线”

数学定义

对于参数化曲线 $\gamma: [a,b] \to \mathbb{R}^n$,它是嵌入的当且仅当:

  1. 连续单射:$\gamma$ 是连续且一一映射的
  2. 逆映射连续:$\gamma^{-1}: \gamma([a,b]) \to [a,b]$ 也是连续的(即同胚嵌入)

反例

  • 构造方式

    \[\gamma: [0,1) \to S^1, \quad t \mapsto (\cos 2\pi t, \sin 2\pi t)\]
  • 性质分析

    • 连续单射:每个$t$对应圆上唯一点,且连续
    • 非嵌入:当$t \to 1^-$时,$\gamma(t)$趋近于$(1,0)$,但$\gamma^{-1}$在$(1,0)$处不连续(无法连续”解开”圆)

几何表现

  • 图像是一个缺了一个点的圆(极限点未闭合)
  • 若强行闭合(令$\gamma(1)=(1,0)$),则失去单射性

单位法向量

法向量是垂直于切向量的单位向量,满足:

  • “竖直外伸”:在平面曲线的每点指向曲率中心方向
  • 正交性:始终与切向量 $ T(s) $ 满足 $ T \cdot N = 0 $
  • 定向规则:通常取逆时针旋转90°(右手系)

数学定义

对于弧长参数化曲线 $\gamma(s)$,单位法向量定义为:

\[N(s) = JT(s)\]

其中 $ J $ 是逆时针旋转90°的线性算子:

\[J(x,y) = (-y,x)\]

曲率

曲率 $\kappa$ 量化曲线在某点的弯曲程度

  • $\kappa = 0$:直线(不弯曲)
  • $\kappa$ 越大:弯曲越剧烈
  • 符号:表示弯曲方向(逆时针为正,顺时针为负)

对于弧长参数化曲线 $\gamma(s)$,曲率为单位切向量 $T(s)$ 的变化率:

\[\kappa(s) = \left\| \frac{dT}{ds} \right\| = \| T'(s) \|\]

若用法向量 $N(s)$ 表示:

\[\kappa(s) = \langle N(s), T'(s) \rangle\]

密切圆(Osculating Circle)

过曲线上点 $p$ 及左右邻近两点,当邻近点无限接近 $p$ 时,这三个点确定的圆的极限位置即为密切圆

  • 曲率半径:密切圆半径 $r$ 与曲率的关系:

    \[\kappa(p) = \frac{1}{r(p)}\]

(半径越小,曲率越大)

曲率决定曲线

对于弧长参数化的平面曲线 $\gamma(s)$,在刚体运动(平移+旋转)意义下

  • 唯一性:曲线的形状完全由曲率函数 $\kappa(s)$ 决定
  • 存在性:任意给定的连续函数 $\kappa(s)$ 对应一条平面曲线

几何直观

方向盘比喻

  • 曲率 $\kappa(s)$ 如同方向盘转角
  • 以单位速度行驶时,$\kappa(s)$ 决定行驶方向的变化率

从曲率函数重建平面曲线

根据平面曲线基本定理,给定曲率函数 $\kappa(s)$ 和初始条件,可通过三步重建曲线:

  1. 积分曲率得角度

    \[\theta(s) = \int_0^s \kappa(t) dt + \theta_0\]

    ($\theta_0$ 为初始切向角度)

  2. 构造切向量

    \[T(s) = (\cos\theta(s), \sin\theta(s))\]
  3. 积分切向量得曲线

    \[\gamma(s) = \gamma(0) + \int_0^s T(t) dt\]

示例验证:常曲率 $\kappa(s) = 1$

  1. 角度函数

    \[\theta(s) = \int_0^s 1 \, dt = s \quad (\text{设} \theta_0=0)\]
  2. 切向量

    \[T(s) = (\cos s, \sin s)\]
  3. 曲线积分

    \[\gamma(s) = \int_0^s (\cos t, \sin t) dt = (\sin s, 1-\cos s)\]

    结果:半径为1的圆沿x轴滚动的摆线

转向数(Turning Number)与环绕数(Winding Number)

  • 转向数 $ k $
    想象一个小车沿曲线行驶,方向盘总共转了多少圈。
    • $ k=+1 $:标准逆时针圆(方向盘逆时针转1圈)
    • $ k=0 $:直线或”8”字形(净转向为零)
  • 环绕数 $ n(p) $
    用一根绳子连接点 $ p $ 和曲线,数绳子绕 $ p $ 的净圈数。
    • 若 $ p $ 在曲线内部,通常 $ n(p) \neq 0 $
    • 若 $ p $ 在外部,$ n(p) = 0 $

切线数是“切线映射”绕原点的环绕数。也就是说,如果我们不是用原始曲线去绕某个点,而是用单位切向量在单位圆上形成的路径去计算环绕数,那得到的数就是切线数。

Whitney–Graustein 定理

当两条曲线之间可以通过连续变形(homotopy)变换,且在整个过程中始终保持“正则”(即处处导数不为零、没有尖点或停顿)时,我们称这两条曲线是正则同伦(regularly homotopic)的。

Whitney–Graustein 定理指出:

两条平面正则曲线具有相同的切线数(turning number)当且仅当它们是正则同伦的。

也就是说,切线数是判断两条曲线能否在不“撕裂”或“折断”的前提下相互变形的拓扑不变量

推论:

不可能把一个“正向绕一圈”的圆形变形成“反向绕一圈”的圆形。 换句话说,无法在保持正则性的前提下把一个圆“翻转过来”,因为它们的切线数为 $+1$ 和 $-1$,不同。

这一定理将“几何上的连续变形”与“拓扑不变量”之间建立了深刻的联系,是理解曲线同伦分类的核心结果之一。

应用:六面体网格划分(Hexahedral Meshing)

在数值模拟中,六面体网格划分指的是将一个三维形状划分成许多“小立方体”来进行物理计算或几何处理。

定理(Thurston–Mitchell):

一个genus-0的四边形网格,当且仅当其面数为偶数时,才能作为某个六面体网格的边界。

证明思路概述:

  • 在球面上的每一条曲线都可以通过正则同伦变形为一个圆形或“8”字形;
  • 将网格的对偶图(dual graph)变形成一系列互不相交的圆和“8”字形
  • 然后通过“收缩”球面来在这些曲线之间插值,逐渐“扫出”一套新的表面;
  • 这些表面正好构成一个六面体网格(可能需要补充一些额外结构以使其闭合)。

该构造方式会生成 $O(n^2)$ 个六面体单元(其中 $n$ 为原始网格规模),但在优化算法下可以做到 $O(n)$ 复杂度。

此外,Erickson 的研究表明,该方法还可以推广到任意亏格的情形。

以下是该段内容关于“广义环绕数(Generalized Winding Numbers)”的中文翻译,适合用于博客文章风格:


应用:广义环绕数(Generalized Winding Numbers)

环绕数(winding number)表示一条封闭曲线绕某个给定点“缠绕”的次数——它帮助我们判断某个点是在曲线内部还是外部。在真实数据中,曲线往往不是完美封闭的,比如:

  • 存在测量噪声;
  • 曲线存在小的缝隙或不连续。

但即使在这种情况下,我们仍然希望判断哪些点是在“里面”或“外面”。

解决方法:

我们可以通过累加曲线对某点的“有符号投影长度”或“有符号面积”,得到一个小数形式的“广义环绕数”(fractional winding number)。

优点:

  • 虽然结果不再是整数,但它仍然很好地反映了“内”与“外”的概率
  • 通过设定一个阈值(threshold),我们可以在嘈杂数据中稳健地区分内外区域

应用场景包括:

  • 提取水密网格(watertight mesh);
  • 四面体网格划分(tetrahedral meshing);
  • 实体布尔操作(Constructive Solid Geometry, CSG),如并集、交集、差集等。

空间曲线

一条参数化空间曲线是如下映射:

\[\gamma: [0, L] \to \mathbb{R}^3\]

其中:

  • 定义域:实直线上的闭区间 $[0,L]$(通常表示弧长或时间参数)
  • 值域:三维欧氏空间中的点集 ${\gamma(t) \mid t \in [0,L]}$

曲线的微分 $ \mathrm{d}\gamma $ 实现了切空间的线性映射:

\[\mathrm{d} \gamma: T_t\mathbb{R} \to T_{\gamma(t)}\mathbb{R}^3\]

推前映射(Pushforward)

推前映射 $ d\gamma $ 将定义在参数域上的向量场 $ X $ 推前(”拉伸”)到三维空间中的曲线切向量场:

\[\mathrm{d} \gamma: T_t\mathbb{R} \to T_{\gamma(t)}\mathbb{R}^3\]

这一操作是微分几何中切映射的特例,也是雅可比矩阵在曲线情形下的具体表现。

具体构造步骤

设曲线 $\gamma(t) = (x(t), y(t), z(t))$ 和参数域上的向量场 $ X = a(t)\frac{\partial}{\partial t} $,则:

  1. 坐标微分计算

    \[\mathrm{d}\gamma = \left( \frac{dx}{dt}, \frac{dy}{dt}, \frac{dz}{dt} \right) dt\]
  2. 推前映射作用

    \[\mathrm{d}\gamma(X) = a(t) \left( \frac{dx}{dt}, \frac{dy}{dt}, \frac{dz}{dt} \right) \in \mathbb{R}^3\]

    几何意义:将参数速度 $ a(t) $ 转换为物理空间速度向量

Curvature (曲率) and Torsion (扭率?)

平面上的曲率描述曲线的弯曲程度,而在空间中,还包括torsion,描述扭曲的程度。

Frenet标架与Frenet-Serret方程:空间曲线的局部坐标系

对于正则空间曲线 $\gamma(s)$(弧长参数化),其Frenet标架由三个单位正交向量组成:

  1. 切向量(Tangent)

    \(T(s) = \gamma'(s)\) 方向:曲线瞬时运动方向

  2. 法向量(Normal)

    \(N(s) = \frac{T'(s)}{\|T'(s)\|} = \frac{\gamma''(s)}{\kappa(s)}\) 方向:指向曲率中心

  3. 副法向量(Binormal)

    \[B(s) = T(s) \times N(s)\]

    方向:垂直于密切平面,构成右手系

Frenet-Serret

Frenet标架沿曲线的演化由曲率 $\kappa$ 和挠率 $\tau$ 完全控制,矩阵形式

\[\frac{d}{ds} \begin{bmatrix} T \\ N \\ B \end{bmatrix} = \begin{bmatrix} 0 & -\kappa & 0 \\ \kappa & 0 & -\tau \\ 0 & \tau & 0 \end{bmatrix} \begin{bmatrix} T \\ N \\ B \end{bmatrix}\]

几何解释

方程 物理意义 类比
$ T’ = \kappa N $ 切向变化率 ⇒ 弯曲强度 离心力指向曲率中心
$ N’ = -\kappa T + \tau B $ 法向变化由弯曲和扭转共同作用 科里奥利力效应
$ B’ = -\tau N $ 副法向变化率 ⇒ 纯扭转效应 螺旋进

空间曲线基本定理

和平面一样,对于给定的连续函数 $\kappa(s) > 0$ 和 $\tau(s)$,存在唯一(刚体运动意义下)的弧长参数化空间曲线 $\gamma(s)$,使得:

  • $\kappa(s)$ 是该曲线的曲率
  • $\tau(s)$ 是该曲线的挠率

唯一性:两条曲线若具有相同的 $\kappa(s)$ 和 $\tau(s)$,则仅相差一个刚体变换(旋转+平移)

曲线总结

描述曲线的方式有很多种,例如代数方式(algebraic curves)等。

微分几何中,最常用的方式是使用参数化曲线,因为它可以通过对参数化函数求导数来提取许多关键的局部几何量:

  • 切向量、法向量、双法向量(组成 Frenet 框架)
  • 曲率、挠率(curvature, torsion)

此外,还有几个重要的概念:

  • 嵌入(embedded) vs. 沉浸/正则(immersed / regular):描述曲线是否自交、是否处处有定义良好的导数。
  • 切线数(Turning Number):单位切向量映射到单位圆的“度数”。
  • 环绕数(Winding Number):曲线绕某个点的“度数”。

最后,微分几何中的一个重要结论:

平面/空间曲线的基本定理: 只要知道一条曲线的曲率(和挠率)函数,就可以在刚体运动不变的意义下唯一确定这条曲线的形状




Enjoy Reading This Article?

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

  • DDG Smooth Curvatures
  • DDG Discrete Curves
  • DDG Smooth Surfaces
  • DDG Integration
  • DDG Discrete Differential Forms