Conference

Closed-form Cauchy Coordinates and Their Derivatives for 2D High-order Cages

Shibo Liu, Ligang Liu, Xiao-Ming Fu

University of Science and Technology of China

一句话总结

本文推导出面向 2D 高阶输入笼(由任意阶多项式曲线构成)的闭式 Cauchy 坐标及其各阶导数,核心是巧妙运用留数定理配合对数函数求解有理多项式积分,从而支持保角的笼变形与点到点变形,用户只需拖动 Bézier 控制点即可直观编辑。

研究背景

笼坐标(cage coordinates)通过在稀疏的边界(笼)上指定约束值,将其传播到整个 2D 区域,从而定义标量场或向量场,广泛用于 2D 形状变形、图像上色和艺术编辑。已有笼坐标大致分两类:一类是插值型重心坐标,如均值坐标、调和坐标,用户在笼顶点指定值后内部点由加权组合插值得到;另一类除边界值外还控制边界导数(法向),如 Green 坐标和复数值 Cauchy 坐标,二者在 2D 中被证明等价,且都天然产生保角变形。

近期的立方均值坐标、多项式 Green 坐标和多项式 Cauchy 坐标把传统方法推广到”笼边可从直线段变形为高阶多项式曲线”的场景,但这些方法的输入笼仍局限于直边。与直边笼相比,高阶输入笼(如用 Bézier 曲线表示)有三个优势:能更高保真地贴合原始形状、以更少参数实现类似 CAD 自由曲线的直观编辑、并且边界附近变形更光滑。

已有工作虽把 Cauchy 坐标扩展到高阶笼,但需要一个中间直边笼,并依赖数值方法求解从中间笼到输入笼映射的逆。这带来两个缺陷:一是坐标及其导数没有闭式表达,无法支持点到点变形;二是对高阶输入笼施加了不直观的几何约束,无法为任意包围形状的高阶输入笼计算有效坐标。本文正是要解决”高阶输入笼缺少闭式 Cauchy 坐标”这一根本问题。

方法

从经典 Cauchy 坐标出发

方法建立在 Cauchy 积分公式之上:定义在带简单闭边界 \(\partial\Omega\) 的平面区域上的全纯函数,完全由其在边界上的取值决定。将连续函数 \(f\) 的边界值代入积分公式右端,得到全纯函数

\[u(z) = \frac{1}{2\pi i}\int_{\partial\Omega}\frac{f(\zeta)}{\zeta-z}\,d\zeta, \quad z\in\Omega,\]

这一从 \(f\) 到 \(u\) 的变换即 Cauchy 变换。经典 Cauchy 坐标把线性笼变形为线性笼;多项式 Cauchy 坐标把直边 \(e_j\) 变形为 \(n_j\) 阶多项式曲线 \(f^{new}(z_{e_j}(t)) = \sum_{k=0}^{n_j} B_k^{n_j}(t)\, p_{e_j,k}^{new}\),其中 \(B_k^{n_j}(t)\) 是 Bernstein 多项式,\(p_{e_j,k}^{new}\) 是控制点。

高阶输入笼的坐标

本文的关键推广是把输入边 \(e_j\) 本身也表示为 \(m_j\) 阶 Bézier 曲线 \(z_{e_j}(t)=\sum_{k=0}^{m_j}B_k^{m_j}(t)\,p_{e_j,k}^{old}\)。代入 Cauchy 变换后,变形函数写为

