# 曲率定义

有了第一、第二基本形式和形算子,我们现在已经可以很好的去描述曲面的性质。第一个要面对的就是曲率 (Curvature)「曲率」

定义
(S,n)(S,\boldsymbol n) 为有向正则三维曲面,σ(u,v):DR3\boldsymbol \sigma(u,v): D \to \mathbb R^3 为其正向参数表示,TpST_{\boldsymbol p}SSSpS\boldsymbol p \in S 处的切空间,Σp:TpSTpS\Sigma_{\boldsymbol p}:T_{\boldsymbol p}S \to T_{\boldsymbol p}SSSp\boldsymbol p 处的形算子。此时,称

K(p):=det(Σp)K(\boldsymbol p) := \det(\Sigma_{\boldsymbol p})

SSp\boldsymbol p 处的高斯曲率 (Gaussian curvature)「ガウス曲率」

H(p):=12tr(Σp)H(\boldsymbol p) := \frac{1}{2}\mathrm{tr}(\Sigma_{\boldsymbol p})

SSp\boldsymbol p 处的平均曲率 (Mean curvature)「平均曲率」
Σp\Sigma_{\boldsymbol p} 的两个特征值(根据实对称行列的性质可得有两个实数特征值)

κ1,κ2\kappa_1, \kappa_2

SSp\boldsymbol p 处的主曲率 (Principal curvatures)「主曲率」,其对应的单位化的特征向量叫做主曲率方向 (Principal directions)「主曲率方向」

如果利用第一、第二基本量进行计算:

K(σ(u,v))=det((EFFG)1(LMMN))=LNM2EGF2K(\boldsymbol \sigma(u,v)) = \det( \begin{pmatrix} E & F \\ F & G \end{pmatrix}^{-1} \begin{pmatrix} L & M \\ M & N \end{pmatrix} ) = \frac{LN - M^2}{EG - F^2}

H(σ(u,v))=12tr((EFFG)1(LMMN))=GL2FM+EN2EG2F2H(\boldsymbol \sigma(u,v)) = \frac{1}{2}\mathrm{tr}( \begin{pmatrix} E & F \\ F & G \end{pmatrix}^{-1} \begin{pmatrix} L & M \\ M & N \end{pmatrix}) = \frac{GL-2FM+EN}{2EG-2F^2}

根据特征值的性质,主曲率可由关于 κ\kappa 的二次方程

det(κidTpSΣp)=0\det(\kappa \mathrm{id}_{T_{\boldsymbol p}S} - \Sigma_{\boldsymbol p}) = 0

κ22H(p)κ+K(p)=0\kappa^2 - 2H(\boldsymbol p)\kappa + K(\boldsymbol p) = 0

求出,并且利用韦达定理进一步得到

κ1,2=H±H2K\kappa_{1,2} = H \pm \sqrt{H^2 - K}

K=κ1κ2K = \kappa_1 \kappa_2

H=κ1+κ22H = \frac{\kappa_1 + \kappa_2}{2}

高斯曲率,平均曲率本身是点 pS\boldsymbol p \in S 的函数,所以理论上来说应该是 x,y,zx,y,z 的形式
但是如果 p\boldsymbol p 由参数化给出,就可以直接用参数化变量 u,vu,v 来表示
通常来说,在曲面给出了隐函数方程的情况下,选择用 x,y,zx,y,z 来表示

与曲线一样,刚体变换不会改变曲率,也不会改变第一、第二基本量。

但是曲率依赖于定向,所以如果将曲面反向定向,也就是说 nn\boldsymbol n \to -\boldsymbol n,则
形算子,平均曲率,主曲率会变号

ΣpΣp,H(p)H(p),κ1,2(p)κ1,2(p)\Sigma_{\boldsymbol p} \to -\Sigma_{\boldsymbol p},\quad H(\boldsymbol p) \to -H(\boldsymbol p), \quad \kappa_{1,2}(\boldsymbol p) \to -\kappa_{1,2}(\boldsymbol p)

但是高斯曲率不变

K(p)K(p)K(\boldsymbol p) \to K(\boldsymbol p)

# 曲率计算注意事项

