<<Polygon Mesh Processing>>閱讀筆記(3) 微分幾何

曲線

曲線是二維空間上可微分的一維流形。曲線可以用參數(shù)方程表示為如下形式:

其中x和y分別是關(guān)于u的可微函數(shù),那么曲線在某一點(diǎn)的切向量則為各分量的一階導(dǎo)數(shù)組成的向量,即:

借由上式,如果p'(u)在u處不為0,則把這一點(diǎn)成為曲線的正則點(diǎn)。曲線上的點(diǎn)處處正則的曲線稱(chēng)為正則曲線(Regular Curve)。

下式可以求曲線在某一點(diǎn)的法向量的值:

同樣的曲線是可以通過(guò)參數(shù)變換使用不同的參數(shù)來(lái)表示的。曲線的微分幾何關(guān)注諸如弧長(zhǎng)、曲率之類(lèi)的,獨(dú)立于特定參數(shù)之外的屬性,也就是說(shuō)無(wú)論參數(shù)如何變換,這些屬性的值都是相等的。

弧長(zhǎng)

對(duì)于上述曲線,起始點(diǎn)a到曲線上任意點(diǎn)u之間的弧長(zhǎng)可以表示為:

即弧長(zhǎng)是切向量長(zhǎng)度對(duì)曲線參數(shù)的積分??梢园l(fā)現(xiàn),弧長(zhǎng)獨(dú)立與特定參數(shù),并且將參數(shù)u從區(qū)間[a, b]映射到了區(qū)間[0, L] (其中L是曲線的弧長(zhǎng))。

可以發(fā)現(xiàn)這是一個(gè)變上限積分函數(shù),對(duì)兩側(cè)同時(shí)求導(dǎo)得到:

當(dāng)切向量的模為1,即曲線的切向量為單位向量場(chǎng)的時(shí)候,參數(shù)u就是曲線的弧長(zhǎng)參數(shù)了

曲率

曲線的曲率(curvature)就是針對(duì)曲線上某個(gè)點(diǎn)的切線方向角對(duì)弧長(zhǎng)的轉(zhuǎn)動(dòng)率,即單位弧長(zhǎng)內(nèi)曲線轉(zhuǎn)過(guò)的角度。

假設(shè)正則曲線的參數(shù)方程的參數(shù)為其弧長(zhǎng),圖像如上圖所示,α表示是曲線上的切向量(即p(s)的導(dǎo)數(shù)p’(s)),根據(jù)定義曲線的曲率為:

其中θ表示的是α(s)和α(s+Δs)兩個(gè)向量的夾角,要證明這個(gè)式子只需要按照導(dǎo)數(shù)定義展開(kāi)即可:

.

對(duì)于曲率還有另外一個(gè)很重要且相關(guān)的屬性,即曲率半徑,即把那一段曲線盡可能地微分,直到最后近似為一個(gè)圓弧,此圓弧所對(duì)應(yīng)的半徑即為曲線上該點(diǎn)的曲率半徑。這個(gè)圓弧所對(duì)應(yīng)的圓一般稱(chēng)作:Osculating Circle(密切圓)。

我們知道弧長(zhǎng)與半徑的比值是弧度。對(duì)于這一段圓弧曲率的值為弧度于弧長(zhǎng)的比值,而半徑的值為弧長(zhǎng)于弧度的比值。

對(duì)于曲率曲率半徑,可以得到下面的關(guān)系:

曲面

曲面的參數(shù)化表示

以地球地圖的展開(kāi)為例,地球表面是一個(gè)閉合的曲面,為了印刷地圖,一般需要將其表面進(jìn)行展開(kāi)。

展開(kāi)之前,首先沿著子午線將其“切開(kāi)”,然后按下面這個(gè)樣子進(jìn)行展開(kāi):

可以發(fā)現(xiàn),北極點(diǎn)被變換為了線段AC,而南極點(diǎn)被變換了線段BD

這樣的一個(gè)球面,假設(shè)半徑為R,有兩種坐標(biāo)表示的方法,分別是:(x, y, z)和(θ, ?)

前一種非常好理解,即球面某一點(diǎn)在3維笛卡爾坐標(biāo)系下的坐標(biāo),那么球面的可以用下列隱式方程表示:

通過(guò)該方程能夠很快速地判斷空間中某個(gè)點(diǎn)與球面地位置關(guān)系。

后一種坐標(biāo)中有兩個(gè)參數(shù)θ?,其意義可以通過(guò)下面這張圖來(lái)理解(和球坐標(biāo)非常類(lèi)似)

理解后就不難得出兩種坐標(biāo)的轉(zhuǎn)換方法:

