軟件學(xué)習(xí)數(shù)據(jù)處理插值擬合曲面_第1頁
軟件學(xué)習(xí)數(shù)據(jù)處理插值擬合曲面_第2頁
軟件學(xué)習(xí)數(shù)據(jù)處理插值擬合曲面_第3頁
軟件學(xué)習(xí)數(shù)據(jù)處理插值擬合曲面_第4頁
軟件學(xué)習(xí)數(shù)據(jù)處理插值擬合曲面_第5頁
已閱讀5頁,還剩190頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

第5章曲線與曲面

曲線曲面的計(jì)算機(jī)輔助設(shè)計(jì)源于20世紀(jì)60年代的飛機(jī)和汽車工業(yè)。1963年美國波音公司的Ferguson提出用于飛機(jī)設(shè)計(jì)的參數(shù)三次方程;1962年法國雷諾汽車公司的Bézier于提出的以逼近為基礎(chǔ)的曲線曲面設(shè)計(jì)系統(tǒng)UNISURF,此前deCasteljau大約于1959年在法國另一家汽車公司雪鐵龍的CAD系統(tǒng)中有同樣的設(shè)計(jì),但因?yàn)楸C艿脑蚨鴽]有公布;1964年Coons提出了一類布爾和形式的曲面;1972年,deBoor和Cox分別給出B樣條的標(biāo)準(zhǔn)算法;1975年以后,Riesenfeld等人研究了非均勻B樣條曲線曲面,美國錫拉丘茲大學(xué)的

Versprille研究了有理B樣條曲線曲面,20世紀(jì)80年末、90年代初,Piegl和Tiller等人對有理B樣條曲線曲面進(jìn)行了深入的研究,并形成非均勻有理B樣條(Non-UniformRationalB-Spline,簡稱NURBS);1991年國際標(biāo)準(zhǔn)組織(ISO)正式頒布了產(chǎn)品數(shù)據(jù)交換的國際標(biāo)準(zhǔn)STEP,NURBS是工業(yè)產(chǎn)品幾何定義唯一的一種自由型曲線曲面。

從衛(wèi)星的軌道、導(dǎo)彈的彈道,到汽車和飛機(jī)等的外形,直至日常生活中的圖案和花樣設(shè)計(jì),都離不了對曲線的描述和繪制。以至于可以說,幾乎沒有一張?jiān)O(shè)計(jì)圖紙上是沒有曲線的。

在我們遇到的各種各樣的曲線中,歸納起來,大概不外乎兩類:一類是我們已經(jīng)比較熟悉的,如圓、橢圓、雙曲線、正弦余弦、概率分布、擺線螺線等等。這類曲線均可以用一個曲線方程式來表示,稱此類曲線為規(guī)則曲線。比如圓的方程可以寫成x2+y2=R2等。

而另有一類曲線,我們尚不能確切給出描述整個曲線的方程,它們往往是由一些從實(shí)際中測量得到的一系列離散數(shù)據(jù)點(diǎn)用曲線擬合方法來逼近的,稱為不規(guī)則曲線。這些曲線一般采用分段的多項(xiàng)式參數(shù)方程來表示,由此形成一條光滑連續(xù)的曲線。常見的參數(shù)曲線有拋物樣條曲線、Hermite曲線、Bezier曲線、和B樣條曲線等。

當(dāng)曲線的數(shù)學(xué)表達(dá)方法確定以后,剩下的問題就是如何把這些曲線繪制出來。要繪制一條指定的曲線函數(shù)的直接方法是用很多短直線段來逼近曲線。繪出的曲線的光滑度和精確度取決于我們所選擇的數(shù)據(jù)點(diǎn)的精度和數(shù)量。點(diǎn)的數(shù)量越多,直線段越短,則連成的曲線愈接近于理想曲線。至于點(diǎn)的數(shù)量取多少,直線段取多長,則取決于我們對所繪制曲線的精度要求和圖形輸出設(shè)備的精度,但我們對所繪制曲線的精度要求不能逾越圖形輸出設(shè)備所實(shí)際具有的精度。規(guī)則曲線和曲面的3種坐標(biāo)表示法

一般平面曲線常用直角坐標(biāo)、極坐標(biāo)或參數(shù)方程表示,如工程上常用的漸開線、擺線以及正弦余弦曲線等,都是用這三種坐標(biāo)表示的重要曲線。但從計(jì)算機(jī)圖形學(xué)和計(jì)算幾何的角度看,用參數(shù)方程繪制曲線比較方便。

實(shí)際上繪制任何平面曲線.都要將曲線方程用參數(shù)方程形式表示,即得到曲線上點(diǎn)坐標(biāo)x與y的分別計(jì)算式。于是計(jì)算出點(diǎn)的坐標(biāo)值,調(diào)用畫線函數(shù)或畫點(diǎn)函救繪出曲線上的所有點(diǎn),便得到一條曲線。曲線的表示形式(1)顯示表示y=f(x)例:y=kx+b(2)隱式表示f(x,y)=0(二維)x2+y2=R2(3)參數(shù)表示(三維)(三維)(二維)(二維)(三維)顯式或隱式表示存在下述問題:(1)與坐標(biāo)軸相關(guān);會出現(xiàn)斜率為無窮大的情形(如垂線);(3)不便于計(jì)算機(jī)編程。參數(shù)表示的優(yōu)點(diǎn):(1)可以滿足幾何不變性的要求。(2)有更大的自由度來控制曲線、曲面的形狀(3)對曲線、曲面進(jìn)行變換,可對其參數(shù)方程直接進(jìn)行幾何變換。(4)便于處理斜率為無窮大的情形,不會因此而中斷計(jì)算。(5)便于用戶把低維空間中曲線、曲面擴(kuò)展到高維空去。(6)規(guī)格化的參數(shù)變量t∈[0,1],使其相應(yīng)的幾何分量是有界的,而不必用另外的參數(shù)去定義邊界。(7)易于用矢量和矩陣表示幾何分量,簡化了計(jì)算。參數(shù)樣條曲線和曲面的常用術(shù)語

在工程設(shè)計(jì)中,一般多采用低次的參數(shù)樣條曲線。這是因?yàn)楦叽螀?shù)樣條曲線計(jì)算費(fèi)時,其數(shù)學(xué)模型難于建立且性能不穩(wěn)定,即任何一點(diǎn)的幾何信息的變化都有可能引起曲線形狀復(fù)雜的變化。因此,實(shí)際工作中常采用二次或三次參數(shù)樣條曲線,如:二次參數(shù)樣條曲線:

P(t)=A0

+A1t+A2t2

三次參數(shù)樣條曲線:

P(t)=A0

+A1t+A2t2

+A3t3

2.型值點(diǎn)和控制點(diǎn)所謂型值點(diǎn),是指通過測量或計(jì)算得到的曲線上少量描述曲線幾何形狀的數(shù)據(jù)點(diǎn)。由于型值點(diǎn)的數(shù)量有限,不足以充分描述曲線的形狀,因此通常是在求得一些型值點(diǎn)后,采用一定的數(shù)學(xué)方法,建立曲線的數(shù)學(xué)模型,從而再根據(jù)數(shù)學(xué)模型去獲得曲線上每一點(diǎn)的幾何信息。所謂控制點(diǎn),是指用來控制或調(diào)整曲線形狀的特殊點(diǎn),曲線段本身不通過該控制點(diǎn)。2.切線、法線和曲率

當(dāng)曲線上的點(diǎn)Q趨于M時,割線的極限位置稱為曲線在點(diǎn)M處的切線。若參數(shù)曲線上任一點(diǎn)的坐標(biāo)為p(t)

=

[x(t),y(t),z(t)],則該點(diǎn)的切線方程即為參數(shù)曲線在該點(diǎn)處的一階導(dǎo)函數(shù),即p'(t)=