\[u(z) = \frac{1}{2\pi i}\sum_{j=1}^{n}\sum_{k=0}^{n_j}\left(\int_0^1 \frac{B_k^{n_j}(t)\,z_{e_j}'(t)}{z_{e_j}(t)-z}\,dt\right) p_{e_j,k}^{new},\]

括号内的积分记为 \(\alpha_{e_j,k}(z)\),即控制点 \(p_{e_j,k}^{new}\) 对应的 Cauchy 坐标。其 \(l\) 阶导数为

\[\frac{d^l \alpha_{e_j,k}(z)}{dz^l} = l!\int_0^1 \frac{B_k^{n_j}(t)\,z_{e_j}'(t)}{(z_{e_j}(t)-z)^{l+1}}\,dt,\]

导数的可用性正是点到点变形的基础。作者还借助最大模原理指出:由于 \(u(z)-z\) 全纯,最大变形位移出现在边界上,因此越贴近笼的区域变形响应越强——这为”笼应紧贴形状”提供了理论依据。此外由 Bell 的定理可推出一条引理:\(u\) 在边界上全纯,当且仅当 \(f\) 把光滑段映为光滑段、且在非光滑顶点处作相似变换。高阶笼能用光滑边紧紧包住形状,因而能获得边界附近光滑的变形,这是直边笼做不到的。

核心贡献:用留数定理求有理多项式积分

坐标及其导数的被积函数都是有理多项式。作者的核心贡献在于:不去求原函数,而是创造性地用留数定理求出这类积分的解析解。设分母 \(h(t)\) 是 \(l\) 阶多项式,问题归结为计算 \(\int_0^1 t^k/h(t)\,dt\)。

其主定理给出:若 \(h(t)\) 有 \(m\le l\) 个不同根 \(\{\zeta_j\}\),则

\[\int_0^1 \frac{t^k}{h(t)}\,dt = \sum_{j=1}^{m}\mathrm{Res}(S_k(\zeta),\zeta_j),\]

其中 \(S_k(\zeta)=s_k(\zeta)/h(\zeta)\),而

\[s_k(\zeta) = \zeta^k\left(\log\left(1-\frac{1}{\zeta}\right)+\sum_{j=1}^{k}\frac{1}{j\zeta^j}\right).\]

证明的巧思有二:一是引入对数项 \(\log(1-1/\zeta)=\log(1-\zeta)-\log(-\zeta)\),它在线段 \([0,1]\) 外保持单值全纯分支,且当积分路径沿线段上下两岸走时二者相差 \(2\pi i\),恰好”筛选”出 \([0,1]\) 上的积分;二是额外的 \(\sum 1/(j\zeta^j)\) 项保证 \(S_k\) 在无穷远处的留数为零,使大圆上的积分随半径趋于零而消失。该方法能计算任意有理多项式的积分,因此还能自然扩展到有理多项式曲线(rational polynomial cages)构成的输入笼。

实现要点

作者给出了计算坐标的算法。对简单极点用 \(\mathrm{Res}(S_k(\zeta),\zeta_j)=s_k(\zeta_j)/h_{j,1}(\zeta_j)\);对重极点用高阶导数公式(实践中计算 \(\alpha_{e_j,k}(z)\) 几乎不出现重根)。为高效计算,利用递推关系 \(s_{k+1}(\zeta)=\zeta s_k(\zeta)+\frac{1}{k+1}\),从而

\[\mathrm{Res}(S_{k+1}(\zeta),\zeta_j)=\zeta_j\,\mathrm{Res}(S_k(\zeta),\zeta_j)+\frac{1}{k+1}\frac{1}{h_{j,1}(\zeta_j)}.\]

二次和三次曲线有闭式求根公式,四次以上需数值求根。作者分析了对数函数的数值良态性,指出它仅在 \(\zeta=0\) 或 \(\zeta=1\)(即 \(z\) 落在边端点)时病态,故对 \(z\notin\partial\Omega\) 均良定义;实测最大数值误差从未超过 \(10^{-11}\)。该框架还能扩展到高阶 Green 坐标——把 Michel 和 Thiery 的多项式 Green 坐标推广到高阶输入笼所需的积分同样可用该定理求解。

实验结果

方法用 C++ 实现,在一台 4.00 GHz Intel Core i7-4790K、16 GB 内存的台式机上测试。所有笼变形和点到点变形均实时完成,仅预计算需要少量时间。预计算中求根 \(\{\zeta_j\}\) 占主要耗时(二次曲线约 24%、三次曲线约 33%);一旦求出根,就可以先算到较高指定阶数的积分,让艺术家在最大阶数内自由调整曲线阶数而无需重算坐标。以含 24 条三次曲线、内部包围 27000 个点的 Crab 模型为例,预计算内存不超过 90 MB。

对比实验说明了高阶笼的价值:

  • 相较经典 Cauchy 坐标(Weber 等,直边到直边),线性笼要表示复杂曲线形状需要过多自由度(例如某形状线性笼需 151 段而三次笼仅需 13 条三次曲线加 5 条直线),且笼与形状之间的空隙导致边界附近变形不光滑;高阶笼几何贴合度高,变形更光滑自然。
  • 相较立方均值坐标,本文坐标保角,对同一线性笼赋不同非线性参数化可得多种保角变形,而立方均值坐标结果畸变较大。
  • 相较多项式 Cauchy 坐标,对方需要中间笼加事后调整、且无闭式解,对窄区域(如章鱼爪之间、大象后腿之间)难以避免自交而失去双射性导致失败;本文只需一个笼、可直接变形、闭式求解,误差更小、速度更快,并支持点到点变形。

亮点与局限

亮点:

  • 首次为任意阶多项式曲线构成的 2D 高阶输入笼给出闭式 Cauchy 坐标及其导数,无需中间笼、无需求逆映射,直接支持保角笼变形和点到点变形。
  • 用留数定理配合对数函数求解有理多项式积分是通用而优雅的核心技术,不仅解决 Cauchy 坐标问题,还能扩展到高阶 Green 坐标和有理多项式曲线笼。
  • 闭式表达带来高精度(误差 \(\le 10^{-11}\))与高效率,变形实时、预计算内存小,用户可直观拖动 Bézier 控制点编辑。

局限:

  • 仅适用于 2D 笼,而实际图形应用中 3D 模型更普遍,如何推广到 3D 高阶笼是重要的开放问题。
  • 保角性与插值性存在天然冲突,变形不总是紧跟变形后的笼,可能增加用户编辑难度;一种可能的缓解是允许用户指定可放松保角约束的区域,但高阶笼下的相应方法仍需探索。

延伸思考

本文最值得借鉴的是”绕过原函数、直接用留数定理算积分”这一思路:当积分的原函数难以显式表达时,通过精心设计被积函数(引入对数项约束积分区间、追加修正项消去无穷远留数)和积分路径,把定积分转化为可解析计算的留数之和。这种技巧对图形学中大量依赖边界积分的坐标/势函数推导(Green、biharmonic、Somigliana 等)都有潜在的迁移价值。另一方面,高阶笼”少参数、紧贴合、边界光滑”的优势提示:在交互式编辑中,提升几何表示的阶数往往比堆叠更多低阶元素更能同时改善编辑体验与结果质量,这与 CAD 自由曲线建模的理念一脉相承。将该框架推广到 3D 高阶笼、以及在保角与插值之间提供可控折中,会是很有前景的后续方向。