在实际计算问题中,往往会遇到复杂的诸如 σ(u,v)=(u,v,f(u,v))\boldsymbol \sigma(u,v) = (u, v, f(u,v)) 的参数表示。例如 σ(u,v)=(u,v,cx2a2+y2b2+1)\boldsymbol \sigma(u,v) = (u, v, c\sqrt{\frac{x^2}{a^2} + \frac{y^2}{b^2} + 1})。此时依照定义计算第一、第二基本量会非常复杂,进一步让曲率计算困难。针对此类参数表示,有如下简化方法:

示例
(隐函数下的曲率计算)令 σ(u,v)=(uvf(u,v))\boldsymbol \sigma(u,v) = \begin{pmatrix} u \\ v \\ f(u,v) \end{pmatrix} 为曲面 SS 的参数表示

(1) 求使得 σ\boldsymbol \sigma 正向的法向量场
(2) 令 SS 以 (1) 求得的法向量场定向,求 SS 关于 σ\boldsymbol \sigma 的第一基本量和第二基本量
(3) 求在点 pS\boldsymbol p \in S 处的高斯曲率,平均曲率

证明

(1)

σu=(10fu)σv=(01fv)n=σu×σvσu×σv=11+fu2+fv2(fufv1)\boldsymbol \sigma_u = \begin{pmatrix} 1 \\ 0 \\ f_u \end{pmatrix} \quad \boldsymbol \sigma_v = \begin{pmatrix} 0 \\ 1 \\ f_v \end{pmatrix} \quad \boldsymbol n = \frac{\boldsymbol \sigma_u \times \boldsymbol \sigma_v}{\|\boldsymbol \sigma_u \times \boldsymbol \sigma_v\|} = \frac{1}{\sqrt{1 + f_u^2 + f_v^2}} \begin{pmatrix} -f_u \\ -f_v \\ 1 \end{pmatrix}

(2)

E=σuσu=1+fu2F=σuσv=fufvG=σvσv=1+fv2E = \boldsymbol \sigma_u \cdot \boldsymbol \sigma_u = 1 + f_u^2 \\ F = \boldsymbol \sigma_u \cdot \boldsymbol \sigma_v = f_u f_v \\ G = \boldsymbol \sigma_v \cdot \boldsymbol \sigma_v = 1 + f_v^2

L=σuun=fuu1+fu2+fv2M=σuvn=fuv1+fu2+fv2N=σvvn=fvv1+fu2+fv2L = \boldsymbol \sigma_{uu} \cdot \boldsymbol n = \frac{f_{uu}}{\sqrt{1 + f_u^2 + f_v^2}} \\ M = \boldsymbol \sigma_{uv} \cdot \boldsymbol n = \frac{f_{uv}}{\sqrt{1 + f_u^2 + f_v^2}} \\ N = \boldsymbol \sigma_{vv} \cdot \boldsymbol n = \frac{f_{vv}}{\sqrt{1 + f_u^2 + f_v^2}}

(3)

K(p)=LNM2EGF2=fuufvvfuv2(1+fu2+fv2)2H(p)=GL2FM+EN2(EGF2)=(1+fv2)fuu2fufvfuv+(1+fu2)fvv2(1+fu2+fv2)3/2K(\boldsymbol p) = \frac{LN - M^2}{EG - F^2} = \frac{f_{uu}f_{vv} - f_{uv}^2}{(1 + f_u^2 + f_v^2)^2} \\ \quad \\ H(\boldsymbol p) = \frac{GL - 2FM + EN}{2(EG - F^2)} = \frac{(1+f_v^2)f_{uu} - 2f_uf_vf_{uv} + (1+f_u^2)f_{vv}}{2(1+f_u^2+f_v^2)^{3/2}}

通过这种方式,我们可以避免在内部进行复杂的微分计算,而只需要计算 ff 的一阶二阶偏导数并在最后代入。


另一个希望注意的情况是,曲面片的定义域一定是开集,所以像球面、环面这样的闭曲面基本上难以直接找到一个能覆盖全场的参数表示。这就意味着,就算给了显式的参数表示,希望你求其任意点的曲率,你也不可以用参数微分来进行基本量的计算,因为这样算出来的曲率是残缺的,无法覆盖整个曲面。对于这类问题,我们只能使用特殊办法,并且有的时候为了简化计算需要一些注意力技巧。

