DDG课程笔记4-曲面参数化

这个系列是对CMU离散微分几何课程(CMU CS 15-458/858: Discrete Differential Geometry)的总结和回顾。本节我们介绍基于共形映射的曲面参数化方法。

Overview

曲面参数化可以理解为将空间曲面展开成平面的过程。在日常生活中曲面参数化最常见的例子是世界地图,这里我们将球面展开成平面矩形或是其他平面图形。

对曲面进行参数化时可能会导致各种各样的扭曲。还是以世界地图为例,地图上的面积并不能表示实际的面积大小:在地图上格陵兰岛看着比澳大利亚要大,但实际的面积却要小得多(Greenland: 2.166m km², Australia: 7.692m km²)。

显然,我们希望参数化后的曲面能够保持原始曲面上的几何量,比如说角度、长度、面积等。其中能够保证角度在变换前后保持不变的映射称为共形映射(conformal map),稍后我们会介绍共形映射的各种性质。使用共形映射的好处之一我们有非常扎实的理论保证,比如说我们可以保证对于开放曲面共形映射是一定存在的;同时基于共形映射的参数化方法在计算上也大多比较高效,很多算法甚至可以做到实时;此外共形映射往往会得到比较平滑的结果,而其它的参数化方法则不一定能够保证这点。

Conformal Map

Complex Numbers

在这一节我们开始介绍共形映射的相关理论。由于共形映射与复分析有着深刻的联系,因此在正式介绍前首先来补充一些复数的基本知识。我们知道复平面上的点可以表示为实部和虚部的形式:

z=a+bi i2=1

从几何的角度上看,虚数单位i可以理解为将向量逆时针转90

同时复数的代数运算法则也可以理解为平面向量的运算法则:

利用欧拉公式(Euler’s formula)我们还可以把复数表示成极坐标的形式:

eiθ=cosθ+isinθ

此时复数的乘法相当于对向量的长度进行缩放同时对角度进行加减:

z1z2=(r1eiθ1)(r2eiθ2)=(r1r2)ei(θ1+θ2)

Conformal Structure

对于曲面切平面上的向量X,我们可以利用向量叉乘来表示旋转:

N×df(X)

显然旋转后的向量一定也位于切平面上,因此存在一个映射J使得:

df(JX)=N×df(X)

我们称J为映射f诱导的共形结构(conformal structure),具有共形结构的曲面则称为黎曼曲面(Riemann surface)

不难发现共形结构J和虚数单位i起着类似地作用,J也满足i的定义:

JJ=id

其中id表示恒等映射。上式说明对向量X使用两次J相当于将X反向。

Cauchy-Riemann Equation

对于共形映射我们要求切平面上任意两个向量的夹角在变换前后保持不变,实际上我们并不需要考虑所有的夹角只需考虑共形结构J即可。将参数化后的平面用复平面来表示,此时共形映射z:MC满足Cauchy-Riemann方程(Cauchy-Riemann equation):

dz(JX)=i dz(X)

Cauchy-Riemann方程表明在切平面上进行旋转和在参数化平面上进行旋转是一致的,因此曲面上的角度在参数化后保持不变。

Riemann Metrics

此外我们还可以通过黎曼度量来认识共形映射。对于同一个曲面的两个度量g~pgp,如果它们在曲面任意点p上只相差一个系数,则称两个度量是共形等价(conformally equivalent)

g~p=e2u(p)gp

其中e2u(p)说明该系数为正且与点p相关。回忆黎曼度量给出了曲面切平面上内积的定义,我们可以定义曲面上的长度和角度:

|X|=g(X,X) (X,Y)=arccos(g(X,Y)|X||Y|)

不难验证对于共形等价的两个度量,它们关于角度的定义是相同的。

Spectral Conformal Parameterization

本节最后来介绍基于共形映射的曲面参数化算法,限于篇幅和自身水平有限这里仅介绍使用Cauchy-Riemann方程的SCP算法。

Complex Differential Forms

α为曲面上的1-form,利用共形结构的性质可以得到1-form对应的Hodge star算子:

α(X)=α(JX)

同时定义2-form的Hodge star算子为:

ω=ω(X,JX)

上式意为度量面积微元只需要考虑切平面上相互垂直的两个向量XJX

接着定义1-form之间的内积为:

α,β=Mαβ

因此函数的模为:

α=α,α

同时可以证明Hodge star算子不会改变模长(旋转不改变面积):

α=α

然后我们需要将微分形式拓展到复数域上,定义微分形式的共轭为:

(α¯)(X)=(α(X)) (αβ)(X,Y)=(αβ(X,Y))

在此基础上可以定义complex 1-form的内积为:

α,β=ReMα¯β

可以证明上式定义的内积是(半)正定的,而且是Hermitian内积(Hermitian inner product)

α,α0 α,β=β,α

Conformal Parameterization

利用Hodge star算子我们可以将Cauchy-Riemann方程改写为:

dz=idz

在此基础上定义共形能量(conformal energy)为:

EC(z)=14dzidz2

共形能量EC(z)可以描述映射z是否满足Cauchy-Riemann方程,显然对于共形映射其共形能量为0。此时寻找共形映射z等价于最小化共形能量即:

z=argminEC(z)

将共形能量EC(z)进行展开得到:

EC(z)=14||dzi dz||2=14dzi dz,dzi dz=14(dz,dzdz,i dzi dz,dz+i dz,i dz)=12dz,dzi2dz,dz=ED(z)A(z)

其中ED(z)=12dz,dz为映射z对应的Dirichlet能量;A(z)=i2dz,dz=i2Mdz¯dz为曲面参数化后映射到复平面的面积;上式说明共形能量等于Dirichlet能量和参数化后面积的差。为防止出现面积退化为0的情况,我们可以引入约束条件:

z=argminEC(z)s.t. z2=1z,1=0

其中1为恒为1的常值函数。第一个约束表示参数化后曲面不会出现退化的情况,而第二个约束表示参数化后曲面的中心为原点。

Optimization

最后我们来介绍如何求解最小化共形能量。对于Dirichlet能量项,利用Laplace算子可以转换为:

ED(z)=12dz,dz=12Δz,z=12zHΔz

需要说明的是此时的Laplace算子与我们之前定义的符号相反,即Δ=dd。同样地,将面积项展开可以得到:

A(z)=i2Mdz¯dz=i4eijMz¯izjz¯jzi=zHAz

其中M表示曲面的边界。将两项代回原式得到离散后的共形能量:

EC(z)=zH(12ΔA)z=zHCz

进而得到离散后的约束优化问题:

z=argminzHCzs.t. zHz=1zH1=0

不难发现此时优化问题相当于求解复数矩阵C的最小特征只对应的特征向量,可以使用反幂法(inverse iteration)来迭代求解。迭代格式如下:

  1. 初始化向量z0
  2. 求解线性方程:Czi=zi1
  3. 平移到原点:zi=ziz¯i
  4. 进行缩放:zi=zizi
  5. 返回步骤2直至残差r=Czi(ziHCzi)zi2收敛。

由于函数内积与向量内积是不完全等价的,优化问题的第一个约束条件应该修改为:

z2=Mz¯z=zHMz=1

其中M为节点dual cell面积构成的对角矩阵。此时求解特征值问题转化为求解广义特征值:

Cz=λMz

对反幂法进行修改得到最终的迭代格式如下:

  1. 初始化向量z0
  2. w=Mzi1;
  3. 求解线性方程:Czi=w
  4. 平移到原点:zi=ziz¯i
  5. 进行缩放:zi=ziziHMzi
  6. 返回步骤2直至残差r=Czi(ziHCzi)Mzi2收敛。

总结一下,SCP是一种基于共形映射的曲面参数化方法,通过最小化共形能量来寻找共形映射。在网格上我们利用广义特征值迭代来求解最小化共形能量,得到网格顶点到复数域的映射(向量)z,其中z的实部表示顶点在参数化平面的x轴坐标,虚部表示顶点的y轴坐标。

Reference