其中θ的取值范圍為[0, 2π],?的取值范圍為[-0.5π, 0.5π],可以發(fā)現(xiàn)通過(guò)這張表示方法將“方形”區(qū)域映射到了一個(gè)球面上。

通過(guò)θ?這兩個(gè)參數(shù),可以畫(huà)出兩組類(lèi)似經(jīng)緯度的平行線,通過(guò)這些平行線,可以清楚的觀察出球面不同部分被扭曲的程度。

度量性質(zhì)(Metric Property)

假設(shè)一個(gè)三維曲面的參數(shù)方程如下

其中x,y,z是關(guān)于參數(shù)u,v的可微函數(shù),Ω是參數(shù)u,v的定義域。

同曲線類(lèi)似,曲面的度量是由它的一階導(dǎo)數(shù)決定。x關(guān)于參數(shù)u,v的偏導(dǎo)數(shù)如下

這兩個(gè)偏導(dǎo)數(shù)表示的是如下兩條曲線上的切向量

很明顯這兩個(gè)方程分別是當(dāng)曲面方程的某個(gè)參數(shù)固定后,以另一個(gè)參數(shù)為參數(shù)的方程。

通過(guò)上面這張圖,能夠很清晰的看出Cv,Cu,Xv,Xu的具體含義。

如果想要表示表示在平面某一點(diǎn)的法向量也很簡(jiǎn)單,曲線方程在某一點(diǎn)關(guān)于參數(shù)u,v的偏導(dǎo)數(shù)確定了兩條切向量Xv,Xv,將這兩個(gè)向量做叉積即可得到曲面在這一點(diǎn)的法向量

上面的導(dǎo)數(shù)方向只有沿兩個(gè)參數(shù)的方向,如果要求曲面關(guān)于某一點(diǎn)在任意方向的導(dǎo)數(shù),可以引入方向?qū)?shù)的概念。

在求解方向?qū)?shù)的時(shí)候需要給定一個(gè)方向向量,由于曲面方程以參數(shù)方程的形式給出,先定義一個(gè)在曲線方程參數(shù)空間u,v下的方向向量

那么曲面通過(guò)這一點(diǎn),在參數(shù)空間上沿上述方向前進(jìn)的曲線方程可以表示為

這時(shí)曲面在點(diǎn)(u0, v0)處,w方向的方向?qū)?shù)為:

向量w是定義在三維空間下的,而已知的方向向量是在二維參數(shù)空間上的,現(xiàn)在要將其從參數(shù)空間變換為曲面上的切向量:

只需要應(yīng)用到雅可比矩陣即可完成這個(gè)變換:

此時(shí)雅可比矩陣的值為:

曲面的第一基本型

通過(guò)上面求解方向?qū)?shù)的過(guò)程可以發(fā)現(xiàn),雅可比矩陣代表了一種從參數(shù)的定義域空間到曲面坐標(biāo)空間的變換。通過(guò)雅可比矩陣可以知道一些量,諸如角度、距離和面積等,在這兩個(gè)空間之間的映射關(guān)系。

假設(shè)又兩個(gè)單位向量w1,w2,這兩個(gè)向量之間夾角的余弦值等于兩向量的內(nèi)積。

向量在曲面空間和參數(shù)空間下的表示形式不同,單數(shù)可以明確的一點(diǎn)是,無(wú)論如何表示,向量之間的夾角是不會(huì)變的。

在上面的等式中,J乘以J的轉(zhuǎn)置這一部分就被稱(chēng)為曲面的第一基本型

借由I,要通過(guò)參數(shù)來(lái)表示下面曲線的弧長(zhǎng):

首先觀察曲面的弧長(zhǎng)公式:

接下來(lái),用參數(shù)t來(lái)表示切向量w (ut, vt),則其模長(zhǎng)為:

最后帶入計(jì)算可以得到弧長(zhǎng)公式:

同理,可以用下面的方法求得曲面的面積:

曲面的曲率

曲面的曲率的定義是由曲線的曲率的定義擴(kuò)充而來(lái)的,對(duì)于曲面上的一點(diǎn),存在無(wú)數(shù)個(gè)切向量。對(duì)于曲面上的一點(diǎn)p,以及一條切向量t,這時(shí)可以定義曲率為:切向量t和曲面在這一點(diǎn)的法向量所成平面與曲面相交形成的直線在點(diǎn)p處的曲率。

將這個(gè)曲率寫(xiě)成式子為:

其中II為第二基本型