示例
(环面曲率)R,r>0,D:=(0,2π)2R,r > 0, D := (0,2\pi)^2,令环面 TR,rT_{R,r} 和参数表示 σ:DR3\boldsymbol \sigma: D \to \mathbb R^3 如下

TR,r:={(x,y,z)R3(x2+y2R)2+z2=r2},σ(u,v):=((R+rcosv)cosu(R+rcosv)sinursinv)T_{R,r} := \{(x,y,z) \in \mathbb R^3 \mid (\sqrt{x^2 + y^2} - R)^2 + z^2 = r^2\}, \quad \boldsymbol \sigma(u,v) := \begin{pmatrix} (R + r\cos v)\cos u \\ (R + r\cos v)\sin u \\ r\sin v \end{pmatrix}

求在点 p=t(x,y,z)TR,r\boldsymbol p = {}^t(x,y,z) \in T_{R,r} 处的高斯曲率,平均曲率和主曲率

证明

一定要注意定义域是开区间,这意味着环面上有两条线上的点是无法用这个参数表示的(实际上换个参数表示很可能也表示不了)。

环面参数化遗漏
红线为 TR,r\σ(D)T_{R,r}\backslash \boldsymbol \sigma(D)

所以我们考虑计算形算子 Σp\Sigma_{\boldsymbol p} 的表现行列来得到。首先我们需要得到切空间,所以计算曲面方程的梯度来获取法向量场,注意取正方向。

f(x,y,z):=(x2+y2R)2+z2r2f(x,y,z) := (\sqrt{x^2 + y^2} - R)^2 + z^2 - r^2

f=(2(x2+y2R)xx2+y22(x2+y2R)yx2+y22z)\nabla f = \begin{pmatrix} 2(\sqrt{x^2 + y^2} - R)\frac{x}{\sqrt{x^2 + y^2}} \\ 2(\sqrt{x^2 + y^2} - R)\frac{y}{\sqrt{x^2 + y^2}} \\ 2z \end{pmatrix}

n=ff=1(x2+y2R)2+z2((x2+y2R)xx2+y2(x2+y2R)yx2+y2z)=1r((x2+y2R)xx2+y2(x2+y2R)yx2+y2z)\begin{aligned} \boldsymbol n = -\frac{\nabla f}{\|\nabla f\|} &= -\frac{1}{\sqrt{(\sqrt{x^2 + y^2} - R)^2 + z^2}} \begin{pmatrix} (\sqrt{x^2 + y^2} - R)\frac{x}{\sqrt{x^2 + y^2}} \\ (\sqrt{x^2 + y^2} - R)\frac{y}{\sqrt{x^2 + y^2}} \\ z \end{pmatrix} \\ &= -\frac{1}{r}\begin{pmatrix} (\sqrt{x^2 + y^2} - R)\frac{x}{\sqrt{x^2 + y^2}} \\ (\sqrt{x^2 + y^2} - R)\frac{y}{\sqrt{x^2 + y^2}} \\ z \end{pmatrix} \end{aligned}

接着构造切空间的基底。这是最考验观察力的部分。如果这里的基选取不好,会极大程度加重后续计算难度,出于这里是展示算法,直接给出良好性质的第一个基底

u1=(yx0)\boldsymbol u_1 = \begin{pmatrix} -y \\ x \\ 0 \end{pmatrix}

注意基本的几何事实:u1\boldsymbol u_1 位于切空间 Tp(TR,r)T_{\boldsymbol p}(T_{R,r}) 中,而法向量垂直于切空间,所以可以利用向量积来获取另外一个正交基,长度不纳入考虑,可以移除系数

u2=n×u1=1r(xzyz(x2+y2R)x2+y2)(xzyz(x2+y2R)x2+y2)\boldsymbol u_2 = \boldsymbol n \times \boldsymbol u_1 = -\frac{1}{r} \begin{pmatrix} -xz \\ -yz \\ (\sqrt{x^2 + y^2} - R)\sqrt{x^2 + y^2} \end{pmatrix} \longrightarrow \begin{pmatrix} -xz \\ -yz \\ (\sqrt{x^2 + y^2} - R)\sqrt{x^2 + y^2} \end{pmatrix}