[x'(t),y'(t),z'(t)]。

法線就是垂直切線方向且通過該點(diǎn)的直線。

曲線上兩點(diǎn)M和Q的切線的夾角δ與弧長MQ之比,當(dāng)Q趨于M時的極限,即稱為曲線在M點(diǎn)的曲率。曲率也是切線的方向角對于弧長的轉(zhuǎn)動率,其值為曲線在M處的二階導(dǎo)數(shù)。

yxQMαdαα+dαds曲線的曲率3.插值、逼近和擬合

插值與逼近是曲線設(shè)計(jì)中的兩種不同方法。插值設(shè)計(jì)方法要求建立的曲線數(shù)學(xué)模型,嚴(yán)格通過已知的每一個型值點(diǎn)。而逼近設(shè)計(jì)方法,顧名思義,用這種方法建立的曲線數(shù)學(xué)模型只是近似地接近已知的型值點(diǎn)。而曲線的擬合則是這兩種設(shè)計(jì)方法的統(tǒng)稱,是指在曲線的設(shè)計(jì)過程中,用插值或逼近方法使生成的曲線達(dá)到某些設(shè)計(jì)要求,如在允許的范圍內(nèi)貼近原始的型值點(diǎn)或控制點(diǎn)序列,或曲線看上去很光滑等。

y=

(x)已知y1

=f(x1)y2

=f

(x2)求:

(x)插值函數(shù)參數(shù)三次曲線曲面(1)在多項(xiàng)式曲線插值中,當(dāng)需要滿足的插值條件越多時,一般來說多項(xiàng)式曲線的次數(shù)也會越高。導(dǎo)致曲線出現(xiàn)扭擺的可能性也就越大。(2)而單一的低次多項(xiàng)式曲線又難以描述復(fù)雜的曲線。(3)將一段低次曲線在滿足一定的連接條件下逐段拼接起來。以分段(piecewise)方式定義的曲線構(gòu)成組合(composite)曲線。(4)相應(yīng)的用分片方法定義的曲面就是組合曲面。

從工程應(yīng)用的角度講,曲線曲面可分成兩大應(yīng)用需求:擬合型和設(shè)計(jì)型。擬合型:對已經(jīng)存在的離散點(diǎn)列構(gòu)造出盡可能光滑的曲線或曲面,用以直觀(而忠實(shí))地反映出實(shí)驗(yàn)特性、變化規(guī)律和趨勢等。(2)設(shè)計(jì)型:

設(shè)計(jì)人員對其所設(shè)計(jì)的曲線(曲面)并無定量的概念,而是在設(shè)計(jì)過程中即興發(fā)揮。

曲線、曲面本身的基礎(chǔ)理論和進(jìn)一步的研究與發(fā)展應(yīng)該屬于計(jì)算機(jī)輔助幾何設(shè)計(jì)(CAGD)的范疇

在計(jì)算機(jī)圖形學(xué)中講授曲線、曲面知識的目的是如何更好地在計(jì)算機(jī)上顯示曲線、曲面,以計(jì)算機(jī)圖形學(xué)的優(yōu)勢更好地展示多彩的世界。參數(shù)曲線基礎(chǔ)

曲線的表示形式參數(shù)曲線的切矢量、弧長、法矢量、曲率插值、逼近、擬合及光順參數(shù)連續(xù)性與幾何連續(xù)性參數(shù)曲線將t歸范化為[0,1]:t=(t-a)/b-a)a→tt=0;b→tt=1參數(shù)方程的優(yōu)點(diǎn):

有更大的自由度來控制曲線、曲面的形狀。

形式不依賴于坐標(biāo)系的選取,具有形式不變性.

幾何變換方便表示能力強(qiáng)直線參數(shù)方程園參數(shù)方程t10P1P0P1(x,y)參數(shù)曲線的定義

一條用參數(shù)表示的曲線是一個有界的點(diǎn)集,它可以表示為帶參數(shù)的、連續(xù)的、單值的數(shù)學(xué)函數(shù):(規(guī)格化)參數(shù)曲線的位置矢量:曲線上任一點(diǎn)的坐標(biāo)可用其位置矢量表示參數(shù)曲線的切矢量:

當(dāng)曲線上的點(diǎn)R趨于Q時,割線的極限位置稱為曲線在點(diǎn)R處的切線。

它反映曲線上各點(diǎn)的一個坐標(biāo)(y)關(guān)于另一個坐標(biāo)變量(x)的變化率.dP/dt切向量(切矢量)選擇弧長s作為參數(shù),則是單位切矢量根據(jù)弧長微分公式有:于是有,即為單位矢量法矢量與切向量垂直的法矢稱為曲線在該點(diǎn)的主法矢量N矢量積是第三個單位矢量,它垂直于T和N。把平行于矢量B的法矢稱為曲線的副法矢量我們可以推導(dǎo)出:T(切矢)、N(主法矢)和B(副法矢)構(gòu)成了曲線上的活動坐標(biāo)架N、B構(gòu)成的平面稱為法平面,N、T構(gòu)成的平面稱為密切平面,B、T構(gòu)成的平面稱為從切平面。

曲率和撓率(1)曲率即稱為曲率,其幾何意義是曲線的單位切矢對弧長的轉(zhuǎn)動率曲率k的倒數(shù)稱為曲率半徑。(2)撓率

的絕對值等于副法線方向(或密切平面)對于弧長的轉(zhuǎn)動率.

平面曲線的密切面即曲線所在平面參數(shù)曲線的撓率

反映曲線的扭撓程度,即曲線在該點(diǎn)處扭出密切面的速率.B(s+

s)

撓率曲率單位切矢量單位副切矢量撓率法平面密切平面從切面tnρbP圖7-2曲線特性分析用s表示曲線的弧長,以弧長為參數(shù)的曲線方程稱為自然參數(shù)方程。以弧長為參數(shù)的曲線,其切矢為單位矢量,記為t(s)。切矢t(s)對弧長s求導(dǎo),所得導(dǎo)矢dt(s)/ds與切矢相垂直,稱為曲率矢量,如圖7-2,其單位矢量稱為曲線的單位主法矢,記為n(s),其模長稱為曲線的曲率,記為k(s)。曲率的倒數(shù)稱為曲線的曲率半徑,記為

與t和n相互垂直的單位矢量稱為副法矢,記為b(s)。由t和n張成的平面稱為密切平面;由n和b張成的平面稱為法平面;由t和b張成的平面稱為從切面。

曲線段間的連續(xù)性曲線間連接的光滑度的度量有兩種:(1)函數(shù)的可微性(參數(shù)連續(xù)性):組合參數(shù)曲線在連接處具有直到n階連續(xù)導(dǎo)矢,即n階連續(xù)可微,這類光滑度稱之為Cn

或n階參數(shù)連續(xù)性。(2)幾何連續(xù)性:組合曲線在連接處滿足不同于Cn的某一組約束條件,稱為具有n階幾何連續(xù)性,簡記為Gn

Cn連續(xù)保證Gn

連續(xù),但反過來不行。也就是說Cn

連續(xù)的條件比Gn

連續(xù)的條件要苛刻曲線段間的連續(xù)性(1)參數(shù)連續(xù)性

C0連續(xù)(零階參數(shù)連續(xù)):

前一曲線段終點(diǎn)與后一曲線段起點(diǎn)相同。(在鄰接點(diǎn)曲線形狀可能發(fā)生突變,若以相同的參數(shù)間隔移動鏡頭,會產(chǎn)生移動過程的不連續(xù)性.)

C1連續(xù)(一階參數(shù)連續(xù)):

兩相鄰曲線段連接點(diǎn)處有相同的一階導(dǎo)數(shù)。

C2連續(xù)(二階參數(shù)連續(xù)):

兩相鄰曲線段連接點(diǎn)處有相同的一階導(dǎo)數(shù)和二階導(dǎo)數(shù)。

C0連續(xù)C1連續(xù)C2連續(xù)(2)幾何連續(xù)性(只需在鄰接處的導(dǎo)數(shù)成比例)

G0幾何連續(xù)

前一曲線段終點(diǎn)與后一曲線段起點(diǎn)相同。

G1幾何連續(xù)(斜率連續(xù))

兩相鄰曲線段連接點(diǎn)處一階導(dǎo)數(shù)成比例。

G2幾何連續(xù)

兩相鄰曲線段連接點(diǎn)處一階導(dǎo)數(shù)和二階導(dǎo)數(shù)成比例。G2連續(xù)性下,兩個曲線段在交點(diǎn)處的曲率相等。在實(shí)際的曲線造型應(yīng)用中,我們要適當(dāng)?shù)剡x擇曲線段間的連續(xù)性,使造型物體既能保證其光滑性的要求,也能保證其美觀性的要求。給定一組有序的數(shù)據(jù)點(diǎn)Pi,i=0,1,…,n,構(gòu)造一條曲線順序通過這些數(shù)據(jù)點(diǎn),稱為對這些數(shù)據(jù)點(diǎn)進(jìn)行插值,所構(gòu)造的曲線稱為插值曲線。插值線性插值:假設(shè)給定函數(shù)f(x)在兩個不同點(diǎn)x1和x2的值,用一個線形函數(shù):y=ax+b,近似代替,稱為的線性插值函數(shù)。拋物線插值:已知在三個互異點(diǎn)x1,x2,x3

