对各顶点已经有法向量信息的点云或mesh,可以使用该方法估计一个区域附近的Shape Operator,进而得到主曲率等二阶信息。
下面以三角mesh中求Shape Operator为例,简要介绍这种方法。
Assumption
在每个小三角形中:
- 有一个局部的参数化映射f和对应的参数域定义域U,使得f(U)就是这个小三角区。
- 三角形三个顶点切平面近似平行(每个顶点上的法向量(预先给定)未必平行,因此是“近似平行”)。
- 存在局部映射f使得三个顶点的切平面(同时也近似是这三个点构成的平面)中的基底fu,fv是单位正交基,即第一基本形是二阶单位阵。
Derivation
由假设有S=(dfTdf)−1dfTdNdf=dfTdNdf。
则对某个使用单位正交基fu,fv的切平面内某条向量的二维坐标表示X∈R2,有
SdfTdfX=dfTdNdfdfTdfX=dfTdNdfX
记Y=dfX∈R3,Δn=dNY,即有:
SdfTY=dfTΔn(*)
这刻画了向某方向移动一个微元位移Y后,法向量的变化量(即Δn)。
Estimation
我们把三个顶点记为p0,p1,p2,点上的单位法向量记为n0,n1,n2,这个公共切平面的单位正交基为ξu,ξv,则可以得到相应的微元位移e0=p2−p1(对应上面的Y)和单位法向量变化量,于是列出过定的方程组,再最小二乘法等得到一个对S的估计,再用这个估计求主曲率等各种参数。(参考下图。图源:ML Meets Geometry)
Less Assumption
其实假设三(第一基本形是单位阵)这个要求是完全没有必要理会的。没有这条假设的情况下,精确的(*)式为STdfTY=dfTΔn。因此用上面的估计方法可以得到对Shape Operator转置的估计,如果要得到S只用转置回来就成;如果只是估计主曲率等等,则由于转置矩阵和原矩阵有相同的特征值,于是连这步多余的“转置”操作也不需要。、
推导:
LHS
=STdfTY=dfTdNdf(dfTdf)−1dfTdfX=dfTdNdfX=dfTΔn
=RHS