那么此时显然 (u1,u2\boldsymbol u_1, \boldsymbol u_2) 线性独立并成为 Tp(TR,r)T_{\boldsymbol p}(T_{R,r}) 内的基底。

v=t(v1,v2,v3)Tp(TR,r)\boldsymbol v = {}^t(v_1, v_2, v_3) \in T_{\boldsymbol p}(T_{R,r}),则对于满足 γ(0)=p,dγdt(0)=v\boldsymbol \gamma(0) = \boldsymbol p, \frac{d{\boldsymbol \gamma}}{dt}(0) = \boldsymbol vCC^\infty 曲线

γ(t)=(γ1γ2γ3)\boldsymbol \gamma(t) = \begin{pmatrix} \gamma_1 \\ \gamma_2 \\ \gamma_3 \end{pmatrix}

代入可得

n(γ)=1r((γ1γ2γ3)Rγ12+γ22(γ1γ20))\boldsymbol n(\boldsymbol \gamma) = -\frac{1}{r} \left( \begin{pmatrix} \gamma_1 \\ \gamma_2 \\ \gamma_3 \end{pmatrix} - \frac{R}{\sqrt{\gamma_1^2 + \gamma_2^2}} \begin{pmatrix} \gamma_1 \\ \gamma_2 \\ 0 \end{pmatrix} \right)

进而