的函數(shù)值為y1,y2,y3,要求構(gòu)造一個函數(shù)

使拋物線在結(jié)點(diǎn)處與在處的值相等線性插值拋物線插值y=f(x)y=

(x)插值函數(shù)

曲線設(shè)計(jì)基礎(chǔ)插值曲線和擬合曲線(InterpolatecurveandFitcurve)

原始數(shù)據(jù)點(diǎn)精確原始數(shù)據(jù)點(diǎn)不精確XYX’Y’由一組基函數(shù)及相聯(lián)系的系數(shù)矢量來表示:采用不同的基函數(shù),曲線的數(shù)學(xué)表示方法就不同。基函數(shù)一旦確定,系數(shù)矢量就完全定義了曲線。計(jì)算機(jī)輔助幾何設(shè)計(jì)(CAGD)中的曲線的一般表示形式規(guī)范基表示具有幾何不變性。即同樣的點(diǎn)在不同坐標(biāo)系中生成的曲線相同。拋物線方程不具有幾何不變性。若稱為規(guī)范基。n次多項(xiàng)式的全體構(gòu)成n次多項(xiàng)式空間,在其中任選一組線性無關(guān)的多項(xiàng)式都可以作為基。冪基ui(i=0,1,…,n)是最簡單的多項(xiàng)式基,相應(yīng)的參數(shù)多項(xiàng)式曲線方程為:對于給定的n+1個數(shù)據(jù)點(diǎn)Pi(i=0,1,2,…,n)欲構(gòu)造其插值曲線或逼近曲線,必先得到對應(yīng)于各數(shù)據(jù)點(diǎn)Pi的參數(shù)值ui,ui是一個嚴(yán)格遞增的序列△U:u0<u1<…<un采用不同的參數(shù)化,得到的曲線也不同。常用的參數(shù)化方法:(1)

均勻參數(shù)化(等距參數(shù)化)(2)

積累弦長參數(shù)化(3)

向心參數(shù)化(4)

修正弦長參數(shù)化對給定數(shù)據(jù)點(diǎn)實(shí)行參數(shù)化,將參數(shù)值ui代入上述方程,使之滿足插值條件:,i=0,1,…,n得一組線性方程組:

參數(shù)多項(xiàng)式曲線解線性方程組,可得唯一解。冪基多項(xiàng)式曲線方程中的系數(shù)矢量幾何意義不明確,構(gòu)造曲線時,需解線性方程組,n較大時,不可取。其它多項(xiàng)式插值曲線如Lagrange、Newton、Hermite等較之冪基多項(xiàng)式曲線在計(jì)算性能等方面有較大改進(jìn),但總體上多項(xiàng)式曲線存在兩個問題:l

次數(shù)增高時,出現(xiàn)多余的拐點(diǎn);l

整體計(jì)算,一個數(shù)據(jù)點(diǎn)的微小改動,可能引起曲線整體大的波動。由于高次多項(xiàng)式曲線存在缺陷,單一低次多項(xiàng)式曲線又難以描述復(fù)雜形狀的曲線。所以采用低次多項(xiàng)式按分段的方式在一定連續(xù)條件下拼接復(fù)雜的組合曲線是較好的選擇。

低次多項(xiàng)式組合曲線y1(x)=a1+b1x+c1x2+d1x3y2(x)=a2+b2x+c2x2+d2x3y3(x)=a3+b3x+c3x2+d3x3以三次多項(xiàng)式為例:“線動成面”如何選擇基函數(shù)使系數(shù)具有幾何意義,且操作方便,易于修改是曲線曲面設(shè)計(jì)方法的發(fā)展方向。

三次樣條函數(shù)(Spline)Schoenberg于1946年提出,國外60年代廣泛研究,國內(nèi)70年代開始。R(x)—梁的曲率半徑M(x)—作用在梁上的彎矩E—材料的彈性模量I—梁橫截面的慣性矩在梁彎曲不大的情況下,y′<<1,簡化為:y′′(x)~M(x)y(x)是x的三次多項(xiàng)式,這就是插值三次樣條函數(shù)的物理背景。

樣條曲線的物理背景樣條(spline)是富有彈性的細(xì)木條或有機(jī)玻璃條。早期船舶、汽車、飛機(jī)放樣時用壓鐵壓在樣條上的一系列型值點(diǎn)上,調(diào)整壓鐵達(dá)到設(shè)計(jì)要求后繪制其曲線,稱為樣條曲線y(x)。三次樣條曲線曲面(1)樣條是物質(zhì)連續(xù)的,相當(dāng)于函數(shù)C0連續(xù);(2)樣條在壓鐵兩側(cè)斜率相同,相當(dāng)于函數(shù)C1連續(xù);(3)樣條在壓鐵兩側(cè)曲率相同,相當(dāng)于函數(shù)C2連續(xù);

三次樣條函數(shù)的數(shù)學(xué)描述

在區(qū)間[a,b]上給定一個分割:a=x1<x2<???<xn=b,則稱在區(qū)間[a,b]上滿足下列條件的函數(shù)S(x)為三次樣條函數(shù):(1)在每個子區(qū)間[xi-1,xi](i=1,2,???,n)上為三次多項(xiàng)式;(2)在整個區(qū)間[a,b]上具有直到二階連續(xù)的導(dǎo)數(shù),即在內(nèi)節(jié)點(diǎn)xi處,

i=2,3,???,n-1,k=0,1,2(3)給定一組型值點(diǎn)(xi,yi)(i=1,2,???,n),S(x)滿足S(xi)=y(tǒng)i,

則稱S(x)為插值三次樣條函數(shù);(xi-1,yi-1)(xi,yi)ti-1tiS(x)=ai+bix+cix2+dix3

i=1,2,…,nS(xi-1)=yi-1S(xi)=yiS’(xi-1)=ti-1S’(xi)=ti

物理樣條的性質(zhì)用型值點(diǎn)處的一階導(dǎo)數(shù)表示插值三次樣條函數(shù)―m關(guān)系式

插值三次樣條函數(shù)有兩種常用的表達(dá)方式,一種是用型值點(diǎn)處的一階導(dǎo)數(shù)表示的m關(guān)系式;一種是用型值點(diǎn)處二階導(dǎo)數(shù)表示的M關(guān)系式。本書重點(diǎn)介紹m關(guān)系式。

給定一組型值點(diǎn)(xi,yi)(i=1,2,???,n),mi為(xi,yi)處的斜率。第i段樣條函數(shù)可表示為:

該段曲線的首端通過(xi-1,yi-1),斜率為mi-1,末端通過(xi,yi),斜率為mi,樣條連續(xù)條件可表達(dá)為:

將yi(x)代入,得:yi(x)=ai+bix+cix2+dix3(xi-1,yi-1)(xi,yi)mi-1mi(x0,y0)(xn,yn)mnm0圖7-4型值點(diǎn)和斜率(xi+1,yi+1)mi+1yi+1(x)=ai+1+bi+1x+ci+1x2+di+1x3將所求系數(shù)代入樣條函數(shù)表達(dá)式,得:式中xi-1≤x≤xi(i=1,2,…,n)上述公式為插值三次樣條函數(shù)的基本公式。只要求解出型值點(diǎn)處的斜率mi(i=0,1,2,…,n),就可以應(yīng)用上述公式計(jì)算插值三次樣條函數(shù)的函數(shù)值、一階導(dǎo)數(shù)和二階導(dǎo)數(shù)。以(xi-1+hi)代替xi,代入yi(x)的表達(dá)式,并按(x-xi-1)的冪次整理成如下矩陣表達(dá)式:

插值三次樣條函數(shù)的矩陣表達(dá)式:式中xi-1≤x≤xi(i=1,2,…,n)若令hi=1,t=x-xi-1,0≤t≤1,則得到均勻參數(shù)插值三次樣條。1963年美國波音公司的Ferguson用于飛機(jī)設(shè)計(jì)的參數(shù)三次方程即是均勻參數(shù)插值三次樣條曲線:

其中P(t)表示位置矢量,P′(t)表示切矢由上述樣條函數(shù)公式可以看出,構(gòu)造插值三次樣條時除已經(jīng)給定的型值點(diǎn)外,還必須得到型值點(diǎn)處的切矢。為了計(jì)算型值點(diǎn)處的切矢mi(i=0,1,2,…,n),可以利用前、后二曲線段在型值點(diǎn)處的二階導(dǎo)數(shù)連續(xù)的條件:

Hermite曲線三次參數(shù)多項(xiàng)式及其矩陣表示Hermite曲線三次參數(shù)矩陣表示矢量pi沒有明顯的幾何意義,需將矩陣A進(jìn)一步分解:A=MB使幾何矩陣B=[Bn,Bn-1,…,B0]中的各分量有明顯的幾何意義.

Bi稱為控制點(diǎn)基矩陣M是(n+1)*(n+1)矩陣,它將矩陣B變?yōu)榫仃嘇.為使矩陣有明確的幾何意義,令A(yù)=M.B使幾何矩陣B=[Bn,Bn-1,…,B0

]的各分量有較直觀的幾何意義(稱為控制頂點(diǎn)),B稱為幾何矩陣,M稱為基矩陣.三次參數(shù)矩陣表示可控制形狀的參數(shù):切矢量、法矢量、曲率、撓率等等直線矩陣表示例:參數(shù)直線段三次Hermite曲線

給定曲線的兩個端點(diǎn):P0,P1,及兩端點(diǎn)處的切線:R0,R1;則滿足下列條件的三次多項(xiàng)式曲線為Hermit曲線:

設(shè)Hermit曲線的幾何矩陣為BH,基矩陣為MH。(A=MH.BH)則三次參數(shù)矩陣表示取BH=[P0P1R0R1]T,則上列方程的解不是唯一的,取四個基函數(shù):TMH確定了一組Hermit基函數(shù)(調(diào)合函數(shù))TMH確定了一組Hermit基函數(shù)(調(diào)合函數(shù))F3F2F1F0F3F2F1F0三次Hermit曲線給定直線的兩個端點(diǎn):P0,P1,及兩端點(diǎn)處的切線:R0,R1則Hermit曲線的幾何矩陣GH和基矩陣MH分別為三次Hermit曲線方程為其中TMH確定了四個基函數(shù)調(diào)合函數(shù)楊欽P185公式三次Hermit曲線

Hermite樣條曲線是以法國數(shù)學(xué)家CharlesHermite命名的,是一個分段三次多項(xiàng)式并在每個型值點(diǎn)有給定的切線。Hermite樣條曲線可以局部調(diào)整,因?yàn)槊總€曲線段僅依賴于端點(diǎn)約束。

整個曲線通過所有的型值點(diǎn),而對于每個曲線段來說,它通過兩個相鄰的型值點(diǎn)。我們把這兩個點(diǎn)作為該段曲線的起點(diǎn)和終點(diǎn),設(shè)為P0點(diǎn)和P1點(diǎn)。并且假定曲線段在兩端點(diǎn)處的切矢為已知,分別設(shè)為

P‘0和

P’1。曲線的參變量t是在兩個端點(diǎn)取值0和1之間變化。

P0(t0=0)P’0P1(t1)P’1三次Hermite曲線形狀控制:改變端點(diǎn)位置矢量;調(diào)節(jié)切矢量(方向和大小)調(diào)節(jié)切矢量方向形狀控制:改變切矢量的長度。R0,R1方向與P0,P1不變,R0,R1長度變化R0=Q0-P0R1=Q1-P1(Q0和Q1分別為空間位置矢量)設(shè)P0=[100,100];P1=[200,150];Q0=[-200,100];Q1=[-100,120];例:二維Hermite曲線(100,100)(0,0)xY-200100Q0P0-100120Q1P1(200,150)三次Hermite曲線的生成P0=[100,100];P1=[200,150];Q0=[-200,100];Q1=[-100,120];count=100;deltat=1/count;t=0.0;PX(1)=P0(1);PY(1)=P0(2);fori=1:count t=t+deltat;F3=2*t*t*t-3*t*t+1;F2=-2*t*t*t+3*t*t;F1=t*t*t-2*t*t+t;F0=t*t*t-t*t;

PX(i+1)=F3*P0(1)+F2*P1(1)+F1*Q0(1)+F0*Q1(1); PY(i+1)=F3*P0(2)+F2*P1(2)+F1*Q0(2)+F0*Q1(2);endfigure;plot(PX,PY);axisequal;%每個坐標(biāo)軸具有均勻的間隔title('P0=[100,100];P1=[200,150];Q0=[-200,100];Q1=[-100,120];');-200100plot(PX,PY);plot(PX,PY,PX,PY,'o');voidCHlineView::OnDraw(CDC*pDC){ CHlineDoc*pDoc=GetDocument(); ASSERT_VALID(pDoc); //TODO:adddrawcodefornativedatahere

intp0[2]={300,150}; intp1[2]={300,350}; intR0[2]={-500,0}; intR1[2]={-500,0}; intcount=1000,i; floatdeltat; floatt=0.0,F3,F2,F1,F0; floatxf,yf; intx,y; deltat=1.0/count; pDC->SetPixel(p0[0],p0[1],(COLORREF)0x00000000); for(i=1;i<count;i++) { t=t+deltat; F3=2*t*t*t-3*t*t+1;F2=-2*t*t*t+3*t*t;F1=t*t*t-2*t*t+t;F0=t*t*t-t*t;xf=F3*p0[0]+F2*p1[0]+F1*R0[0]+F0*R1[0]; yf=F3*p0[1]+F2*p1[1]+F1*R0[1]+F0*R1[1]; pDC->SetPixel(xf,yf,(COLORREF)0x00000000); }}p0[2]={300,150};p1[2]={300,350};R0[2]={-500,0};R1[2]={-500,0};voidCHimiteNEWView::OnDraw(CDC*pDC){ CHimiteNEWDoc*pDoc=GetDocument(); ASSERT_VALID(pDoc); //TODO:adddrawcodefornativedatahere intp0[2]={300,150};intp1[2]={300,350}; intR0[2]={-500,0};intR1[2]={-500,0}; intcount=1000,i;floatdeltat; floatt=0.0,F3,F2,F1,F0; floatx,y; deltat=1.0/count; x=p0[0];y=768-p0[1];

pDC->SetPixel(x,y,(COLORREF)0x00000000); for(i=1;i<count;i++) { t=t+deltat; F3=2*t*t*t-3*t*t+1;F2=-2*t*t*t+3*t*t;F1=t*t*t-2*t*t+t;F0=t*t*t-t*t;x=F3*p0[0]+F2*p1[0]+F1*R0[0]+F0*R1[0]; y=F3*p0[1]+F2*p1[1]+F1*R0[1]+F0*R1[1];

y=768-y; pDC->SetPixel(x,y,(COLORREF)0x00000000); }}p0[2]={300,150};p1[2]={300,350};R0[2]={-500,0};R1[2]={-500,0};p0[2]={100,450};p1[2]={700,650};R0[2]={-400,700};R1[2]={-700,200};p0[2]={300,350};p1[2]={310,255};R0[2]={500,-800};R1[2]={-600,-760};R1R0p0[2]={300,350};p1[2]={400,350};R0[2]={500,500};R1[2]={500,-500};R0R1

如兩條二維Hermite三次曲線段在連接點(diǎn)有相同的函數(shù)值和一階導(dǎo)數(shù)值,這樣的得到的曲線是C1連續(xù)的。Bezier曲線

在上面討論的三次插值樣條曲線中,它們的共同特點(diǎn)是:最終生成的曲線通過所有給出的型值點(diǎn),我們稱之為“點(diǎn)點(diǎn)通過”。通過以上的討論,我們可以看到,這種曲線的計(jì)算和編程都比較簡單易行,并且分別使曲線達(dá)到了一階和二階連續(xù).這已經(jīng)可以滿足一般的工程應(yīng)用問題了,所以應(yīng)用較廣。

但在外形設(shè)計(jì)中,比如船舶和汽車的外形設(shè)計(jì),初始給出的型值點(diǎn)往往并不精確,并且有些地方完全僅僅是為了外觀上的考慮。在這樣的一種應(yīng)用前提下,去一點(diǎn)一點(diǎn)地插值計(jì)算并使曲線點(diǎn)點(diǎn)通過不很合算。

另外,在外形設(shè)計(jì)中,最好能使設(shè)計(jì)的結(jié)果靈活直觀地反映出來,比如局部修改型值點(diǎn)也能在外形上得到直觀的反映,以便于設(shè)計(jì)者進(jìn)行交互式設(shè)計(jì)操作。這些,前面所介紹的插值樣條曲線都是不夠的。