上面關(guān)于曲面曲率的函數(shù)在切線方向變化的時(shí)候會(huì)有兩個(gè)極值(極大值和極小值),一般稱(chēng)它們?yōu)?strong>主曲率(principal curvatures),如果兩極值不相等,就把取這兩個(gè)極值時(shí)的兩個(gè)切向量稱(chēng)為主方向(principal directions)。如果兩極值相等,則曲面上這一點(diǎn)稱(chēng)為臍點(diǎn)(umbilical),曲面上這一點(diǎn)的所有切向量都可以稱(chēng)為主方向(principal directions),并且曲面這一點(diǎn)各方向的曲率相等。特殊地,當(dāng)且僅當(dāng)曲面為球面或平面時(shí),其上所有的點(diǎn)都是臍點(diǎn)(umbilical)


對(duì)于曲面的兩個(gè)主曲率和其在同一點(diǎn)任意方向的曲率,有如下的關(guān)系:

其中ψ為主方向 t1和指定方向t的夾角??梢钥闯觯娴那蕛H僅由其兩個(gè)主曲率決定,這一點(diǎn)任意方向的法曲率都是這兩個(gè)主曲率的凸組合(convex combination),另外還能得出的一點(diǎn)是主方向永遠(yuǎn)是相互正交的。


曲面的某個(gè)區(qū)域內(nèi)的性質(zhì)同樣可以用曲率張量來(lái)表示,曲率張量 C可以用下面的方法得到:

其中D是對(duì)角線元素為κ1,κ2,0的三階方陣,P也為三階方陣,由t1,t2,n三個(gè)列向量組成。


另外,還有兩種廣泛使用的描述曲率的方式:

  • 平均曲率
  • 高斯曲率

高斯曲率可以將曲面上的點(diǎn)分為3類(lèi):

  • 橢圓點(diǎn)(elliptical point) K > 0:橢圓點(diǎn)在其附近的區(qū)域上通常是凸出的

  • 雙曲線點(diǎn)(hyperbolic point) K < 0:雙曲點(diǎn)在其附近的區(qū)域上通常是馬鞍形

  • 拋物線點(diǎn)(parabolic point) K = 0:拋物線點(diǎn)通常在橢圓曲線和雙曲線區(qū)域的分界線處

高斯曲率和平均曲率通常用在曲面的可視化分析上

左圖為平均曲率,右圖為高斯曲率

內(nèi)蘊(yùn)幾何學(xué)(Intrinsic geometry)

在微分幾何中,那些只依賴(lài)于第一基本型的屬性被稱(chēng)為是內(nèi)蘊(yùn)的(Intrinsic)。直觀上來(lái)說(shuō)它們可以?xún)H僅通過(guò)曲面二維特征來(lái)導(dǎo)出。例如曲面上曲線的長(zhǎng)度,角度等都是內(nèi)蘊(yùn)的(Intrinsic)

對(duì)于高斯曲率平均曲率,前者在等距變換下是不變的,所以它是內(nèi)蘊(yùn)的(Intrinsic),即高斯曲率是可以由第一基本型直接決定的;而后者則不是,它依賴(lài)于曲面。

內(nèi)蘊(yùn)的(Intrinsic)通常被用來(lái)取表示參數(shù)的獨(dú)立性。

拉普拉斯算子

一般稱(chēng)某函數(shù)梯度的散度為拉普拉斯算子,對(duì)于二元函數(shù)f(u, v),其在歐式空間上的二階差分算子(拉普拉斯算子)可以寫(xiě)為:

拉普拉斯算子還可以推廣到二階流形曲面S上,其推廣形式稱(chēng)為拉普拉斯-貝爾特拉米算子,定義為:

對(duì)于曲面上某一個(gè)具體的點(diǎn)x,其拉普拉斯-貝爾特拉米算子和其平均曲率存在下面的關(guān)系:

雖然這個(gè)式子說(shuō)明平均曲率(非內(nèi)蘊(yùn)的)和拉普拉斯-貝爾特拉米算子之間存在某種關(guān)系,但是拉普拉斯-貝爾特拉米算子本身僅取決于第一基本型,是內(nèi)蘊(yùn)的。

離散微分算子

由于3D網(wǎng)格并不是連續(xù)的,而上面的討論是建立在曲面是光滑的基礎(chǔ)之上的。要將上述算子運(yùn)用到3D網(wǎng)格上,需要將網(wǎng)格看作一個(gè)很粗糙的曲面,然后通過(guò)網(wǎng)格數(shù)據(jù)去計(jì)算這個(gè)近似曲面的微分屬性。

局部平均區(qū)域

一般的想法就是計(jì)算網(wǎng)格某個(gè)點(diǎn)以及與其相鄰點(diǎn)的微分屬性的平均值。

當(dāng)網(wǎng)格某個(gè)點(diǎn)以及與其相鄰點(diǎn)組成這個(gè)區(qū)域的面積較大的時(shí)候,通過(guò)計(jì)算平均值得到的微分屬性會(huì)很穩(wěn)定;而面積較小的時(shí)候,精細(xì)的變化則會(huì)被更好的保留。

