版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第5章 曲線和曲面曲線和曲面可分為由已知方程式表示的規(guī)則曲線或曲面和用曲線或曲面擬合方法逼近的不規(guī)則曲線或曲面。這些不規(guī)則曲線或曲面一般采用分段的多項式參數(shù)方程來表示,由此形成一條光滑連續(xù)的曲線或曲面稱為樣條曲線或曲面。本章將主要討論參數(shù)樣條曲線和曲面的繪制方法。
5.1曲線和曲面基礎(chǔ)從衛(wèi)星的軌道、導(dǎo)彈的彈道,到汽車和飛機等的外形,直至日常生活中的圖案和花樣設(shè)計,都離不了對曲線的描述和繪制。以至于可以說,幾乎沒有一張設(shè)計圖紙上是沒有曲線的。在我們遇到的各種各樣的曲線中,歸納起來,大概不外乎兩類:一類是我們已經(jīng)比較熟悉的,如圓、橢圓、雙曲線、正弦余弦、概率分布、擺線螺線等等。這類曲線均可以用一個曲線方程式來表示,稱此類曲線為規(guī)則曲線。比如圓的方程可以寫成x2+y2=R2等。而另有一類曲線,我們尚不能確切給出描述整個曲線的方程,它們往往是由一些從實際中測量得到的一系列離散數(shù)據(jù)點用曲線擬合方法來逼近的,稱為不規(guī)則曲線。這些曲線一般采用分段的多項式參數(shù)方程來表示,由此形成一條光滑連續(xù)的曲線稱為樣條曲線或簡稱樣條。常見的參數(shù)樣條曲線有拋物樣條曲線、Hermite插值樣條曲線、Bezier樣條曲線和B樣條曲線等。當(dāng)曲線的數(shù)學(xué)表達(dá)方法確定以后,剩下的問題就是如何把這些曲線繪制出來。要繪制一條指定的曲線函數(shù)的直接方法是用很多短直線段來逼近曲線。繪出的曲線的光滑度和精確度取決于我們所選擇的數(shù)據(jù)點的精度和數(shù)量。點的數(shù)量越多,直線段越短,則連成的曲線愈接近于理想曲線。至于點的數(shù)量取多少,直線段取多長,則取決于我們對所繪制曲線的精度要求和圖形輸出設(shè)備的精度,但我們對所繪制曲線的精度要求不能逾越圖形輸出設(shè)備所實際具有的精度。5.1.1規(guī)則曲線和曲面的3種坐標(biāo)表示法
一般平面曲線常用直角坐標(biāo)、極坐標(biāo)或參數(shù)方程表示,如工程上常用的漸開線、擺線以及正弦余弦曲線等,都是用這三種坐標(biāo)表示的重要曲線。但從計算機圖形學(xué)和計算幾何的角度看,用參數(shù)方程繪制曲線比較方便。實際上繪制任何平面曲線.都要將曲線方程用參數(shù)方程形式表示,即得到曲線上點坐標(biāo)x與y的分別計算式。于是計算出點的坐標(biāo)值,調(diào)用畫線函數(shù)或畫點函救繪出曲線上的所有點,便得到一條曲線。
1.直角坐標(biāo)曲線曲線的直角坐標(biāo)表示,有顯式y(tǒng)=f(x)和隱式f(x,y)
=
0之分。如y=
sin
(x)是顯式表示,而x2
+y2
=
1是隱式表示。無論是哪種表示,都要將其轉(zhuǎn)換成參數(shù)坐標(biāo)表示.即x=x(t)
y=y(t)然后可以開始繪制它的圖形了。下面對曲線的直角坐標(biāo)顯式和隱式兩種表示分別加以討論。
(1)顯式對于顯式表示y=f(x)的曲線轉(zhuǎn)換成參數(shù)坐標(biāo)表示,這是非常容易的,即y=k·x+bx=xy=f(x)這里式子右邊的x看成參數(shù)變量。此兩式便是顯式表示y=f(x)曲線的參數(shù)坐標(biāo)表示。例如正弦曲線y=
sin(x)
是直角坐標(biāo)顯式表示.其參數(shù)坐標(biāo)表達(dá)式為
x=xy=
sin(x)
這時式子右邊的x當(dāng)作參數(shù)變量。這樣給定一個參數(shù)變量x值,就可求得正弦曲線上一個點的坐標(biāo)x與y值。進(jìn)而一點一點地繪出正弦曲線。
(2)隱式一般隱式f(x,y)
=
0的曲線轉(zhuǎn)換成參數(shù)坐標(biāo)表示式是很困難的,如下面隱式曲線4x4–3x3
+
2y2–y–x2(a+x)/(a–x)=0
(a>0)
要表示成參數(shù)坐標(biāo)式,至今未能成功,因此無法使用計算機繪制它的圖形。不過常用的重要曲線基本上都能用參數(shù)坐標(biāo)表示。例如星形線直角坐標(biāo)表示式:
x2/3+y2/3=R2/3
(R正常數(shù))
可寫成參數(shù)坐標(biāo)表示式:
x=Rcos3θy=Rsin3θ(0≤θ≤2π)從而可用計算機繪出其曲線圖。
F(x,y)=ax+by+c=02.極坐標(biāo)曲線對任一極坐標(biāo)曲線ρ=ρ(θ),可利用極坐標(biāo)與直角坐標(biāo)變換關(guān)系式
x=ρcosθy=ρsinθ
將此曲線轉(zhuǎn)換成參數(shù)坐標(biāo)表示為
x=ρ(θ)cosθy=ρ(θ)sinθ這里θ成為參數(shù)坐標(biāo)。
例如,重要曲線阿基米德螺線
ρ=aθ
(a正常數(shù))
極坐標(biāo)與直角坐標(biāo)變換關(guān)系式
x=ρcosθy=ρsinθ
將阿基米德螺線ρ=aθ代入上面兩式,便得
x=aθcosθy=aθsinθ這樣就將阿基米德螺線極坐標(biāo)表示轉(zhuǎn)換成了參數(shù)坐標(biāo)表示。
由阿基米德螺線參數(shù)坐標(biāo)表示式
x=aθcosθy=aθsinθ可以計算出其曲線上點的坐標(biāo)值,然后用這些點的坐標(biāo)值調(diào)用繪圖函數(shù)就可繪出阿基米德螺線曲線圖。
3.參數(shù)坐標(biāo)曲線曲線的參數(shù)坐標(biāo)表示一般為
x=x(t)y=y(t)如彈道曲線
x=V0tcosαy=V0tsinα–gt2/2
(0≤t≤2V0Sinα/g)式中V0,g,α均為常數(shù),t為參數(shù)變量。
對于給定一個參數(shù)變量t值,就可求得彈道曲線上一個點的x與y坐標(biāo)值。若給出參數(shù)變量t的一系列值,便可求出彈道曲線上一系列點的x和y坐標(biāo)值。有了x,y坐標(biāo)值,使用繪圖函數(shù)把這一系列點繪制出來,就獲得一條彈道曲線。
P(t)=P1+(P2-P1)t(0≤t≤1)x(t)=x1+(x2-x1)ty(t)=y1+(y2-y1)t對于某一參數(shù)曲線,我們不可能也沒有必要去研究參變量t從–∞到+∞的整條曲線,而往往只對其中的某一段感興趣。通常我們經(jīng)過對參變量t的規(guī)格化變換,使t在[0,1]閉區(qū)間內(nèi)變化,寫成t∈[0,1],對此區(qū)間內(nèi)的參數(shù)曲線進(jìn)行研究。
4.參數(shù)曲線的優(yōu)點在曲線的表示上,參數(shù)方程比顯式、隱式方程有更多的優(yōu)越性。
(1)有更大的自由度來控制曲線的形狀。如一條二維三次曲線的顯式表示為:
y=ax3+Bx2+cx+d其中只有4個系數(shù)可用來控制此曲線的形狀。而二維三次曲線的參數(shù)表達(dá)式為:
x=at3+Bt2+ct+dy=et3+ft2+gt+h其中有8個系數(shù)可用來控制此曲線的形狀。
(2)對非參數(shù)方程表示的曲線進(jìn)行變換,必須對曲線上的每個型值點進(jìn)行幾何變換;而對參數(shù)表示的曲線可對其參數(shù)方程直接進(jìn)行幾何變換(如平移、比例、旋轉(zhuǎn)),從而節(jié)省計算工作量。
(3)便于處理斜率為無限大的問題,不會因此而中斷計算。
(4)規(guī)格化的參數(shù)變量t∈[0,1],使其相應(yīng)的幾何分量是有界的,而不必用另外的參數(shù)去定義其邊界。
(5)參數(shù)方程中,代數(shù)、幾何相關(guān)和無關(guān)的變量是完全分離的,而且對變量個數(shù)不限,從而便于用戶把低維空間中的曲線擴展到高維空間去。這種變量分離的特點使我們可以用數(shù)學(xué)公式去處理幾何分量,如我們以后用的調(diào)和函數(shù)就具有此特點。
(6)易于用矢量和矩陣表示幾何分量,簡化了計算?;谶@些優(yōu)點,我們在以后將用參數(shù)表達(dá)式來討論曲線問題。5.1.2參數(shù)樣條曲線和曲面的常用術(shù)語在工程設(shè)計中,一般多采用低次的參數(shù)樣條曲線。這是因為高次參數(shù)樣條曲線計算費時,其數(shù)學(xué)模型難于建立且性能不穩(wěn)定,即任何一點的幾何信息的變化都有可能引起曲線形狀復(fù)雜的變化。
因此,實際工作中常采用二次或三次參數(shù)樣條曲線,如:二次參數(shù)樣條曲線:P(t)=A0
+A1t+A2t2三次參數(shù)樣條曲線:
P(t)=A0
+A1t+A2t2
+A3t3
1.型值點和控制點所謂型值點,是指通過測量或計算得到的曲線上少量描述曲線幾何形狀的數(shù)據(jù)點。由于型值點的數(shù)量有限,不足以充分描述曲線的形狀,因此通常是在求得一些型值點后,采用一定的數(shù)學(xué)方法,建立曲線的數(shù)學(xué)模型,從而再根據(jù)數(shù)學(xué)模型去獲得曲線上每一點的幾何信息。所謂控制點,是指用來控制或調(diào)整曲線形狀的特殊點,曲線段本身不通過該控制點。
1)切線如圖5-1,設(shè)空間中的一條參數(shù)曲線為P(t),M、Q為曲線上鄰近的兩點,分別對應(yīng)于p(t)與p(t+Δt),當(dāng)曲線上的點Q趨于M時,割線的極限位置為:2.切線、法線和Frenet標(biāo)架稱為曲線在點M處的切線,而定點M稱為切點,切線方向稱為切向量或切矢量T。直觀上看,切線是通過切點的所有直線當(dāng)中最貼近曲線的直線。圖5-1曲線的切線定義若參數(shù)曲線上任一點的坐標(biāo)為p(t)=[x(t),y(t),z(t)],則該點的切線方程即為參數(shù)曲線在該點處的一階導(dǎo)函數(shù),即p'(t)=[x'(t),y'(t),z'(t)]。如果選擇弧長s作為參數(shù),我們還可以得到:
由于在極限情況下,|ΔP|=|ΔS|,所以上面式(5-4)和(5-5)中的T是單位長度矢量,其方向為曲線的切線方向,稱之為單位切矢量,T的幾何意義是:T的方向角度變化反映出曲線的平坦程度,當(dāng)T的方向恒定不變時,曲線則變?yōu)橐粭l直線,參見后面圖5-3(b)、(c)。過上述空間曲線P(t)上M點的切線和M點的鄰近一點Q還可作一平面,當(dāng)Q點沿著曲線趨近于P時,平面的極限位置稱為曲線在M點的密切平面,如圖5-2所示。2)法線法線就是垂直切線方向T且通過切點M的直線,在密切平面上的法線稱為主法線,所在的方向稱為主法向量N,而垂直于密切平面還存在一條法線,如圖5-2所示,該法線稱為副法線,所在的方向稱為副法向量B。主法向量與副法向量構(gòu)成法平面,而切向量與副法向量構(gòu)成從切平面。3)Frenet標(biāo)架假設(shè)N和B均為單位向量,我們把兩兩相互垂直的單位向量T、N和B稱為曲線P(t)上M點的Frenet標(biāo)架,如圖5-2所示。圖5-2曲線上任意點的Frenet標(biāo)架構(gòu)成圖5-1曲線的切線定義yxQMαdαα+dαds(a)曲率的定義(b)曲率的幾何意義(c)不同曲率的圓弧曲線比較圖5-3曲線的曲率定義與計算3.曲率和撓率1)曲率如圖5-3(a)所示,曲線上兩點M和Q的切線的夾角δ與弧長MQ之比,當(dāng)Q趨于M時的極限,即
上式(5-6)的推導(dǎo)表明,曲率既是也是切線的方向角對于弧長的轉(zhuǎn)動率,又是單位切向量對于弧長的旋轉(zhuǎn)速率,參見圖5-3(b)。當(dāng)曲線在一點的彎曲程度越大,切向量對于弧長的旋轉(zhuǎn)速度就越大,因此曲率刻畫了曲線的彎曲程度,如圖5-3(c)所示。式(5-7)表明,其值實際上為曲線在M處的二階導(dǎo)數(shù)。
一般參數(shù)曲線P(t)曲率的計算公式為:
而曲率半徑的計算公式則是:ρ=1/k。(5-8)1)曲率對于空間曲線,曲線不僅彎曲,而且還要扭轉(zhuǎn),撓率便是衡量曲線扭轉(zhuǎn)變形程度的一種度量。具體地說,曲線撓率的大小表現(xiàn)出其離開密切平面的程度大小??臻g曲線上任意一點的撓率可以由下列公式表達(dá)為:
撓率表達(dá)式(5-9)的幾何意義是:撓率即為曲線在副法方向上隨弧線長度變化的速率,它是一般曲線變形的重要表述參數(shù)。不難理解:撓率恒等于零的曲線是平面曲線,而曲率恒等于零的曲線則為直線。另外,切線方向恒定不變的曲線也必定是直線。(5-9)2)撓率而曲線的擬合則是這兩種設(shè)計方法的統(tǒng)稱,是指在曲線的設(shè)計過程中,用插值或逼近方法使生成的曲線達(dá)到某些設(shè)計要求,如在允許的范圍內(nèi)貼近原始的型值點或控制點序列,或曲線看上去很光滑等。
4.參數(shù)連續(xù)性和幾何連續(xù)性
為保證分段參數(shù)曲線從一段到另一段平滑過渡,我們可以在連接點處要求各種參數(shù)連續(xù)性條件。
0階參數(shù)連續(xù)性,記作C0連續(xù),是指曲線相連,即第一個曲線段的終點與第二個曲線段的起點相同。一階參數(shù)連續(xù)性,記作C1連續(xù)性,指代表兩個相鄰曲線段的方程在相交點處有相同的一階導(dǎo)數(shù)(切線)。二階參數(shù)連續(xù)性,記作C2連續(xù)性,是指兩個曲線段在交點處有相同的一階和二階導(dǎo)數(shù)。
4.參數(shù)連續(xù)性和幾何連續(xù)性
1)參數(shù)連續(xù)性為保證分段參數(shù)曲線從一段到另一段平滑過渡,我們可以在連接點處要求各種參數(shù)連續(xù)性條件。0階參數(shù)連續(xù)性,記作C0連續(xù),是指曲線相連,即第一個曲線段的終點與第二個曲線段的起點相同。一階參數(shù)連續(xù)性,記作C1連續(xù)性,指代表兩個相鄰曲線段的方程在相交點處有相等的一階導(dǎo)數(shù)(切線)。二階參數(shù)連續(xù)性,記作C2連續(xù)性,是指兩個曲線段在交點處有相等的一階和二階導(dǎo)數(shù)。參數(shù)連續(xù)性和幾何連續(xù)性示意圖2)幾何連續(xù)性連結(jié)兩個相鄰曲線段的另一個方法是指定幾何連續(xù)性條件。這種情況下,只需兩曲線段在相交處的參數(shù)導(dǎo)數(shù)成比例而不是相等。0階幾何連續(xù)性,記為G0連續(xù)性,與0階參數(shù)連續(xù)性相同,即兩個曲線段必在公共點處有相同的坐標(biāo)。一階幾何連續(xù)性,記為G1連續(xù)性,指一階導(dǎo)數(shù)在兩個相鄰段的交點處成比例但不一定相等,方向相同。二階幾何連續(xù)性,記為G2連續(xù)性,指兩個曲線段在相交處其一階和二階導(dǎo)數(shù)均成比例但不一定相等,
方向相同。在實際的曲線造型應(yīng)用中,我們要適當(dāng)?shù)剡x擇曲線段間的連續(xù)性,使造型物體既能保證其光滑性的要求,也能保證其美觀性的要求。4.參數(shù)連續(xù)性和幾何連續(xù)性
4.插值、逼近和擬合及光順插值與逼近是曲線和曲面設(shè)計中的兩種不同方法。插值設(shè)計方法要求建立的曲線或曲面數(shù)學(xué)模型,嚴(yán)格通過已知的每一個型值點。常用的插值方法有線性插值和拋物線插值兩種。而逼近設(shè)計方法,顧名思義,用這種方法建立的曲線或曲面數(shù)學(xué)模型只是近似地接近已知的型值點。常用的逼近方法有最小二乘法等。而曲線或曲面的擬合則是這兩種設(shè)計方法的統(tǒng)稱,是指在曲線或曲面的設(shè)計過程中,用插值或逼近方法使生成的曲線或曲面達(dá)到某些設(shè)計要求,如在允許的范圍內(nèi)貼近原始的型值點或控制點序列,曲線或曲面看上去很光滑等。光順就是光滑、順眼的意思,“光滑”通常指曲線曲面的參數(shù)連續(xù)性或幾何連續(xù)性,主要是從數(shù)學(xué)的角度來考慮,有嚴(yán)格的數(shù)學(xué)定義;“順眼”則可以理解為側(cè)重于美學(xué)、功能、力學(xué)等諸多方面的要求,如曲線的拐點不能太多,拐來拐去就會不順眼。對于平面曲線而言,一般的光順準(zhǔn)則是:二階幾何連續(xù)(G2連續(xù))、沒有多余拐點、曲率變化比較均勻。其中“拐點”的意思是指曲線的凸凹發(fā)生改變的點,“拐來拐去”的典型曲線如常見的正弦曲線。4.插值、逼近和擬合及光順光順示意圖5.參數(shù)曲線的代數(shù)形式、幾何形式及調(diào)和函數(shù)的概念
1)參數(shù)形式:P(t)=P1+(P2-P1)t(0≤t≤1)對比x(t)=a1t+a02)幾何形式:P(t)=(1-t)P1+tP2(0≤t≤1)3)調(diào)和函數(shù)f1(t)=1-t;f2(t)=t,f1(t)+f2(t)=15.2二次插值樣條曲線
5.2.1二次插值樣條曲線的數(shù)學(xué)表達(dá)式在擬合生成樣條曲線的眾多方法中,我們首先選擇較為簡單的二次樣條曲線即拋物樣條曲線的生成方法作為基本方法,來討論如何用插值方法生成通過給定離散型值點的樣條曲線。實際上,二次Bezier曲線和二次B樣條曲線也是拋物樣條曲線,但它們采用的方法是逼近方法。
由于離散點的要求,我們首先要解決由給定點定義拋物線問題。設(shè)有不在同一直線上的三點:P1,P2,P3,現(xiàn)在要求通過該給定的三點定義一條拋物線。如圖5.2所示。P1P2P3圖5.2過三點的二次曲線
假如我們采用矢量表達(dá)式來表示參數(shù)化的二次曲線,那么可以把拋物線的表達(dá)式寫成如下的一般形式為:
P(t)=A1
+A2t+A3t2
(0
≤t≤1)
(5-1)拋物線是一條二次曲線,所以表達(dá)式中參數(shù)t的最高次數(shù)為2,同時讓參數(shù)t在0—l之間取值。
這就是說,只要確定了式(5–1)中的三個系數(shù):A1,A2和A3,那么就確定了拋物線的表達(dá)式,隨之拋物線的曲線圖形也就可以確定。所以,我們的工作是要通過設(shè)定一些已知條件來求出這三個系數(shù)。
要確定這三個系數(shù)(目前尚為未知數(shù)),必須要有三個獨立的條件。我們可以給定這三個獨立條件為:
該拋物線過P1,P2,P3三個點,并且:①拋物線段以P1點為始點。即當(dāng)參變量t=0時,曲線過P1點;②拋物線段以P3點為終點。即當(dāng)參變量t=1時,曲線過P3點;③當(dāng)參變量t=0.5時,曲線過P2點,且切矢量等于P3–P1。在這三個設(shè)定的條件下,構(gòu)造的拋物線段如圖5.3所示。
P1P2P3QAP2’t=0t=0.5t=1圖5.3過3點定義的二次曲線圖中的數(shù)據(jù)是這樣的:A點為P1P3的中點,AP2=P2Q,拋物線在P1點處與P1Q相切,在P3點處與QP3相切,曲線在P2點處的切矢P'2與P1P3平行。
根據(jù)以上設(shè)定的條件,可以列出三個方程:
t=
0:P(0)=A1
=P1t=
1:P(1)=A1+A2十A3
=P3(5-2)
t=
0.5;P(0.5)=A1+0.5A2+0.25A3
=P2解以上三個聯(lián)立方程:
A1
=P1P3
=A1
+A2
+A3
=P1+A2
+A3
∴A2
=P3–P1–A3P2
=A1
+
0.5A2
+
0.25A3
亦即:4P2
=
4A1
+
2A2
+A3
=
4P1
+
2(P3–P1–A3)
+A3
=
2P1
+
2P3
–A3∴A3
=
2P1
+
2P3–4P2以上式回代到A2
=P3–P1–A3中,得:
A2
=
4P2–P3–3P1
所以,通過解聯(lián)立方程,得到的三個系數(shù)A1,A2,A3分別為:
A1
=P1A2
=
4P2–P3–3P1(5-3)A3
=
2P1+2P3–4P2把求出的該三個系數(shù)的值,代入到拋物線的表達(dá)式(5-1)中,可得:
P(t)=A1
+A2t+A3t2
=P1
+(4P2–P3–3P1)t+
(2P1+2P3–4P2)t2
=
(2t2–3t+
1)P1
+(4t–4t2)P2
+
(2t2–t)P3(5-4)
(0≤t≤1)
可把式(5-4)改寫成矩陣形式為:P(t)=[t2
t1](5-5)以上推導(dǎo)求出的算式,即為我們所要求的過不在一直線上的三點:P1(x1,y1),P2(x2,y2)和P3(x3,y3)的拋物線方程。這時根據(jù)參變量t的取值,我們就可以一一計算出位于曲線上的數(shù)據(jù)點,然后順次連線繪出圖形。
5.2.2二次插值樣條曲線的加權(quán)合成設(shè)有一離散型值點列Pi(i=1,2,…,n),我們可以按式(5-5)每經(jīng)過相鄰三點作一段拋物線,由于有n個型值點,所以像這樣的拋物線段一共可以作出n–2條。如圖5.4所示。
P1P2P3P4P5Pn-2Pn-1Pn圖5.4產(chǎn)生n–2段拋物線在這n–2條拋物線段中,第i條拋物線段為經(jīng)過Pi,Pi+1,Pi+2三點,所以它的表達(dá)式應(yīng)為:
Si(ti)=(2ti2–3ti+1)Pi+(4ti–4ti2)Pi+1+(2ti2–ti)Pi+2
(0≤ti≤1)
(5-7)同理,第i+1條拋物線段為經(jīng)Pi+1,Pi+2和Pi+3三點,所以它的表達(dá)式為:Si+1(ti+1)=(2ti+12–3ti+1+1)Pi+1+(4ti+1–4ti+12)Pi+2+(2ti+12–ti+1)Pi+3
(0≤ti≤1)(5-8)
經(jīng)過四點所畫出的兩條拋物線段Si(ti)和Si+1(ti+1)的圖形如圖5.5所示:
PiPi+1Pi+2Pi+3SiSi+1圖5.5Si和Si+1
一般說來,每兩段曲線之間的搭接區(qū)間,兩條拋物線是不可能重合的。例如圖5.5中,
Si和Si+1兩條拋物線,它們在Pi+1和Pi+2兩點之間為搭接區(qū)間,在這區(qū)間內(nèi),Si和si+1不太有可能會自然地重合成一條曲線。
顯然,對于擬合曲線來說,整個型值點列必須只能用一條光滑的曲線連接起來。為了做到這一點,在Si和si+1這樣兩條曲線的共同區(qū)間內(nèi),必須有一個辦法讓它們按照一個一定的法則結(jié)合成一條曲線,這結(jié)合的辦法就是加權(quán)合成。
在加權(quán)合成的過程中,我們首先要選擇兩個合適的權(quán)函數(shù)。如果我們在這里選擇的兩個權(quán)函數(shù)分別為f(T)和g(T),加權(quán)合成后的曲線為Pi+1(t),則:
Pi+1(t)
=f(T)·Si(ti)+g(T)·Si+1(ti+1)在拋物樣條曲線中,我們選擇的權(quán)函數(shù)f(T)和g(T)是簡單的一次函數(shù),且它們之間存在有互補性。它們分別為:
f(T)=l–T
g(T)=T(O≤T≤1)這樣,式:
Pi+1(t)=f(T)·Si(ti)+g(T)·Si+1(ti+1)即可改寫為:
Pi+1(t)=(1–T)·Si(ti)+
T·Si+1(ti+1)(5-9)在表達(dá)式(5-9)中,包含了三個參變量,即:T、ti和ti+1。假如這三個參變量不加以統(tǒng)一,則接下去的工作是無法進(jìn)行的,所以我們首先要統(tǒng)一式中的參變量。
對于曲線段Si(ti),參變量ti的取值范圍為:0≤ti≤1,但曲線段Si(ti)與曲線段Si+1(ti+1)搭接的部分是原曲線段的后半截,即是從點Pi+1到Pi+2之間的區(qū)間,在這個區(qū)間內(nèi),參變量的取值范圍應(yīng)為:0.5≤ti≤1。
同理,對于曲線段Si+1(ti+1),在點Pi+1到Pi+2之間的區(qū)間內(nèi),其參變量ti+1的取值范圍應(yīng)為:0≤ti≤0.5。在權(quán)函數(shù)f(T)和g(T)中,變量T的取值范圍定為:0≤T≤1。
為了統(tǒng)一式(5-9)中的三個參變量:T、ti和ti+1,我們選擇t作為統(tǒng)一后的參變量,把原有的三個參變量T、ti和ti+1均化成唯一含有t的形式,并要給t規(guī)定一個合適的取值范圍。假如我們使t的取值范圍為:0≤t≤0.5,則上面的三個參變量可統(tǒng)一形式為:
T=2t
ti=0.5+t0≤t≤0.5
ti+1=t于是,原式(5-9)可根據(jù)新的參變量t改寫成如下這樣的形式:
Pi+1(t)=(1–2t)·Si(t+0.5)+2t·Si+1(t)(5-10)其中:1–2t=f(T)2t=g(T)
Si(t+0.5)=(2t2–t)Pi+(1–4t2)Pi+1+(2t2+t)Pi+2
Si+1(t)=(2t2–3t+1)Pi+1+(4t–4t2)Pi+2+(2t2–t)Pi+3
把以上四式代入式(5-10),展開、整理后可得:
Pi+1(t)=(–4t3+4t2–t)Pi+(13t3–10t2+1)Pi+1
+(–12t3+8t2+t)Pi+2+(4t3–2t2)Pi+3(i=1,2,…,
n–3)(0≤t≤0.5)
(5-11)
式(5-11)的實質(zhì)是:表達(dá)了每相鄰的四個點可以決定中間的一段拋物樣條曲線。見圖5.6所示。
PiPi+1Pi+2Pi+3Pi+1(t)圖5.64個點決定中間的一段樣條曲線
假如一個離散點列Pi具有n個型值點,即i=1,2,…,n。那么根據(jù)式(5-11),可以加權(quán)合成后生成n–3段拋物樣條曲線。即式(5-11)中的i的取值范圍為:i=1~n–3。
5.2.3二次插值樣條曲線的端點條件上面已經(jīng)說到,在全部點列Pi(i=1,2,…,n)中,我們只能得到n–3段曲線。但n個型值點之間應(yīng)有n–1個區(qū)段。亦即,按照式(5-11)產(chǎn)生的曲線段不足以生成n–1段曲線,因其點列的首、尾兩段曲線P1P2和Pn–1Pn段,由于缺乏連續(xù)相鄰的四點這樣的條件而無法產(chǎn)生。
為了要產(chǎn)生首尾兩段曲線,一個直接的想法就是在原點列的兩端各加一個輔助點P0和Pn+1,如圖5.8所示。
P0P1P2Pn-1PnPn+1圖5.8兩端加點但是,余下的問題是這P0和Pn+1兩點是如何加上去的,它必須依據(jù)什么原則,這就是所謂的“端點條件”。在這里,我們僅介紹常用的三種方法:
①已知兩端的切矢P'1和P'n在前面我們已經(jīng)說過,在由P1、P2、P3三點所確定的拋物線中,過P2點曲線的切矢P'
2
=P3–P1,即:P1=P3–P'
2這樣,在拋物樣條曲線中,當(dāng)條件給出了兩端的切矢P'1和P'n之后,根據(jù)上面的原理可得:
P'1=P2–P0∴P0=P2–P'1
P'n
=Pn+1–Pn–1∴Pn+1=Pn–1+P'n即可以確定輔助點P0和Pn+1的坐標(biāo)位置。
這種端點的情況,一般適用于所求的曲線要和已經(jīng)存在的曲線或直線相連接。
②自由端條件另一種補點的方法的原理比較簡單,它讓所補之點P0和Pn+1與原兩端點P1和Pn分別重合,即:
P0=P1
Pn+1=Pn
這樣的補點方法稱為自由端條件,這種方法一般適用于對曲線的兩端沒有什么特殊的要求。
③形成封閉曲線為了在n個型值點之間形成封閉曲線,那末就要生成n段曲線段,而不是原來的n–1段。所以在補點工作中要加三個點,首先讓首尾兩點重合,然后各向前后延長一點,即:
Pn+1=P1
P0=Pn
Pn+2=P2
上述由加權(quán)合成推導(dǎo)的拋物樣條曲線是由若干個曲線段組成的,每兩個相鄰的型值點之間形成一段曲線,每相鄰的兩段曲線在型值點處相接,并且一階導(dǎo)數(shù)相等,因此拋物樣條曲線達(dá)到C1連續(xù)。
5.2.4二次插值樣條曲線的性質(zhì)
拋物樣條曲線的算法程序如下:voidparspl(intp[][2],intn,intk,inte){//P為型值點的坐標(biāo)數(shù)組,n為型值點數(shù),k為插值數(shù),即是把參變量t區(qū)間細(xì)分的份數(shù)。intx,y,i,j,m=n;floatt1,t2,t3,t,a,b,c,d;if(e==1)//自由端{(lán)p[0][0]=p[1][0];p[0][1]=p[1][1];p[n+1][0]=p[n][0];p[n+1][1]=p[n][1];}else//畫封閉曲線
{p[0][0]=p[n][0];p[0][1]=p[n][1];p[m][0]=p[1][0];p[m][1]=p[1][1];p[m+1][0]=p[2][0];p[m+1][1]=p[2][1];}t=0.5/k;Moveto(p[1][0],p[1][1]);for(i=0;i<m–1;i++){for(j=1;j<k;j++)
{t1=j(luò)*t;t2=t1*t1;t3=t2*t1;a=4.0*t2–t1–4.0*t3;b=1.0–10.0*t2+12.0*t3;c=t1+8.0*t2–12.0*t3;d=4.0*t3–2.0*t2;x=a*p[i][0]+b*p[i+1][0]+c*p[i+2][0]+d*p[i+3][0];y=a*p[i][1]+b*p[i+1][1]+c*p[i+2][1]+d*p[i+3][1];lineto(x,y);
}lineto(p[i+2][0],p[i+2][1]);}}5.3三次插值樣條曲線
插值樣條曲線大多用來建立物體運動路徑或提供實體表示方法,有時也可用來設(shè)計物體形狀。三次插值樣條曲線在靈活性和計算速度之間提供了一個合理的折中方案。與更高次樣條相比,三次插值樣條只需較少的計算和存儲,且較穩(wěn)定。與低次插值樣條相比,三次插值樣條在模擬任意形狀時顯得更靈活。
三次插值樣條曲線由分段的三次多項式來描述。假如我們設(shè)其參變量為t,則分段三次插值樣條曲線表達(dá)式的一般形式可以寫成:
P(t)=B1+B2t+B3t2十B4t3
(0≤t≤tm)(5-13)其中的P(ti)=[x(ti)y(ti)z(ti)),可以看作是插值樣條曲線上某一點的位置向量,ti是該點相應(yīng)的參變量,它的三個分量:x(ti),y(ti),z(ti)可以看作是點的坐標(biāo)值。
式(5-13)中的四個系數(shù)B1,B2,B3和B4是待定的,即是說方程中有四個未知數(shù)。為了把式(5-13)具體化,必須確定這四個系數(shù),顯然,這需要設(shè)定四個獨立的條件。n+1個控制點共產(chǎn)生n段曲線,每段曲線都有4個系數(shù)需要確定。不同的系數(shù)確定方法就導(dǎo)致不同的三次插值樣條曲線。
5.3.1三次自然樣條曲線最先用于圖形應(yīng)用的三次插值樣條曲線是三次自然樣條曲線。這個插值樣條曲線是原始繪圖樣條的一個數(shù)學(xué)表達(dá)式。用公式表示一個三次自然樣條曲線時,需要兩個相鄰曲線段在公共邊界處有相同的一階和二階導(dǎo)數(shù),即三次自然樣條曲線具有C2連續(xù)性。
對于三次自然樣條曲線,n+1個型值點插值產(chǎn)生n段曲線,這樣共有4n個多項式系數(shù)需要確定。對于每一個內(nèi)型值點(共有n-1個),有四個邊界條件:在該型值點兩側(cè)的兩個曲線段在該點處有相同的一階和二階導(dǎo)數(shù),且兩個曲線段都要通過該點。
這給出了由4n個多項式系數(shù)組成的4n-4個方程,另外再給出一個從第一個型值點p0(即曲線起點)所得的方程,和從最后一個型值點pn(即曲線終點)所得的方程。我們還需要二個條件才能解出所有系數(shù)值。獲取這二個額外方程的方法之一是在p0和pn處設(shè)二階導(dǎo)數(shù)為0。另一個方法是增加二個“隱含”型值點,各自位于型值點序列的兩端,即增加p-1和pn+1兩個型值點。這時,所有的原有型值點都成了內(nèi)點,具有所需的4n個邊界條件。
盡管三次自然樣條曲線是一條三次插值樣條曲線,能夠做到曲線通過所有型值點,但它有一個主要缺點,即必須解n次方程組,整個曲線受所有型值點控制,不允許“局部控制”,因此不給出完整的新型值點集,不可能去構(gòu)造曲線的一部分。所以,在實際應(yīng)用中很少采用三次自然樣條曲線。
5.3.2Hermite樣條曲線Hermite樣條曲線是以法國數(shù)學(xué)家CharlesHermite命名的,是一個分段三次多項式并在每個型值點有給定的切線。與三次自然樣條曲線不同,Hermite樣條曲線可以局部調(diào)整,因為每個曲線段僅依賴于端點約束。整個曲線通過所有的型值點,而對于每個曲線段來說,它通過兩個相鄰的型值點。我們把這兩個點作為該段曲線的起點和終點,設(shè)為P0點和P1點。并且假定曲線段在兩端點處的切矢為已知,分別設(shè)為
P'0和
P'1。曲線的參變量t是在兩個端點取值0和1之間變化,如圖5.11所示。
P0(t0=0)P’0P1(t1)P’1圖5.11設(shè)定端點條件在這樣的前提下,對于每一個三次曲線段,就有了四個獨立條件,它們是:兩個端點的位置向量及曲線在兩端點處的切矢。于是,根據(jù)這四個條件,就可以求出分段表達(dá)式(5-13)中的四個系數(shù)。
P0=B1+B2t+B3t2十B4t3=B1(當(dāng)t=0)
P1=
B1+B2t+B3t2十B4t3=B1+B2+B3+B4
(當(dāng)t=1)
P’0=B2+2B3t十3B4t2=B2(當(dāng)t=0)(5-14)
P'1=B2+2B3t十3B4t2=B2+2B3+3B4
(當(dāng)t=1)上述公式(5-14)可寫成如下矩陣形式:(5-15)
=該方程對多項式系數(shù)求解,可得Hermite樣條曲線的矩陣表達(dá)式:(5-16)
P(t)=[t3t2t1]最后可以將上式展開,得到Hermite混合函數(shù)的表達(dá)式:P(t)=Pk(2t3-3t2+1)+Pk+1(-2t3+3t2)+Pk’(t3-2t2+t)+Pk+1’(t3-t2)(5-17)Hermite多項式對某些數(shù)字化應(yīng)用有用,這里它不太困難就可以得出或估算出曲線的斜率。但對計算機圖形學(xué)中的大部分問題而言,除了型值點坐標(biāo)外,更好的做法是不需要輸入曲線斜率值或其他幾何信息就能生成樣條曲線。因此,就出現(xiàn)了Cardinal樣條這種基于Hermite樣條的變化形式,它不需要輸入控制點上的曲線導(dǎo)數(shù)值,而是采用控制點的坐標(biāo)位置來計算導(dǎo)數(shù)。
5.3.3Cardinal樣條曲線像Hermite樣條曲線一樣,Cardinal樣條曲線也是分段三次插值曲線,且每曲線段終點處均指定切線。與Hermite樣條的區(qū)別是,不一定要給出終點的切線值。在Cardinal樣條曲線中,一個控制點處斜率值可由兩個相鄰控制點坐標(biāo)來計算。
一個Cardinal樣條曲線完全由四個連續(xù)控制點給出。中間兩個控制點是曲線段端點,另二個點用來計算終點斜率。如圖5.12所示,設(shè)P(t)是兩控制點Pk和Pk+1間的參數(shù)三次函數(shù)式,則從Pk-1到Pk+2間的四個控制點用于建立Cardinal樣條曲線段的邊界條件:
Pk-1PkPk+2Pk+1P(t)圖5.12兩控制點Pk和Pk+1間的參數(shù)三次函數(shù)式P(t)P0=Pk
P1=Pk+1
P’0=1/2(1-ts)(Pk+1-Pk-1)(5-18)
P'1=1/2(1-ts)(Pk+2-Pk)則控制點Pk和Pk+1處的斜率分別與弦Pk-1Pk+1和PkPk+2成正比(圖5.13)。參數(shù)ts稱為張力(tension)參數(shù),因為ts控制Cardinal樣條曲線與輸入控制點間的松緊程度。Pk-1PkPk+2Pk+1Pk’Pk+1’圖5.13控制點Pk和Pk+1處的斜率分別與弦Pk-1Pk+1和PkPk+2成正比圖5.14說明了張力ts取很小和很大值時Cardinal曲線的形狀。當(dāng)ts=0時,這類曲線稱為Catmull-Rom樣條曲線或Overhauser樣條曲線。
ts<0(較松曲線)ts>0(較緊曲線)圖5.14張力參數(shù)ts在Cardinal曲線形狀中的作用用類似Hermite樣條曲線中的方法,我們可以將邊界條件(5-17)轉(zhuǎn)換成矩陣形式:
P(t)=[t3t2t1](5-19)這里s=(1-ts)/2。
將矩陣方程(5-17)展開成多項式形式,有:P(t)=Pk-1(-st3+2st2-st)+Pk[(2-s)t3+(s-3)t2+1]+Pk+1[(s-2)t3+(3-2s)t2+st]+Pk+2(st3-st2)(5-20)以下是Cardinal樣條曲線的VC程序:voidCardinalSpLine(CPoint*pp,intn,floattension)//這里數(shù)組pp的下標(biāo)從1開始{intx,y,i,j,k=1000;doublet,t1,t2,t3,a,b,c,d,s;t=1.0/k;s=(1.0-tension)/2.0;pp[0].x=2*pp[1].x-pp[2].x;//端點處理pp[0].y=2*pp[1].y-pp[2].y;pp[n].x=2*pp[n-1].x-pp[n-2].x;pp[n].y=2*pp[n-1].y-pp[n-2].y;MoveTo(pp[1]);for(i=1;i<n-1;i++){ for(j=1;j<=k;j++) {t1=j*t;t2=t1*t1;t3=t2*t1;a=-s*t3+2*s*t2-s*t1;b=(2-s)*t3+(s-3)*t2+1; c=(s-2)*t3+(3-2*s)*t2+s*t1; d=s*t3-s*t2; x=int(a*pp[i-1].x+b*pp[i].x+c*pp[i+1].x+d*pp[i+2].x); y=int(a*pp[i-1].y+b*pp[i].y+c*pp[i+1].y+d*pp[i+2].y); LineTo(x,y);}}}5.4Bézier(貝濟埃)曲線
在上面討論的拋物樣條曲線和三次插值樣條曲線中,它們的共同特點是:最終生成的曲線通過所有給出的型值點,我們稱之為“點點通過”。通過以上的討論,我們可以看到,這兩種曲線的計算和編程都比較簡單易行,并且分別使曲線達(dá)到了一階和二階連續(xù).這已經(jīng)可以滿足一般的工程應(yīng)用問題了,所以應(yīng)用較廣。
但在外形設(shè)計中,比如船舶和汽車的外形設(shè)計,初始給出的型值點往往并不精確,并且有些地方完全僅僅是為了外觀上的考慮。在這樣的一種應(yīng)用前提下,去一點一點地插值計算并使曲線點點通過不很合算。另外,在外形設(shè)計中,最好能使設(shè)計的結(jié)果靈活直觀地反映出來,比如局部修改型值點也能在外形上得到直觀的反映,以便于設(shè)計者進(jìn)行交互式設(shè)計操作。這些,前面所介紹的兩種插值樣條曲線都是不夠的。
為了改善這種情況,法國Bézier(貝濟埃)提出了一種新的參數(shù)曲線逼近方法,稱作貝濟埃曲線。后來Gordon,Riesenfeld和Forrest等人對Bezier曲線進(jìn)行了修改和發(fā)展,提出了B樣條曲線。這兩種曲線都因能較好地適用于外形設(shè)計的特殊要求而獲得了廣泛的應(yīng)用。
貝濟埃曲線的形狀是通過一組多邊折線(也稱為貝濟埃多邊形或特征多邊形)的各項唯一地定義出來的。
在該多邊折線的各頂點中,只有第一點和最后一點是在曲線上的,其余的頂點則用來定義曲線的導(dǎo)數(shù)、階次和形狀。第一條邊和最后一條邊則表示出了曲線在起點處和終點處的切線方向,即第一條邊和最后一條邊分別和曲線在起點和終點處相切。曲線的形狀趨向于多邊折線的形狀。改變多邊折線的頂點位置和曲線形狀的變化有著直觀的聯(lián)系。圖5.15列舉了一些貝濟埃多邊折線和相應(yīng)的貝濟埃曲線的形狀關(guān)系。
P0P1P2P3P0P1P2P3P0P1P2P3圖5.15貝濟埃曲線
Bezier曲線的例子5.4.1Bezier曲線的定義貝濟埃曲線是由多項式調(diào)和函數(shù)推導(dǎo)出來的,通常n+1個頂點定義一個n次多項式,其參數(shù)向量表達(dá)式為;
在式(5-20)中,Pi為各頂點的位置向量,Bi,n(t)為伯恩斯坦(Bernstein)基函數(shù),也就是貝濟埃多邊形的各頂點位置向量之間的調(diào)和函數(shù)。該函數(shù)的表達(dá)式為:如果我們規(guī)定:00和0!均為1,那么,當(dāng)t=0時:P(0)=P0B0,n(0)+P1B1,n(0)+P2B2,n(0)+…+PnBn,n(0)Cni的求取方法:楊輝三角形的展開式n=111n=2121n=31331n=414641n=515101051…………例:1、2和3次Bézier曲線1次Bézier曲線2次Bézier曲線3322)1(3PtPtt+-+203)1(3)1()(tPtPttP-+-=3次Bézier曲線1在t=0時除第一項外其余各項均為0,所以當(dāng)t=1時:P(1)=P0B0,n(1)+P1B1,n(1)+P2B2,n(1)+…+PnBn,n(1)在t=1時除最后一項外其余各項均為0,所以
從以上結(jié)果可以得出,曲線通過多邊折線的起點和終點。下面,我們通過對基函數(shù)求導(dǎo),來分析一下曲線在兩端點處的切矢情況。
于是得:(5-23)在起始點,t=0,公式(5-23)中只有i=0,1兩項有效,即:
=n(P1一P0)在終止點,t=1,公式(5-23)中只有i=n-1,n兩項有效,同理可得:
P’(1)=n(Pn-Pn–1)
這說明:貝濟埃曲線在兩端點處的切矢方向是與貝濟埃多邊折線的第一條邊和最后一條邊相一致的。我們已經(jīng)知道,確定m個頂點,可以定義一條m–1次的貝濟埃曲線。下面,我們來討論一下較低次的貝濟埃曲線,例如二次貝濟埃曲線和三次貝濟埃曲線。
5.4.2Bezier曲線的性質(zhì)如圖5.4.2所示,對于n+1個控制點Pi(i=0,1,…,n),構(gòu)成特征多邊形的頂點P0P1…Pn構(gòu)成曲線P(t),其中t∈[0,1],我們有Bernstein多項式的性質(zhì)和Bezier曲線的性質(zhì)如下:1.Bernstein多項式的性質(zhì)1)非負(fù)性Bi,n(t)≥02)權(quán)性
3)對稱性Bi,n(t)=Bn-i,n(1-t)
圖5-18Bezier曲線定義及性質(zhì)示意圖4)遞推性Bi,n(t)=(1-t)Bi,n-1(t)+Bi-1,n-1(t),因為5)導(dǎo)函數(shù)(5-39)1.Bernstein多項式的性質(zhì)2.Bezier曲線的性質(zhì)1)端點的位置矢量由式(5-33)、式(5-34)得到:P(0)=P0,P(1)=Pn2)端點的切矢量由式(5-36)、式(5-37)得到:P’(0)=n(P1-P0),P’(1)=n(Pn-Pn-1)3)端點的二階導(dǎo)矢量和曲率參考圖5-18,Bezier曲線P(t)在P0、P1的二階導(dǎo)矢量分別為:P”(0)=n(n-1)(P2-2P1-P0),P”(1)=n(n-1)(Pn-2Pn-1+Pn-2)(5-40)根據(jù)式(5-8)計算曲率公式:,Bezier曲線P(t)在P(0)、P(1)處的曲率分別為:,
其中k(t)為P(t)的曲率,PiPj=Pj-Pi,參考圖5-18。3)端點的二階導(dǎo)矢量和曲率圖5-18Bezier曲線定義及性質(zhì)示意圖曲率k(0)、k(1)推導(dǎo)過程如下:根據(jù)式(5-8)計算曲率公式:由前面Bezier曲線性質(zhì),可以得到:,
4)對稱性如圖5-18所示,對于特征多邊形,我們既可以由P0出發(fā)構(gòu)造Bezier曲線,也可以從Pn開始反向構(gòu)造Bezier曲線。這兩條曲線形狀完全相同,但參數(shù)化方向相反,即Bezier曲線具有對稱性。同時表明,同一特征多邊形定義的Bezier曲線是唯一的。圖5-18Bezier曲線定義及性質(zhì)示意圖7)變差縮減性若Bezier曲線P(t)的特征多邊形是一個平面圖形,則平面內(nèi)任意直線與P(t)的交點個數(shù)不多于該直線和特征多邊形的交點的個數(shù),這一性質(zhì)叫做變差縮減性。該性質(zhì)反映了Bezier曲線比其特征多邊形的波動要小,也就是說曲線比其特征多邊形所在的折線更為光順。如圖5-19所示,直線L與Bezier曲線P(t)的交點為a、b兩點,L與特征多邊形的交點數(shù)為4,符合變差縮減性。5)凸包性Bezier曲線完全被包容在由特征多邊形形成的凸包內(nèi),如圖5-18所示。6)幾何不變性Bezier曲線的形狀僅取決于特征多邊形的頂點,而與坐標(biāo)系的選取無關(guān)圖5-19Bezier曲線變差縮減性質(zhì)示意圖5.4.3二次貝濟埃曲線當(dāng)m=3時,頂點P0,P1,P2可定義一條二次(n=2)貝濟埃曲線。此時式(5-21)可以改寫成:
P(t)=(1–t)2P0+2t(1–t)P1+t2P2
(0≤t≤1)(5-24)寫成矩陣形式為:
P(t)=[t2t1]在式(5-24)中,相對應(yīng)于式(5-21)中的調(diào)和函數(shù)Bi,n(t)分別為:
B0,2(t)=1-2t+t2
B1,2(t)=2t-t2
B2,2(t)=t2
根據(jù)式(5-23),當(dāng)n=2時,二次貝濟埃曲線在起點P0處有切向量P'0=P'(t=0)=2(P1–P0);在終點P2處有切向量P'2=P'(t=1)=2(P2–P1)。同時,當(dāng)t=1/2時:該式說明,二次貝濟埃曲線經(jīng)過△P0P1P2中的一條中線P1Pm的中點P。綜上所述,我們可以看出:二次貝濟埃曲線是一條拋物線。見圖5.20所示。
P1P0P2PmP圖5.20二次貝濟埃曲線5.4.4三次貝濟埃曲線當(dāng)m=4時,頂點P0,P1,P2,P3四點可定義一條三次(n=3)貝濟埃曲線。此時式(5-30)可以改寫為:
P(t)=(1–t)3P0+3t(1–t)2P1+3t2(1–t)P2+t3P3
=(1–3t+3t2-t)3P0+(3t–6t2+3t3)P1+(3t2–3t3)P2+t3P3
(0≤t≤1)(5-44)同樣,該式可改寫成矩陣表達(dá)式為:P(t)=[t3t2t1]在式(5-44)中,相對應(yīng)于式(5-21)中的調(diào)和函數(shù)Bi,n(t)分別為:
B0,3(t)=1–3t+3t2–t3
B1,3(t)=3t–6t2+3t3
B2,3(t)=3t2–3t3
B3,3(t)=t3
三次貝濟埃曲線是二階連續(xù)的。∵P’(t)=3(1–t)2P0+(3–12t+9t2)P1+(6t–9t2)P2+3t2P3P”(t)=6(1–t)P0+(–12+18t)P1+(6–18t)P2+6tP3P”i(1)=6(1–1)P0+(–12+18)P1+(6–18)P2+6P3=6(P1+P3-2P2)P”i+1(0)=61–0)P1+(-12+0)P2+(6–0)P3+0P4=6(P1+P3-2P2)∴P”i(1)=P”i+1(0)對于更高次的貝濟埃曲線,在此不再一一列舉并討論。
圖5-21和圖5-22為三次Bezier曲線的各種不同情況的分析比較。圖5-21控制點相同,順序不同的三次Bezier曲線圖5-22移動控制點P2的不同效果比較5.4.5反算Bezier曲線控制點
若給定n+1個型值點Qi(i=0,1,…,n),要求構(gòu)造一條Bezier曲線通過這些點。問題是如何求得過Qi的Bezier曲線的控制點Pi(i=0,1,…,n)。通常可取參數(shù)t=i/n與點Qi相對應(yīng),用以反算Pi。設(shè)Qi在曲線C(t)上,且有由此式我們可以得到下面關(guān)于Pi(i=0,1,…,n)的n+1個方程組成的線性方程組:
由這組方程可解出,這就是過Qi的Bezier曲線的特征多邊形的頂點。5.4.6Bezier曲線的多項式定義生成算法根據(jù)式(5-30),可以編寫出繪制任意階次的Bezier曲線的C語言程序。doublepowi(doublev,intk)//計算vk{doubletemp=1.0;if(k==0||v==0)return1;//00=1else{for(inti=1;i<=k;i++)temp=temp*v;}returntemp;}longfac(intm)//計算m!{inti;longtemp=1;if(m==0)return1;//0!=1else{for(i=2;i<=m;i++)temp=temp*i;}returntemp;}voidBezier(POINT*p,intn){intx,y,i,j,k=100;doublet=1.0/k,t1,u,v;doubletemp,temp1,temp2,bi;moveto(p[0].x,p[0].y);for(j=1;j<k;j++){t1=j*t;u=t1;v=1-u;x=0;y=0;for(i=0;i<=n;i++){temp=double(fac(n)/fac(i)/fac(n–i));
temp1=powi(u,i);temp2=powi(v,n–i);bi=temp*temp1*temp2;
x=x+bi*p[i].x;y=y+bi*p[i].y;}lineto(x,y);}lineto(p[n].x,p[n].y);}5.4.7Bezier曲線的分割遞推deCasteljau算法圖5-23deCasteljau算法分割遞推過程示意圖圖5-24分割點Pi,r的遞推關(guān)系圖如圖5-23結(jié)合圖5-24所示,對于控制節(jié)點數(shù)為4,邊數(shù)為3的控制多邊形P0P1P2P3,,依次分別在邊P0P1、P1P2、P2P3上找到一點P0,1、P1,1、P2,1,該點分別將所在的邊分成2:1,然后,將上述3個分割點構(gòu)成新的控制多邊形P0,1P1,1P2,1,其節(jié)點數(shù)為3,邊數(shù)為2;再以同樣的方法以及同樣的比例對邊P0,1P1,1和邊P1,1P2,1進(jìn)行分割得到分割點P0,2與P1,2,最后對邊P0,2P1,2進(jìn)行與前面相同比例的分割,得到點P0,3。P0,3即為由原控制多邊形所確定的3次Bezier曲線上的參數(shù)為t的點P(t)。如果我們讓t在[0,1]間變動,并且讓變動Δt取一個較小的增量(例如:Δt=0.1),循環(huán)多次就可作出3次Bezier曲線。綜合上述我們可以總結(jié)出Bezier曲線生成的deCasteljau算法:對于任意控制多邊形,在以PiPi+1為端點的第i條邊上,找一點Pi,1(t),把該點分成t:(1-t)比例,則分割點Pi,1(t)=(1-t)Pi+tPi+1,i=0,1,…,n-1,這n個點組成一個新的n-1邊形,對該多邊形重復(fù)上述操作,得到一個新的n-2變形的頂點Pi,2(t)(i=0,1,…n-2)依次類推,連續(xù)作n次后,得到一個單點Pi,n(t),該點就是Bezier曲線P(t)上參數(shù)為t的點P(t),讓t在[0,1]間變動,就得到Bezier曲線。用數(shù)學(xué)歸納法不難證明,按照式Pi,1(t)=(1-t)Pi+tPi+1,遞推n次,最終結(jié)果P0,n(t)就是滿足式(5-30)的Bezier曲線上的點P(t),即deCasteljau算法最后的切割點可以表示為:
(5.4.17)圖5-25deCasteljau算法和多項式算法繪制Bezier曲線對比5.4.8Bezier曲線的拼接a)G0、C0連續(xù)的拼接b)G1連續(xù)的拼接圖5-26兩Bezier曲線的拼接示意圖Bezier曲線曲面的拼接技術(shù),在實際復(fù)雜曲
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 江蘇省蘇州市姑蘇區(qū)2025年中考物理模擬試卷(含解析)
- 菏澤2024年山東菏澤市中心血站招聘15人筆試歷年參考題庫附帶答案詳解
- 茂名廣東茂名市茂南區(qū)公館鎮(zhèn)敬老院招聘工作人員6人筆試歷年參考題庫附帶答案詳解
- 蘇州2025年江蘇蘇州張家港市招聘備案制教師47人筆試歷年參考題庫附帶答案詳解
- 秦皇島2025年河北秦皇島市第二醫(yī)院招聘人事代理人員115人筆試歷年參考題庫附帶答案詳解
- 梧州2025年廣西梧州市事業(yè)單位招聘中小學(xué)幼兒園教師507人筆試歷年參考題庫附帶答案詳解
- 2025年中國多流水表市場調(diào)查研究報告
- 德州2024年山東德州天衢新區(qū)第三批招聘教師60人筆試歷年參考題庫附帶答案詳解
- 2025至2031年中國高亮度充電式手筒行業(yè)投資前景及策略咨詢研究報告
- 2025年自動補償式交流穩(wěn)壓器項目可行性研究報告
- 臺球運動中的理論力學(xué)
- 春節(jié)(節(jié)后復(fù)工)安全教育培訓(xùn)
- “高中英語閱讀課件-閱讀策略與技巧”
- 透明質(zhì)酸注射美容記錄
- GB/T 25922-2023封閉管道中流體流量的測量用安裝在充滿流體的圓形截面管道中的渦街流量計測量流量
- 培訓(xùn)-責(zé)任心課件
- 播音主持外部技巧:停連重音語氣節(jié)奏課件講義
- 安徽杭富固廢環(huán)保有限公司10萬噸工業(yè)廢物(無機類)資源化利用及無害化處置項目環(huán)境影響報告書
- 商業(yè)綜合體市場調(diào)研報告
- GB/T 42096-2022飛機耐火電纜性能要求
- 2022年版義務(wù)教育勞動課程標(biāo)準(zhǔn)學(xué)習(xí)培訓(xùn)解讀課件筆記
評論
0/150
提交評論