為了改善這種情況,法國Bezier提出了一種新的參數(shù)曲線逼近方法,稱作Bezier曲線。后來Gordon,Riesenfeld和Forrest等人對Bezier曲線進(jìn)行了修改和發(fā)展,提出了B樣條曲線。這兩種曲線都因能較好地適用于外形設(shè)計(jì)的特殊要求而獲得了廣泛的應(yīng)用。Bezier曲線的形狀是通過一組多邊折線(也稱為Bezier多邊形或特征多邊形)的各項(xiàng)唯一地定義出來的。

在該多邊折線的各頂點(diǎn)中,只有第一點(diǎn)和最后一點(diǎn)是在曲線上的,其余的頂點(diǎn)則用來定義曲線的導(dǎo)數(shù)、階次和形狀。第一條邊和最后一條邊則表示出了曲線在起點(diǎn)處和終點(diǎn)處的切線方向,即第一條邊和最后一條邊分別和曲線在起點(diǎn)和終點(diǎn)處相切。曲線的形狀趨向于多邊折線的形狀。改變多邊折線的頂點(diǎn)位置和曲線形狀的變化有著直觀的聯(lián)系。圖列舉了一些貝Bezier多邊折線和相應(yīng)的Bezier曲線的形狀關(guān)系。

P0P1P2P3P0P1P2P3P0P1P2P3Bezier曲線

滿足以下條件的一組折線集(Bezier特征多邊形)稱為Bezier曲線:曲線的起點(diǎn)和終點(diǎn)與多邊形的起點(diǎn)和終點(diǎn)重合,多邊形的第一條邊和最后一條邊表示曲線在起點(diǎn)和終點(diǎn)的切矢量方向。曲線的形狀趨向于Bezier特征多邊形的形狀.三次Bezier曲線定義Bezier曲線將函數(shù)逼近與幾何表示相結(jié)合.控制頂點(diǎn)折線集P0P1P2P3…Pn控制多邊形當(dāng)給定Bezier特征多邊形的n+1個頂點(diǎn)Pi時,Bezier曲線的逼近公式為:(權(quán)Bi,n(t)i=0,1,2,3,…n+1稱為基函數(shù))。Bernstein(伯恩斯坦)基函數(shù)(調(diào)合函數(shù)),也就是Bezier多邊形的各頂點(diǎn)位置向量之間的調(diào)和函數(shù)。Bernstein(伯恩斯坦)基函數(shù)(調(diào)合函數(shù))性質(zhì):(1)正性:對于所有的i、n及0

t

1,均有Bi,n0成立,且

Bi,n(0)=Bi,n(1)=0(2)規(guī)范性:(3)對稱性:(4)遞推性:(5)可導(dǎo)性0到3次Bernstein調(diào)和函數(shù)的圖形Bezier曲線的性質(zhì)1)端點(diǎn)C(0)=P0,C(1)=Pn2)端點(diǎn)切矢量

由Bernstein基函數(shù)的端點(diǎn)性質(zhì)可以推得,當(dāng)t=0時,P(0)=P0

;當(dāng)t=1時,P(1)=Pn。由此可見,Bezier曲線的起點(diǎn)、終點(diǎn)與相應(yīng)的特征多邊形的起點(diǎn)、終點(diǎn)重合。3)對稱性:頂點(diǎn)次序顛倒,其形狀不變.4)幾何不變性:曲線的位置和形狀只與特征多邊形的頂點(diǎn)位置有關(guān),不依賴于坐標(biāo)系的選取。5)凸包性(convexhull):

曲線位于特征多邊形的頂點(diǎn)的凸包內(nèi)6)變差縮減性:平面Bezier曲線與此平面內(nèi)任一直線的交點(diǎn)個數(shù)不多于其相應(yīng)特征多邊形與該直線的交點(diǎn)數(shù).其幾何意義是:Bezier曲線比其特征多邊形更光滑.控制頂點(diǎn)折線集P0P1控制多邊形一次Bezier曲線被表示為1+1個控制頂點(diǎn)的加權(quán)和。權(quán)Bi(t)i=0,1稱為基函數(shù)。一次Bezier曲線(n=1)矩陣表示控制頂點(diǎn)二次Bezier曲線被表示為2+1個控制頂點(diǎn)的加權(quán)和。權(quán)Bi(t)i=0,1,2稱為基函數(shù)。二次Bezier曲線(n=2)矩陣表示控制頂點(diǎn)折線集P0P1P2P3控制多邊形三次Bezier曲線被表示為3+1個控制頂點(diǎn)的加權(quán)和。權(quán)Bi(t)i=0,1,2,3稱為基函數(shù)。三次Bezier曲線的插值公式為:(權(quán)Bi(t)i=0,1,2,3稱為基函數(shù))。p1p2p0p3P(t)三次Bezier曲線(n=3)將C(t)寫成矩陣形式得三次Bezier曲線的矩陣表達(dá)式三次Bezier曲線矩陣表示調(diào)合函數(shù)BZB0,3(t)B2,3(t)B1,3(t)B3,3(t)01t楊欽P189公式三次Bezier曲線矩陣表示d0d1d2d3di為絕對位置矢量三次Bezier曲線的生成P0=[100,100];P1=[200,450];P2=[400,600];P3=[500,150];count=100;deltat=1/count;t=0.0;PX(1)=P0(1);PY(1)=P0(2);fori=1:count t=t+deltat; B0=1-3*t+3*t*t-t*t*t; B1=3*t-6*t*t+3*t*t*t; B2=3*t*t-3*t*t*t; B3=t*t*t;

PX(i+1)=B0*P0(1)+B1*P1(1)+B2*P2(1)+B3*P3(1); PY(i+1)=B0*P0(2)+B1*P1(2)+B2*P2(2)+B3*P3(2); endfigure;plot(PX,PY,PX,PY,'o');title('P0=[100,100];P1=[200,150];P2=[-200,100];P3=[-100,120];');p1p2p0p3P(t)Bezier曲線的拼接及其連續(xù)性

設(shè)有兩條Bezier曲線P(t)和Q(t),其控制頂點(diǎn)分別為:P0,P1,P2,…,Pm

和Q0,Q1,Q2,…,Qn

(1)達(dá)到G0連續(xù)的充要條件是:Q0=P3Bezier曲線的拼接及其連續(xù)性(2)達(dá)到G1連續(xù)的充要條件(Pm-1,Pm=Q0,Q1三點(diǎn)共線)P0P1P2P3Q0Q1Q2Q3P1P0P2P3Q0Q1Q2Q3(3)要使它們達(dá)到G2連續(xù)的充要條件是:在G1連續(xù)的條件下,

并滿足方程。NB擬局部性Bezier曲線的頂點(diǎn)反求

已知Bezier曲線的上給定參數(shù)處的位置矢量和參數(shù)階次,利用Bezier曲線的定義和端點(diǎn)特性,可列出一組方程,求解方程組,就可得到相應(yīng)控制頂點(diǎn).例:已知曲線上四個點(diǎn)分別為:Q0(120,0),Q1(45,0),Q3(0,45),Q4(0,120)

4個點(diǎn)相應(yīng)參數(shù)為:t=0,1/3,2/3,1解:由三次Bezier曲線端點(diǎn)性質(zhì)及曲線展開式:將Q0,Q1,Q3,Q4的坐標(biāo)代入方程組,可求得:P0(120,0),P1(35,-27.5),P2(-27.5,35),

P3(0,120),

Bezier曲線的不足之處:①確定了多邊形的頂點(diǎn)數(shù)(m個),也就決定了所定義的貝濟(jì)埃曲線的階次(m–1次),這樣很不靈活。②當(dāng)頂點(diǎn)數(shù)(m)較大時,曲線的階次將比較高。此時,多邊形對曲線形狀的控制將明顯減弱。③調(diào)和函數(shù)的值在開區(qū)間(0,1)內(nèi)均不為零。因此,所定義的曲線在(0<t<1)的區(qū)間內(nèi)的任何一點(diǎn)均要受到全部頂點(diǎn)的影響。即改變其中任一個頂點(diǎn)的位置,將會對整條曲線產(chǎn)生影響,因而對曲線進(jìn)行局部修改將成為不可能。B樣條曲線1972年,Gordon、Riesenfeld等人發(fā)展了1946年Schoenberg提出的樣條方法,提出了B樣條方法。用n次B樣條基函數(shù)替換了伯恩斯坦基函數(shù),構(gòu)造了B樣條曲線。B樣條曲線除了保持了Bezier所具有的優(yōu)點(diǎn)外,還增加了可以對曲線進(jìn)行局部修改這一突出的優(yōu)點(diǎn)。除此之外,它還具有對特征多邊形更逼近,多項(xiàng)式階次較低等優(yōu)點(diǎn)。因此,B樣條曲線在外形設(shè)計(jì)中得到了廣泛的重視和應(yīng)用。由B樣條基函數(shù)代替Bezier曲線中底Bernstein基函數(shù),即B樣條曲線。當(dāng)給定特征多邊形的n+1個頂點(diǎn)Pi(i=0,1,2,..,n)時,K次B樣條曲線的插值公式為(B樣條曲線基函數(shù)):(權(quán)Ni,k(u)i=0,1,2,3,…n+1稱為基函數(shù),即調(diào)合函數(shù))。B樣條曲線B樣條曲線的定義設(shè)Pi(i=0,1,2,3,…n)