Σp(v)=dndt(γ(t))t=0=1r((γ1γ2γ3)+R(γ1γ1+γ2γ2)(γ12+γ22)3/2(γ1γ20)Rγ12+γ22(γ1γ20))t=0=1r(v+R(xv1+yv2)(x2+y2)3/2(xy0)Rx2+y2(v1v20))\begin{aligned} \Sigma_{\boldsymbol p}(\boldsymbol v) = -\frac{d\bold n}{dt}(\boldsymbol \gamma(t)) \bigg |_{t=0} &= \frac{1}{r} \left( \begin{pmatrix} \gamma_1' \\ \gamma_2' \\ \gamma_3' \end{pmatrix} + \frac{R(\gamma_1 \gamma_1' + \gamma_2 \gamma_2')}{(\gamma_1^2 + \gamma_2^2)^{3/2}} \begin{pmatrix} \gamma_1 \\ \gamma_2 \\ 0 \end{pmatrix} - \frac{R}{\sqrt{\gamma_1^2 + \gamma_2^2}} \begin{pmatrix} \gamma_1' \\ \gamma_2' \\ 0 \end{pmatrix} \right) \bigg |_{t=0} \\ &= \frac{1}{r} \left( \boldsymbol v + \frac{R(x v_1 + y v_2)}{(x^2 + y^2)^{3/2}} \begin{pmatrix} x \\ y \\ 0 \end{pmatrix} - \frac{R}{\sqrt{x^2 + y^2}} \begin{pmatrix} v_1 \\ v_2 \\ 0 \end{pmatrix} \right) \end{aligned}

代入基底计算

Σp(u1)=1r(1Rx2+y2)u1\Sigma_{\boldsymbol p}(\boldsymbol u_1) = \frac{1}{r} (1 - \frac{R}{\sqrt{x^2 + y^2}}) \boldsymbol u_1

Σp(u2)=1ru2\Sigma_{\boldsymbol p}(\boldsymbol u_2) = \frac{1}{r} \boldsymbol u_2

所以可得表现行列

Σp=1r(1Rx2+y2001)\Sigma_{\boldsymbol p} = \frac{1}{r} \begin{pmatrix} 1 - \frac{R}{\sqrt{x^2 + y^2}} & 0 \\ 0 & 1 \end{pmatrix}

注意此处因为我们挑选的第一个基底性质足够好,才使得后面计算出来的表现行列直接就是对角行列,不然的话还要对角化一遍。最后得到主曲率(特征值)和高斯曲率,平均曲率

κ1=1r,κ2=1r(1Rx2+y2)\kappa_1 = \frac{1}{r}, \quad \kappa_2 = \frac{1}{r}(1 - \frac{R}{\sqrt{x^2 + y^2}})

K(p)=κ1κ2=1r2(1Rx2+y2)K(\boldsymbol p) = \kappa_1 \kappa_2 = \frac{1}{r^2}(1 - \frac{R}{\sqrt{x^2 + y^2}})

H(p)=κ1+κ22=12r(2Rx2+y2)H(\boldsymbol p) = \frac{\kappa_1 + \kappa_2}{2} = \frac{1}{2r}(2 - \frac{R}{\sqrt{x^2 + y^2}})

# 曲率与曲面形状

本节我们研究一下曲率 K(p)K(\boldsymbol p)H(p)H(\boldsymbol p) 究竟如何决定点 p\boldsymbol p 附近的曲面形状。

注意,由于刚体变换并不会改变几何性质。所 i 以我们完全可以为了简化计算而要求

p=(000),n(p)=(001)\boldsymbol p = \begin{pmatrix} 0 \\ 0 \\ 0 \end{pmatrix}, \quad \boldsymbol n(\boldsymbol p) = \begin{pmatrix} 0 \\ 0 \\ 1 \end{pmatrix}

此时曲面 SS 在原点与 xyxy 平面相切

对于曲面方程 ff,由于

f(p)=(001)0\nabla f(\boldsymbol p) = \begin{pmatrix} 0 \\ 0 \\ 1 \end{pmatrix} \neq \boldsymbol 0

所以由隐函数定理可知,可以在 p\boldsymbol p 的附近找到 CC^\infty 函数 z=g(x,y)z = g(x,y),使得 SS 成为 z=g(x,y)z = g(x,y) 的图像,并且 g(0,0)=0g(0,0) = 0

此时由先前所说的隐函数下的曲率计算可知两个基本量为

(EFFG)=(1001),(LMMN)=(guu(0,0)guv(0,0)guv(0,0)gvv(0,0))\begin{pmatrix} E & F \\ F & G \end{pmatrix} = \begin{pmatrix} 1 & 0 \\ 0 & 1 \end{pmatrix} ,\quad \begin{pmatrix} L & M \\ M & N \end{pmatrix} = \begin{pmatrix} g_{uu}(0,0) & g_{uv}(0,0) \\ g_{uv}(0,0) & g_{vv}(0,0) \end{pmatrix}

即曲率

K(p)=guu(0,0)gvv(0,0)guv(0,0)2K(\boldsymbol p) = g_{uu}(0,0)g_{vv}(0,0) - g_{uv}(0,0)^2

H(p)=guu(0,0)+gvv(0,0)2H(\boldsymbol p) = \frac{g_{uu}(0,0) + g_{vv}(0,0)}{2}

回想一下数学分析中学的多元函数的极值问题,就可以知道

  • K(p)>0K(\boldsymbol p) > 0 时,ggp\boldsymbol p 处取极值,且 H(p)>0H(\boldsymbol p) > 0 时取极小值,H(p)<0H(\boldsymbol p) < 0 时取极大值
  • K(p)<0K(\boldsymbol p) < 0 时,ggp\boldsymbol p 处不取极值

所以 K,HK,H 可以反映这一点以及周边的弯曲情况

  • 如果 K(p)>0K(\boldsymbol p) > 0,称 p\boldsymbol p椭圆点 (Elliptic point)「楕円点」p\boldsymbol p 附近的曲面像一个碗(H(p)>0H(\boldsymbol p) > 0 时朝着 n-\boldsymbol n 的方向凸)或者一个倒扣的碗(H(p)<0H(\boldsymbol p) < 0 时朝着 n\boldsymbol n 的方向凸)
  • 如果 K(p)<0K(\boldsymbol p) < 0,称 p\boldsymbol p双曲点 (Hyperbolic point)「双曲点」p\boldsymbol p 附近的曲面像一个马鞍
  • 如果 K(p)=0K(\boldsymbol p) = 0,称 p\boldsymbol p抛物点 (Parabolic point)「放物点」p\boldsymbol p 附近的曲面像一个折纸

曲率与曲面形状

接下来我们看一下主曲率又可以做什么

如果令 κ1,κ2\kappa_1, \kappa_2SS 的主曲率,意味着对于形算子矩阵

Σp=(guu(0,0)guv(0,0)guv(0,0)gvv(0,0))\Sigma_{\boldsymbol p} = \begin{pmatrix} g_{uu}(0,0) & g_{uv}(0,0) \\ g_{uv}(0,0) & g_{vv}(0,0) \end{pmatrix}

存在一个一个 2 阶正交矩阵 PP,使得(参照线性代数)

Σp=P(κ100κ2)P1\Sigma_{\boldsymbol p} = P \begin{pmatrix} \kappa_1 & 0 \\ 0 & \kappa_2 \end{pmatrix} P^{-1}

利用这个 PP,我们取变量代换

(uv)=P(u~v~)\begin{pmatrix} u \\ v \end{pmatrix} = P \begin{pmatrix} \tilde{u} \\ \tilde{v} \end{pmatrix}

(这实际上效果是旋转)

那么在 (u,v)=(0,0)(u,v) = (0,0) 附近用 Taylor 展开到二次项的时候,会发现

g(u,v)(0,0)12guu(0,0)u2+guv(0,0)uv+12gvv(0,0)v2=12(u,v)(guu(0,0)guv(0,0)guv(0,0)gvv(0,0))(uv)=12(u~,v~)PTΣpP(u~v~)=12(u~,v~)(κ100κ2)(u~v~)=12(κ1u~2+κ2v~2)\begin{aligned} g(u,v) \bigg |_{(0,0)} &\simeq \frac{1}{2} g_{uu}(0,0) u^2 + g_{uv}(0,0) uv + \frac{1}{2} g_{vv}(0,0) v^2 \\ &= \frac{1}{2} (u,v) \begin{pmatrix} g_{uu}(0,0) & g_{uv}(0,0) \\ g_{uv}(0,0) & g_{vv}(0,0) \end{pmatrix} \begin{pmatrix} u \\ v \end{pmatrix} \\ &= \frac{1}{2} (\tilde{u}, \tilde{v}) P^T \Sigma_{\boldsymbol p} P \begin{pmatrix} \tilde{u} \\ \tilde{v} \end{pmatrix} \\ &= \frac{1}{2} (\tilde{u}, \tilde{v}) \begin{pmatrix} \kappa_1 & 0 \\ 0 & \kappa_2 \end{pmatrix} \begin{pmatrix} \tilde{u} \\ \tilde{v} \end{pmatrix} \\ &= \frac{1}{2} (\kappa_1 \tilde{u}^2 + \kappa_2 \tilde{v}^2) \end{aligned}

从线性代数的角度考虑,主曲率方向就是在优化计算时,我们想寻求的那个最优基底

几何性质上,如果 κ1=κ2\kappa_1 = \kappa_2,称 p\boldsymbol p肚脐点 (navel point)「臍点」
并且此时 H2=KH^2 = K

示例
球面上的每一个点都是肚脐点且也是椭圆点

命题
p\boldsymbol p 为肚脐点 Σp\iff \Sigma_{\boldsymbol p} 为标量倍映射

证明

(\Rightarrow) 设 κ1=κ2=κ\kappa_1 = \kappa_2 = \kappa,则对于对角化使用的正交矩阵 PP,有

Σp=P(κ00κ)P1=κPP1=κidTpS\Sigma_{\boldsymbol p} = P \begin{pmatrix} \kappa & 0 \\ 0 & \kappa \end{pmatrix} P^{-1} = \kappa P P^{-1} = \kappa \mathrm{id}_{T_{\boldsymbol p}S}

(\Leftarrow) 设 Σp=κidTpS\Sigma_{\boldsymbol p} = \kappa \mathrm{id}_{T_{\boldsymbol p}S},那显然有 Σp\Sigma_{\boldsymbol p} 的两个特征值均为 κ\kappa

我们实际上可以证明,如果曲面 SS 上的每一个点都是肚脐点,那么 SS 一定是球面或者平面的一部分