常用的由下面三種定義這個(gè)面積的方法,其區(qū)別主要是在頂點(diǎn)周?chē)娜切沃腥↑c(diǎn)的方式不同:

重心(左圖),外心(中圖),混合點(diǎn)(右圖)

其中右圖中,當(dāng)三角形為鈍角三角形時(shí)則取中心點(diǎn)對(duì)邊的中點(diǎn),否則取三角形的外心。

法向量

在3D網(wǎng)格中,要計(jì)算某個(gè)三角面的法向量是比較容易的,只需要取兩條邊向量坐叉乘即可:

如果要計(jì)算某個(gè)頂點(diǎn)的法向量,同樣考慮對(duì)頂點(diǎn)周?chē)噜彽娜切蔚姆ㄏ蛄孔黾訖?quán)平均:

權(quán)值αT的取法,一般常用的有下面幾種:

  • αT取常數(shù)1,這樣計(jì)算的時(shí)候就忽略了鄰邊的長(zhǎng)度,三角形的面積,角度。對(duì)于不規(guī)則的網(wǎng)格,計(jì)算的結(jié)果一般都是違反直覺(jué)的。

  • αT取三角形的面積,這樣取的好處是便于計(jì)算(只需要進(jìn)行叉乘運(yùn)算就可以了,還不用對(duì)向量進(jìn)行單位化),不過(guò)這種方法得到的結(jié)果有的時(shí)候也會(huì)出現(xiàn)違反直覺(jué)的情況。

  • αT取鄰邊的夾角,不過(guò)由于計(jì)算過(guò)程涉及到了三角函數(shù),效率上相對(duì)要低一些,不過(guò)效果比前兩者好。

梯度

同樣是基于加權(quán)平均的方法,求解網(wǎng)格中某個(gè)三角形上某一點(diǎn)的坐標(biāo)可以由三個(gè)頂點(diǎn)的梯度根據(jù)重心坐標(biāo)的三個(gè)權(quán)值做加權(quán)平均。

對(duì)于分段線性函數(shù)f來(lái)說(shuō),其在三角形頂點(diǎn)上有對(duì)應(yīng)的值??梢钥紤]用拉格朗日插值法來(lái)表示三角上任意一點(diǎn)的函數(shù)值(u是二維參數(shù)):

由于拉格朗日插值公式的基函數(shù)B具有下面的性質(zhì)

兩邊同時(shí)做梯度運(yùn)算可以得到

消去Bi后原來(lái)的式子為

頂點(diǎn)i處基函數(shù)的梯度為從頂點(diǎn)i處沿著對(duì)邊上高的方向的向量,且向量的模長(zhǎng)為高的倒數(shù),化簡(jiǎn)后(向量旋轉(zhuǎn)90度后除以底邊的長(zhǎng)得到單位向量,再除以高度的結(jié)果,其中底邊長(zhǎng)乘以高度整好為面積的兩倍)為:

代入后可以得到三角形上分段線性函數(shù)的梯度為

離散形式的拉普拉斯算子

  • Uniform形式的拉普拉斯算子

這一種形式直觀上來(lái)說(shuō)就是以中心點(diǎn)i為起點(diǎn),相鄰頂點(diǎn)平均值為終點(diǎn)的向量。

由于平面的平均曲率H為0,這時(shí)算子的結(jié)果應(yīng)該是0,不過(guò)上式的結(jié)果并不一定是非0的,所以這種方法不太適合用在非等距網(wǎng)格上。。

這種方法只考慮了網(wǎng)格的連接性,所以使用范圍有限。

  • 余切形式的拉普拉斯算子

這種形式更加的精準(zhǔn),直接計(jì)算頂點(diǎn)vi周?chē)钠骄鶇^(qū)域(之前提到過(guò),有若干種取法),然后對(duì)其梯度的散度進(jìn)行曲面積分,然后使用散度定理(高斯公式)進(jìn)行展開(kāi)計(jì)算,最后可以得到:

  • 離散散度

因?yàn)槔绽顾阕拥亩x為是梯度的散度,對(duì)于每一個(gè)三角形T給定一個(gè)向量w(如個(gè)給定分段線性函數(shù)f下的梯度向量),則其散度為

離散曲率

根據(jù)上面的式子,可以得到在離散形式下的平均曲率

在[Meyer et al. 03]這篇文章中提到了離散形式下高斯曲率的表示方式:

根據(jù)高斯曲率、平均曲率和兩個(gè)主曲率的關(guān)系,可以得到主曲率的計(jì)算方法:

離散形式的曲率張量

其中β(e)表示和邊e相鄰三角形所在平面的有方向的二面角,e∩A(v)表示邊e在區(qū)域A中的長(zhǎng)度,ē指邊e的單位向量。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容