為給定空間的n+1個頂點(diǎn)(即B樣條曲線特征多邊形的n+1個頂點(diǎn)),則k次(k+1階)的表達(dá)式為:調(diào)合函數(shù)k次B樣條曲線可達(dá)到k–1階連續(xù)。

第i段二次(k=2)Bezier曲線矩陣表示為:(P312)

第i段一次(k=1)B樣條曲線矩陣表示為:B均勻樣條曲線的矩陣表示第i段三次均勻B樣條曲線矩陣表示

B樣條曲線的性質(zhì):●端點(diǎn)及連續(xù)性(擴(kuò)展性):

如果對特征多邊形P0P1P2P3,增加一個頂點(diǎn)P4,則特征多邊形P1P2P3P4生成的三次B樣條曲線與P0P1P2P3生成的三次B樣條曲線在連接點(diǎn)的一階和二階導(dǎo)數(shù)都是連續(xù)的?!窬植啃?

三次B樣條曲線只被相鄰的4個頂點(diǎn)所控制,而與其它頂點(diǎn)無關(guān)。當(dāng)移動一個頂點(diǎn)時,只對其中二段曲線有影響,并不對整段曲線有影響?!駧缀尾蛔冃裕呵€的形狀與特征多邊形各頂點(diǎn)的相對位置有關(guān),而與坐標(biāo)系的選擇無關(guān)。三次均勻B樣條曲線的生成第i段三次均勻B樣條曲線的生成均勻B樣條曲線:

節(jié)點(diǎn)矢量中節(jié)點(diǎn)為沿參數(shù)軸均勻或等距分布,有節(jié)點(diǎn)區(qū)間長度為常數(shù)。這樣的節(jié)點(diǎn)矢量定義了均勻的B樣條基。三次B樣條曲線的表達(dá)式可以寫成:我們來討論一下三次B樣條曲線的端點(diǎn)性質(zhì)。由上式可以進(jìn)一步推導(dǎo)得:與書P193公式比較P(t)=[(1–t)3

P0+(3t3–6t2+4)P1+(-3t3+3t2+3t+1)P2+t3P3]P’(t)=[-3(1–t)2

P0+(9t2–12t

)P1+(-9t2+6t+3)P2+3t2P3]P”(t)=[6(1–t)P0+(18t–12

)P1+(-18t+6)P2+6tP3]∵∴以t

的端點(diǎn)值代入,得(三次B樣條曲線在端點(diǎn)處的性質(zhì)):三次B樣條曲線曲線段的起點(diǎn)P(0)位于△P0P1P2底邊P0P2的中線P1Pm上,且距P1點(diǎn)的三分之一處。該點(diǎn)處的切矢P`(0)平行于△P0P1P2的底邊P0P2,且長度為其二分之一。該點(diǎn)的二階導(dǎo)數(shù)P’’(0)等于中線矢量P1Pm的二倍,P0P1P2P3P4P’(0)P(0)P”(0)P”(1)P(1)P’(1)Pm

三次B樣條曲線段

同理,對于終點(diǎn)P(1)處的情形與此相應(yīng)。如果在B特征多邊形上增加了一個頂點(diǎn)P4,那么P1P2P3P4又可定義一段新的三次B樣條曲線。因?yàn)樾虑€段起點(diǎn)的有關(guān)數(shù)據(jù)和上一段曲線的終點(diǎn)的有關(guān)數(shù)據(jù)都只和P1、P2、P3三點(diǎn)有關(guān),所以該二段曲線在連接處的位置矢量,一階切矢和二階切矢都應(yīng)相等,即:

P'1(1)=P'2(0)

P''1(1)=P''2(0)這就證明了,三次B樣條曲線可以達(dá)到二階連續(xù)。

P0P1P2P3P4P’(0)P(0)P”(0)P”(1)P(1)P’(1)Pm改變該頂點(diǎn)只改變第1和第2段,對其它段沒有影響例:給定七個控制頂點(diǎn):P1(0,0),P2(1,1),P3(2,2),P4(4,0),P5(6,-4),P6(8,-5),P7(10,2)試用其繪制三次Bezier曲線和三次均勻B樣條曲線.問:可繪制幾段三次Bezier曲線可幾段三次均勻B樣條曲線.解:n=7,可繪制2段三次Bezier曲線可繪制n-3=7-3=4段三次均勻B樣條曲線.三次Bezier曲線不連續(xù)yx三次Bezier曲線不連續(xù)連續(xù)%三次Bezier曲線clear;clc;P1=[0,0];P2=[1,1];P3=[2,2];P4=[4,0];P5=[6,-4];P6=[8,-5];P7=[10,2];%繪制第一段曲線t=0.0;count=1000;deltat=1/count;fori=1:count+1B0=1-3*t+3*t*t-t*t*t; B1=3*t-6*t*t+3*t*t*t; B2=3*t*t-3*t*t*t; B3=t*t*t;

PX(i)=B0*P1(1)+B1*P2(1)+B2*P3(1)+B3*P4(1); PY(i)=B0*P1(2)+B1*P2(2)+B2*P3(2)+B3*P4(2);t=t+deltat;endfigure;plot(PX,PY,'blue');PXX=[P1(1),P2(1),P3(1),P4(1)];PYY=[P1(2),P2(2),P3(2),P4(2)];holdon;plot(PXX,PYY,':red',PXX,PYY,'o');%繪制第2段曲線t=0.0;count=1000;deltat=1/count;fori=1:count+1B0=1-3*t+3*t*t-t*t*t; B1=3*t-6*t*t+3*t*t*t; B2=3*t*t-3*t*t*t; B3=t*t*t;

PX(i)=B0*P4(1)+B1*P5(1)+B2*P6(1)+B3*P7(1); PY(i)=B0*P4(2)+B1*P5(2)+B2*P6(2)+B3*P7(2);t=t+deltat;endplot(PX,PY,'red');PXX=[P4(1),P5(1),P6(1),P7(1)];PYY=[P4(2),P5(2),P6(2),P7(2)];holdon;plot(PXX,PYY,':red',PXX,PYY,'o');%三次均勻B樣條曲線.clear;clc;P1=[0,0];P2=[1,1];P3=[2,2];P4=[4,0];P5=[6,-4];P6=[8,-5];P7=[10,2];t=0.0;count=1000;deltat=1/count;%繪制第一段曲線fori=1:count+1 B0=(-t*t*t+3*t*t-3*t+1)/6; B1=(3*t*t*t-6*t*t+4)/6; B2=(-3*t*t*t+3*t*t+3*t+1)/6; B3=t*t*t/6;PX(i)=B0*P1(1)+B1*P2(1)+B2*P3(1)+B3*P4(1); PY(i)=B0*P1(2)+B1*P2(2)+B2*P3(2)+B3*P4(2);t=t+deltat;endfigure;plot(PX,PY,‘blue’);函數(shù)holdon;PXX=[P1(1),P2(1),P3(1),P4(1)];PYY=[P1(2),P2(2),P3(2),P4(2)];plot(PXX,PYY,':red',PXX,PYY,'o');%繪制第2段曲線t=0.0;fori=1:count+1 B0=(-t*t*t+3*t*t-3*t+1)/6; B1=(3*t*t*t-6*t*t+4)/6; B2=(-3*t*t*t+3*t*t+3*t+1)/6; B3=t*t*t/6;PX(i)=B0*P2(1)+B1*P3(1)+B2*P4(1)+B3*P5(1); PY(i)=B0*P2(2)+B1*P3(2)+B2*P4(2)+B3*P5(2);t=t+deltat;endplot(PX,PY,'red');PXX=[P2(1),P3(1),P4(1),P5(1)];PYY=[P2(2),P3(2),P4(2),P5(2)];holdon;plot(PXX,PYY,':red',PXX,PYY,'o');%繪制第3段曲線t=0.0;fori=1:count+1 B0=(-t*t*t+3*t*t-3*t+1)/6; B1=(3*t*t*t-6*t*t+4)/6; B2=(-3*t*t*t+3*t*t+3*t+1)/6; B3=t*t*t/6;PX(i)=B0*P3(1)+B1*P4(1)+B2*P5(1)+B3*P6(1); PY(i)=B0*P3(2)+B1*P4(2)+B2*P5(2)+B3*P6(2);t=t+deltat;endplot(PX,PY,'blue');PXX=[P3(1),P4(1),P5(1),P6(1)];PYY=[P3(2),P4(2),P5(2),P6(2)];holdon;plot(PXX,PYY,':red',PXX,PYY,'o');%繪制第4段曲線t=0.0;fori=1:count+1 B0=(-t*t*t+3*t*t-3*t+1)/6; B1=(3*t*t*t-6*t*t+4)/6; B2=(-3*t*t*t+3*t*t+3*t+1)/6; B3=t*t*t/6;PX(i)=B0*P4(1)+B1*P5(1)+B2*P6(1)+B3*P7(1); PY(i)=B0*P4(2)+B1*P5(2)+B2*P6(2)+B3*P7(2);t=t+deltat;endplot(PX,PY,'red');PXX=[P4(1),P5(1),P6(1),P7(1)];PYY=[P4(2),P5(2),P6(2),P7(2)];holdon;plot(PXX,PYY,':red',PXX,PYY,'o');三次均勻B樣條曲線.P0(0,0)P1(1,1)P2(2,2)P3(4,0)P4(6,-4)P5(8,-5)P6(10,2)yx

B樣條曲線的基函數(shù)是局部支撐的,修改一個數(shù)據(jù)點(diǎn),在修改處影響最大,對其兩側(cè)的影響快速衰減,其影響范圍只有前后各K段曲線,對曲線的其它部分沒有影響。這是計(jì)算機(jī)輔助幾何設(shè)計(jì)所需要的局部修改性。均勻B樣條曲線未考慮曲線數(shù)據(jù)點(diǎn)的分布對參數(shù)化的影響,當(dāng)曲線弦長差異較大時,弦長較長的曲線段比較平坦,而弦長較短的曲線段則臌漲,甚至于因過“沖”而產(chǎn)生“紐結(jié)”對n+1個控制點(diǎn)的標(biāo)準(zhǔn)結(jié)點(diǎn)向量T和k次B樣條的描述如下:(1)共有m=n+k+2個結(jié)點(diǎn):T={t0,t1,…,tn}。(2)前k+1個結(jié)點(diǎn)t0,t1,…,tk的值都為0,(前k+1個基數(shù)從t=0開始)。(3)結(jié)點(diǎn)依次遞增1,值從1到n-k(4)最后一個結(jié)點(diǎn)的值為n+1-kk次B樣條曲線的標(biāo)準(zhǔn)節(jié)點(diǎn)向量T例:8個控制點(diǎn)生成k=2次B樣條曲線的標(biāo)準(zhǔn)結(jié)點(diǎn)向量T=(0,0,0,1,2,3,4,5,6,6,6)例:8個控制點(diǎn)生成k=3次B樣條曲線的標(biāo)準(zhǔn)結(jié)點(diǎn)向量T=(0,0,0,0,1,2,3,4,5,5,5,5)考慮曲線弦長的影響,則曲線的基函數(shù)不再具有同樣的格式,必須根據(jù)給定數(shù)據(jù)點(diǎn)進(jìn)行弦長參數(shù)化,然后根據(jù)基函數(shù)的定義用如下的曲線方程計(jì)算各段曲線上的點(diǎn):非均勻B樣條曲線考慮了弦長的影響,曲線不會因?yàn)楣?jié)點(diǎn)分布不均勻而產(chǎn)生過沖和紐結(jié)。非均勻B樣條曲線比均勻B樣條曲線具有更好的光順性。

非均勻B樣條曲線非均勻B樣條均勻B樣條根據(jù)曲線方程,計(jì)算曲線上的點(diǎn)需要對應(yīng)參數(shù)區(qū)間上的基函數(shù)的值和控制多邊形的頂點(diǎn)。基函數(shù)的值根據(jù)給定數(shù)據(jù)點(diǎn)的參數(shù)化進(jìn)行計(jì)算??刂贫噙呅蔚捻旤c(diǎn)依據(jù)曲線是否通過給定數(shù)據(jù)點(diǎn)確定,若生成的曲線不通過給定數(shù)據(jù)點(diǎn),則給定數(shù)據(jù)點(diǎn)就是控制多邊形頂點(diǎn)。若生成的曲線通過給定數(shù)據(jù)點(diǎn),則首先必須根據(jù)給定數(shù)據(jù)點(diǎn)反求控制多邊形的頂點(diǎn),然后再代入曲線。

非均勻B樣條曲線的實(shí)現(xiàn)

有理樣條曲線非均勻B樣條考慮節(jié)點(diǎn)分布不勻稱的影響,但與所有已介紹的計(jì)算曲線一樣,非均勻B樣條不能精確表達(dá)二次曲線曲面,采用有理B樣條,可以統(tǒng)一表達(dá)自由曲線曲面和二次曲線曲面。

有理函數(shù)是兩個多項(xiàng)式之比。因此,有理樣條(rationalspline)是兩個樣條函數(shù)之比。有理B樣條曲線可以用向量描述為:其中,;Ni,K(u)是B樣條的基函數(shù),di是n+1個控制點(diǎn)位置,參數(shù)ωi是控制點(diǎn)的權(quán)因子。一個特定的ωi值越大,曲線越靠近該控制點(diǎn)

di。當(dāng)所有權(quán)因子都設(shè)為1時,得標(biāo)準(zhǔn)B樣條曲線,因?yàn)檫@時方程中的分母為1(混和函數(shù)之和)。當(dāng)Ni,K(u)是均勻基函數(shù)時,p(u)為均勻有理B樣條曲線;當(dāng)Ni,K(u)是非均勻基函數(shù)時,p(u)為非均勻有理B樣條

(Non-UniformRationalB-Spline,簡稱NURBS)曲線.

稱此參數(shù)曲線為以d1,d1,…,dn為控制多邊形,以ω1,ω2,…,ωn為權(quán)的k

次有理B樣條曲線。B樣條曲線是分段多項(xiàng)式,有理B樣條曲線是分段有理多項(xiàng)式。它在各節(jié)點(diǎn)ti處具有與B樣條曲線同樣的連續(xù)階。它具有與B樣條曲線同樣的凸包性、幾何不變性、保凸性、變差縮減性、局部調(diào)整性、造型靈活性等性質(zhì)。

B樣條曲線是有理B樣條曲線的特例,即是各權(quán)ωi全相等的有理B樣條曲線。有理Bezier也是有理B樣條曲線的特例二次有理B樣條曲線也可以表示圓、橢圓等二次曲線和更復(fù)雜的曲線。若在二次有理B樣條曲線公式中取權(quán)函數(shù)為下列值:則二次有理B樣條表達(dá)式為然后用下列參數(shù)r值可得各種二次曲線P0P1P2

直線(r=0,ω1=0)

橢圓(r<1/2,ω1<1)

拋物線(r=1/2,ω1=1)

雙曲線(r>1/2,ω1>1)不同參數(shù)r值的二次曲線

有理樣條與非有理樣條相比有兩個重要的優(yōu)點(diǎn)。第一,提供了二次曲線的精確表達(dá)式,如圓和橢圓。非有理樣條,表達(dá)式為多項(xiàng)式,僅能逼近二次曲線。這使圖形包可用一個表達(dá)式--——有理樣條來模擬所有曲線形狀,無需用一個曲線函數(shù)庫去處理不同的設(shè)計(jì)形狀。

有理樣條的另一個優(yōu)點(diǎn)是對于透視觀察變換是不變的。這意味著我們可以對有理曲線上的控制點(diǎn)應(yīng)用一個透視觀察變換來得到曲線的正確視圖。而另一方面,非有理樣條關(guān)于透視觀察變換是可變的。通常,圖形設(shè)計(jì)包用非均勻節(jié)點(diǎn)向量表達(dá)式來構(gòu)造有理B樣條,這種樣條稱為NURBs(Non-UniformRationalB-spline)。

齊次坐標(biāo)表達(dá)式用于有理樣條,這是因?yàn)榉帜缚梢钥闯墒窃诳刂泣c(diǎn)四維表達(dá)式中的齊次因子。這樣,一個有理樣條可以看作四維非有理樣條投影到三維空間中。

有理樣條與非有理樣條相比有兩個重要的優(yōu)點(diǎn):(1)一,提供了二次曲線的精確表達(dá)式,如圓和橢圓。非有理樣條,表達(dá)式為多項(xiàng)式,僅能逼近二次曲線。這使圖形包可用一個表達(dá)式--——有理樣條來模擬所有曲線形狀,無需用一個曲線函數(shù)庫去處理不同的設(shè)計(jì)形狀。

有理樣條的另一個優(yōu)點(diǎn)是對于透視觀察變換是不變的。這意味著我們可以對有理曲線上的控制點(diǎn)應(yīng)用一個透視觀察變換來得到曲線的正確視圖。而另一方面,非有理樣條關(guān)于透視觀察變換是可變的。通常,圖形設(shè)計(jì)包用非均勻節(jié)點(diǎn)向量表達(dá)式來構(gòu)造有理B樣條,這種樣條稱為NURBs(Non-UniformRationalB-spline)。

齊次坐標(biāo)表達(dá)式用于有理樣條,這是因?yàn)榉帜缚梢钥闯墒窃诳刂泣c(diǎn)四維表達(dá)式中的齊次因子。這樣,一個有理樣條可以看作四維非有理樣條投影到三維空間中。

非均勻有理B樣條(NURBS)曲線

均勻B樣條函數(shù)的特點(diǎn)是節(jié)點(diǎn)的參數(shù)軸的分布是等距的,因而不同節(jié)點(diǎn)矢量生成的B樣條基函數(shù)所描繪的形狀是相同的。在構(gòu)造每段曲線時,若采用均勻B樣條函數(shù),由于各段所用的基函數(shù)都一樣,故計(jì)算簡便。非均勻B樣條函數(shù)其節(jié)點(diǎn)參數(shù)沿參數(shù)軸的分布是不等距的,因而不同節(jié)點(diǎn)矢量形成的B樣條函數(shù)各不相同,需要單獨(dú)計(jì)算,其計(jì)算量比B樣條大得多。盡管如此,近年來NURBS有了較快的發(fā)展和較廣泛的應(yīng)用,主要原因是:

(1)對標(biāo)準(zhǔn)的解析形狀(如圓錐曲線、二次曲面、回轉(zhuǎn)面等)和自由曲線、曲面提供了統(tǒng)一的數(shù)學(xué)表示,無論是解析形狀還是自由格式的形狀均有統(tǒng)一的表示參數(shù),便于工程數(shù)據(jù)庫的存取和應(yīng)用;

(2)可通過控制點(diǎn)和權(quán)因子來靈活地改變形狀;(3)對插入節(jié)點(diǎn)、修改、分割、幾何插值等的處理工具比較有力;(4)具有透視投影變換和仿射變換的不變性;(5)非有理B樣條、有理及非有理Bezier曲線是NURBS的特例表示。

NURBS曲線是由分段有理B樣條多項(xiàng)式基函數(shù)定義的,形式是:其中di是特征多邊形頂點(diǎn)位置矢量,Ni,k(t)是第i個k次B樣條基函數(shù),ωi是相應(yīng)控制點(diǎn)di的權(quán)因子,節(jié)點(diǎn)向量中節(jié)點(diǎn)個數(shù)m=n+k+1,n為控制點(diǎn)數(shù),k為B樣條基函數(shù)的次數(shù)。

節(jié)點(diǎn)矢量T={α,…,α,

tk+1,…,tn,β,…,β},

k+1個

k+1個對于非周期函數(shù),若有一個正實(shí)數(shù)D,對全部k≤j≤n,存在tj+1-tj=D,則稱T為均勻節(jié)點(diǎn)矢量,否則為非均勻節(jié)點(diǎn)矢量。如取α=0,β=1。由上式和節(jié)點(diǎn)矢量T定義的t∈[0,1]區(qū)間上的整條NURBS曲線與Bezier曲線相似,即曲線過起、終點(diǎn),且起、終點(diǎn)的切矢量是控制多邊形的第一條和最后一條邊。

二次NURBS曲線可用于表示圓錐曲線。

若二次NURBS函數(shù)的節(jié)點(diǎn)矢量T={0,0,0,1,1,1},則其轉(zhuǎn)變?yōu)槎斡欣鞡ezier函數(shù),進(jìn)而可用二次有理Bezier函數(shù)表示圓錐曲線。

若二次NURBS函數(shù)的節(jié)點(diǎn)矢量為均勻節(jié)點(diǎn)矢量,即ti+1-ti=d(常數(shù)),為簡化討論,令d=1,則其轉(zhuǎn)變?yōu)槎斡欣鞡樣條函數(shù),此時可用二次有理B樣條函數(shù)表示圓錐曲線。

目前應(yīng)用NURBS中還有一些難于解決的問題:(1)比一般的曲線定義方法更費(fèi)存儲空間和處理時間;(2)權(quán)因子選擇不當(dāng)會造成形狀畸變;(3)對搭接、重疊形狀的處理相當(dāng)麻煩;(4)象點(diǎn)的映射這類算法在NURBS情況下會變得不太穩(wěn)定。這些問題還希望讀者在學(xué)習(xí)和應(yīng)用中加以解決。

有理樣條與非有理樣條相比有兩個重要的優(yōu)點(diǎn):(1)有理樣條選擇合適的控制點(diǎn)和權(quán)值,可以得到了二次曲線的精確表達(dá)式,如圓和橢圓。這使圖形包可用一個表達(dá)式--有理樣條來模擬所有曲線形狀,無需用一個曲線函數(shù)庫去處理不同的設(shè)計(jì)形狀。

非有理樣條,表達(dá)式為多項(xiàng)式,僅能逼近二次曲線。

(2)有理樣條對于投影變換(透視觀察變換)是不變的。這意味著我們可以對有理曲線上的控制點(diǎn)應(yīng)用一個透視觀察變換來得到曲線的正確視圖。非有理樣條只對于仿射變換有不變性,而不具備投影變換不可變性。

通常,圖形設(shè)計(jì)包用非均勻節(jié)點(diǎn)向量表達(dá)式來構(gòu)造有理B樣條,這種樣條稱為NURBs(Non-UniformRationalB-spline)。

齊次坐標(biāo)表達(dá)式用于有理樣條,這是因?yàn)榉帜缚梢钥闯墒窃诳刂泣c(diǎn)四維表達(dá)式中的齊次因子。這樣,一個有理樣條可以看作四維非有理樣條投影到三維空間中。

曲線設(shè)計(jì)方法的關(guān)鍵在于基函數(shù)的選擇,選擇合適的基函數(shù)能夠使系數(shù)矢量具有更明確的幾何意義,繪圖操作簡單直觀?;瘮?shù)和參數(shù)化方法的選擇對曲線的精度、光順性、局部修改性具有決定性的影響。整個曲線設(shè)計(jì)方法的改進(jìn)方向是在提高精度、保證光順性的同時追求靈活的操作、明確的幾何意義和良好的局部修改性。

曲線設(shè)計(jì)結(jié)論:參數(shù)多項(xiàng)式曲線Bézier曲線B樣條曲線NURBS曲線

曲面的表示形式一般曲面可表示為:

或其參數(shù)表達(dá)式為:

曲面的矢量方程為:

參數(shù)u、v的變化區(qū)間常取為單位正方形,即u,v∈[0,1]。x,y,z都是u和v二元可微函數(shù)。當(dāng)(u,v)在區(qū)間[0,1]之間變化時,與其對應(yīng)的點(diǎn)(x,y,z)就在空間形成一張曲面。

u映射空間域參數(shù)域vrvnruZvv3v2v1v0OuYXr(u,v)r對

u和v的一階偏導(dǎo)數(shù)為:

一階偏導(dǎo)數(shù)ru(u,v)和rv(u,v)繼續(xù)對u,v求偏導(dǎo)數(shù),得到四個二階偏導(dǎo)數(shù)ruu、ruv、rvu、rvv:

直紋面

旋轉(zhuǎn)面“線動成面”

雙線性插值曲面

切矢方向與模:方向相同,模不同,G1連續(xù);方向相同,模相同,C1連續(xù);已知曲線r1(u)的末端和曲線r2(v)的首端相連,其不同階次連續(xù)性的要求如下:位置連續(xù)(C0):曲線段r1(u)的末端與曲線

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論