基于德卡斯特里奧算法的貝塞爾曲線曲面擬合方法及系統(tǒng)的制作方法
【專利摘要】本發(fā)明公開了一種基于德卡斯特里奧算法的含參貝塞爾曲線曲面擬合方法及系統(tǒng),包括:獲取貝塞爾曲線的n個型值點,通過所述貝塞爾曲線的n個型值點,根據(jù)德卡斯特里奧算法獲取2×(n-2)個控制點;在所述控制點上設(shè)置控制系數(shù),通過改變所述控制系數(shù)調(diào)節(jié)所述貝塞爾曲線在所述型值點處的曲率,并確定所述曲率為目標(biāo)曲率時的控制系數(shù),獲取擬合后的貝塞爾曲線。該方法實現(xiàn)了通過改變控制系數(shù)對貝塞爾曲線曲面進行擬合,根據(jù)實際應(yīng)用,能夠在選取較少的型值點的同時,擬合出仿形程度高的Bezier曲線,且保證該曲線能夠通過所有型值點,并在型值點處保證了該曲線的連續(xù)性,在曲面擬合方面,降低了復(fù)雜度,提高了擬合效率。
【專利說明】基于德卡斯特里奧算法的貝塞爾曲線曲面擬合方法及系統(tǒng)
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及計算機圖形學(xué)領(lǐng)域,具體涉及一種基于德卡斯特里奧算法的貝塞爾曲 線曲面擬合方法及系統(tǒng)。
【背景技術(shù)】
[0002] 貝塞爾Bezier曲線是一條通過起始,末尾控制點的曲線,并且可通過中間控制點 來調(diào)整曲線的形狀。隨著Bezier曲線的次數(shù)增高時,即有多個控制點時,曲線會發(fā)生不穩(wěn) 定的現(xiàn)象,并且不能進行局部修改,靈活度不夠高。所以,在計算機圖形學(xué)的研究領(lǐng)域,研究 者都會使用B樣條曲線。它是一種基于Bezier曲線的曲線模型,在保證了 Bezier曲線優(yōu) 點的同時,其局部特性與逼近程度會比Bezier曲線有所提高。而在曲面擬合方面,Bezier 曲面和B樣條曲面的算法都為分別在u,v方向定義曲線,從曲面公式的角度上講,都是在原 曲線公式的基礎(chǔ)上再分別乘以相應(yīng)的轉(zhuǎn)置矩陣。
[0003] 但是,在使用B樣條的過程中發(fā)現(xiàn),這種曲線模型使用起來較為復(fù)雜,無法滿足項 目的實際需求,此外為了通過已知型值點,現(xiàn)有的算法在求對應(yīng)控制點時,往往采用直接求 解線性方程組的方法,這使得隨著型值點數(shù)量的增加,方程組的階數(shù)會增加,導(dǎo)致計算量非 常大,并且通過該算法得到的控制點不可調(diào),導(dǎo)致擬合后的Bezier曲線在局部會有跳躍現(xiàn) 象,不能限位。
【發(fā)明內(nèi)容】
[0004] 針對現(xiàn)有技術(shù)中的缺陷,本發(fā)明提供了一種基于德卡斯特里奧算法的貝塞爾曲線 曲面擬合方法及系統(tǒng),實現(xiàn)了貝塞爾曲線曲面可以在控制點變化的情況下,通過改變控制 系數(shù)對貝塞爾曲線曲面進行擬合。
[0005] 第一方面,本發(fā)明提供一種基于德卡斯特里奧算法的貝塞爾曲線擬合方法,包 括:
[0006] 獲取貝塞爾曲線的η個型值點,通過所述貝塞爾曲線的η個型值點,根據(jù)德卡斯特 里奧算法獲取2 X (η-2)個控制點;
[0007] 在所述控制點上設(shè)置控制系數(shù),通過改變所述控制系數(shù)調(diào)節(jié)所述貝塞爾曲線在所 述型值點處的曲率,并確定所述曲率為目標(biāo)曲率時的控制系數(shù);
[0008] 根據(jù)確定后的所述控制系數(shù),獲取擬合后的貝塞爾曲線。
[0009] 可選的,所述獲取貝塞爾曲線的η個型值點,通過所述貝塞爾曲線的η個型值點, 根據(jù)德卡斯特里奧算法獲取2 X (η-2)個控制點,包括:
[0010] 每個已知的型值點對應(yīng)兩個控制點,該型值點不包括所述貝塞爾曲線的起始點和 終點。
[0011] 可選的,所述控制系數(shù)的取值范圍為[0, 2]。
[0012] 可選的,所述根據(jù)確定后的所述控制系數(shù),獲取擬合后的貝塞爾曲線,包括:
[0013] 根據(jù)確定后的所述控制系數(shù),獲取第m段所述貝塞爾曲線的函數(shù)表達式;
[0014] 根據(jù)所述第m段所述貝塞爾曲線的函數(shù)表達式,利用Langrange插值多項式算法, 獲取k段貝塞爾曲線;
[0015] 其中,k為貝塞爾曲線的總段數(shù),k = n-l,所述m為k段貝塞爾曲線中的第m段, 1 ^ m ^ n-1 〇
[0016] 第二方面,本發(fā)明還提供了一種基于德卡斯特里奧算法的貝塞爾曲面擬合方法, 包括:
[0017] 確定所述待擬合貝塞爾曲面的U、V方向,對u方向上的貝塞爾曲線求積分,獲取所 述u方向貝塞爾曲線的總長度;
[0018] 對所述u方向貝塞爾曲線的總長度進行細(xì)分,并獲取細(xì)分點的坐標(biāo);
[0019] 根據(jù)u方向所述細(xì)分點的坐標(biāo),對v方向貝塞爾曲線的總長度進行細(xì)分;
[0020] 根據(jù)u方向擬合的多條貝塞爾曲線及v方向擬合的的多條貝塞爾曲線,獲取擬合 后的貝塞爾曲面。
[0021] 第三方面,本發(fā)明還提供了一種基于德卡斯特里奧算法的貝塞爾曲線擬合系統(tǒng), 包括:
[0022] 控制點獲取模塊,用于獲取貝塞爾曲線的η個型值點,通過所述貝塞爾曲線的η個 型值點,根據(jù)德卡斯特里奧算法獲取2 X (η-2)個控制點;
[0023] 控制系數(shù)確定模塊,用于在所述控制點上設(shè)置控制系數(shù),通過改變所述控制系數(shù) 調(diào)節(jié)所述貝塞爾曲線在所述型值點處的曲率,并確定所述曲率為目標(biāo)曲率時的控制系數(shù);
[0024] 曲線擬合模塊,用于根據(jù)確定后的所述控制系數(shù),獲取擬合后的貝塞爾曲線。
[0025] 可選的,所述控制點獲取模塊中的每個已知的型值點對應(yīng)兩個控制點,該型值點 不包括所述貝塞爾曲線的起始點和終點。
[0026] 可選的,所述控制系數(shù)的取值范圍為[0, 2]。
[0027] 可選的,所述曲線擬合模塊,用于:
[0028] 根據(jù)確定后的所述控制系數(shù),獲取第m段所述貝塞爾曲線的函數(shù)表達式;
[0029] 根據(jù)所述第m段所述貝塞爾曲線的函數(shù)表達式,利用Langrange插值多項式算法, 獲取k段貝塞爾曲線;
[0030] 其中,k為貝塞爾曲線的總段數(shù),k = n-1,所述m為k段貝塞爾曲線中的第m段, 1 ^ m ^ n-1 〇
[0031] 第四方面,本發(fā)明還提供了一種基于德卡斯特里奧算法的貝塞爾曲面擬合系統(tǒng), 包括:
[0032] 曲線確定模塊,用于確定所述待擬合貝塞爾曲面的u、v方向,對u方向上的貝塞爾 曲線求積分,獲取所述u方向貝塞爾曲線的總長度;
[0033] 第一曲線細(xì)分模塊,用于對所述u方向貝塞爾曲線的總長度進行細(xì)分,并獲取細(xì) 分點的坐標(biāo);
[0034] 第二曲線細(xì)分模塊,用于根據(jù)u方向所述細(xì)分點的坐標(biāo),對v方向貝塞爾曲線的總 長度進行細(xì)分;
[0035] 曲面擬合模塊,用于根據(jù)u方向擬合的多條貝塞爾曲線及v方向擬合的的多條貝 塞爾曲線,獲取擬合后的貝塞爾曲面。
[0036] 由上述技術(shù)方案可知,本發(fā)明提供的基于德卡斯特里奧算法的貝塞爾曲線曲面擬 合方法及系統(tǒng),該方法實現(xiàn)了貝塞爾曲線曲面可以在控制點變化的情況下,通過改變控制 系數(shù)對貝塞爾曲線曲面進行擬合,能夠在選取較少的型值點的同時,擬合出仿形程度高的 Bezier曲線,且該曲線能夠通過所有型值點,保證了該曲線的連續(xù)性,在曲面擬合方面,降 低了復(fù)雜度,提高了擬合效率。
【專利附圖】
【附圖說明】
[0037] 圖1為本發(fā)明一實施例提供的2次Bezier曲線的擬合曲線圖;
[0038] 圖2為本發(fā)明一實施例提供的3次Bezier曲線的擬合曲線圖;
[0039] 圖3為本發(fā)明一實施例提供的調(diào)整3次Bezier曲線曲率的過程示意圖;
[0040] 圖4為本發(fā)明一實施例提供的基于德卡斯特里奧算法的貝塞爾曲線擬合方法的 流程示意圖;
[0041] 圖5為本發(fā)明一實施例提供的改變控制系數(shù)獲取的不同的曲線圖;
[0042] 圖6為本發(fā)明一實施例提供的控制系數(shù)C = 0. 7時的曲線圖;
[0043] 圖7為本發(fā)明一實施例提供的基于德卡斯特里奧算法的貝塞爾曲面擬合方法的 流程示意圖;
[0044] 圖8為本發(fā)明一實施例提供的基于德卡斯特里奧算法的貝塞爾曲線擬合系統(tǒng)的 結(jié)構(gòu)示意圖;
[0045] 圖9為本發(fā)明一實施例提供的基于德卡斯特里奧算法的貝塞爾曲面擬合系統(tǒng)的 結(jié)構(gòu)示意圖;
[0046] 圖10為本發(fā)明一實施例提供的本發(fā)明曲線的擬合方法與sin函數(shù)曲線的對比曲 線圖;
[0047] 圖11為本發(fā)明一實施例提供的本發(fā)明曲線的擬合方法與特殊間距的sin函數(shù)曲 線的對比曲線圖;
[0048] 圖12A至12B為本發(fā)明一實施例提供的型值點數(shù)目與擬合誤差的關(guān)系圖;
[0049] 圖13A至13C為本發(fā)明另一實施例提供的型值點數(shù)目與擬合誤差的關(guān)系圖;
[0050] 圖14為現(xiàn)有技術(shù)中控制點選取示意圖;
[0051] 圖15為本發(fā)明一實施例提供的采用本發(fā)明采用德卡斯特里奧算法與其他插值算 法的曲線擬合對比圖;
[0052] 圖16A至16B為本發(fā)明一實施例提供的采用本方法擬合的曲面圖;
[0053] 圖17A至17B為本發(fā)明一實施例提供的采用本方法細(xì)分后的曲面圖。
【具體實施方式】
[0054] 下面結(jié)合附圖,對發(fā)明的【具體實施方式】作進一步描述。以下實施例僅用于更加清 楚地說明本發(fā)明的技術(shù)方案,而不能以此來限制本發(fā)明的保護范圍。
[0055] 本發(fā)明主要是根據(jù)德卡斯特里奧de Casteljau算法通過多次按比例分割Bezier 曲線的控制多邊形,使得最后一次分割的線段與Bezier曲線相切于目標(biāo)點,即Bezier曲線 上相應(yīng)的比例點。下面為將該deCasteljau算法應(yīng)用到擬合Bezier曲線曲面的問題中進 行研究的詳細(xì)推導(dǎo)過程。
[0056] 圖1示出了本發(fā)明實施例提供的2次Bezier曲線的擬合曲線圖,如圖1所示的2 次Bezier曲線,控制點為A,B,C。曲線通過A和C,B可調(diào)整曲線的形狀。當(dāng)B點沿BC移 動時,Bez ier曲線的中點也會向AC移動,而且曲線在對應(yīng)控制點處的曲率在減小。
[0057] 圖2示出了本發(fā)明實施例提供的3次Bezier曲線的擬合曲線圖,如圖2所示的3 次Bezier曲線,控制點為八,8,(:,0。曲線通過4,0,8,(:可以用來調(diào)整曲線形狀。在8點沿 BA方向移動時,曲線中點也在向AD移動,曲線在對應(yīng)控制點B處的曲率也減小。
[0058] 圖3示出了本發(fā)明實施例提供的調(diào)整3次Bezier曲線曲率的過程示意圖,如圖3 所示,可以通過改變控制點到起始點或終點的距離,來調(diào)整Bezier曲線在相應(yīng)控制點處的 曲率。其中,Bezier曲線與控制多邊形的起始邊和末尾邊分別相切于起始點和末尾點。
[0059] 當(dāng)已知三維空間內(nèi)的n(n彡3)個型值點時。為了保證曲線具有連 續(xù)性和限位功能,結(jié)合上述規(guī)律可以找到2X (n-2)控制點并引入控制 系數(shù)C(0彡C彡2)。控制點的推導(dǎo)過程,以η = 4為例: AQ A
[0060] 若型值點為心,Ai,A2, A3,連接Α/2,在Α/2上找點Q使得= W,令Α/2沿著 BA 向量c平移到4,得ΒΛ,在ΒΛ上找點B' ^吏得控制系數(shù)C = 2x#(0<Cii2)同理, . 0 1 〇 可以求得控制點B2, B3。那么AA就變成由控制的3次Bezier曲線。并且在連接 點處的兩條Bezier曲線具有公共切線,保證了曲線的C1連續(xù)。在起始點與終點處,我們默 認(rèn)該兩點分別對應(yīng)一個控制點,并設(shè)為其本身,在實際運用中可以根據(jù)需求改變其值,以實 現(xiàn)調(diào)整起始點處與終點處的對應(yīng)切線方向。
[0061] 基于上述推導(dǎo),圖4示出了本發(fā)明實施例提供的基于德卡斯特里奧算法的貝塞爾 曲線擬合方法的流程示意圖,如圖4所示,該貝塞爾曲線擬合方法包括如下步驟:
[0062] 401、獲取貝塞爾曲線的η個型值點,通過所述貝塞爾曲線的η個型值點,根據(jù)德卡 斯特里奧算法獲取2 X (η-2)個控制點;
[0063] 舉例來說,每個已知的型值點對應(yīng)兩個控制點,該型值點不包括所述貝塞爾曲線 的起始點和終點。
[0064] 402、在所述控制點上設(shè)置控制系數(shù),通過改變所述控制系數(shù)調(diào)節(jié)所述貝塞爾曲線 在所述型值點處的曲率,并確定所述曲率為目標(biāo)曲率時的控制系數(shù)。
[0065] 舉例來說,另五個型值點為(0, 0, 0),(1,1,0),(2, 2. 5, 0),(3, 0, 0),(4, 0· 5, 0),C 分別?。憨?〇. 2,0. 4,0. 6,0. 8,1,1. 2,1. 4,1. 6,1. 8,2可得得到如圖5所示的圖形,所述控制 系數(shù)的取值范圍為[0, 2],其中,C取0時是通過4條線段來擬合曲線的,C = 2時所擬合出 來的曲線局部曲率過大。通過多次實驗,在C = 0.7時,定義為目標(biāo)曲率時的控制系數(shù),效 果如圖6所示的曲線。
[0066] 因此,若有η個已知型值點,可以得到一條由η-I段3次Bezier曲線組成的曲線。 該曲線特點如下:曲線通過η個型值點的同時,保證了 C1連續(xù);對于每一個已知的型值點 (起始點,終點除外),可找到兩個對應(yīng)的控制點,并設(shè)置控制系數(shù)C(0 < C < 2),用于調(diào)節(jié) 曲線在型值點處的曲率;利用了分段插值的思路,對于任意η (η > 3)個型值點,兩個連續(xù)點 之間用3次Bezier曲線連接。且起始點與終點處的切矢可以調(diào)整;對于曲線上任意連續(xù)的 三個型值點A,B,C,保證了 B始終是在以線段AC為水平軸線的最高點,起到限位的作用,防 止了抖動。
[0067] 403、根據(jù)確定后的所述控制系數(shù),獲取擬合后的貝塞爾曲線。
[0068] 舉例來說,上述步驟403包括圖4中未示出的子步驟:
[0069] 4031、根據(jù)確定后的所述控制系數(shù),獲取第m段所述貝塞爾曲線的函數(shù)表達式;
[0070] 4032、根據(jù)所述第m段所述貝塞爾曲線的函數(shù)表達式,利用Langrange插值多項式 算法,獲取k段貝塞爾曲線;
[0071] 其中,k為貝塞爾曲線的總段數(shù),k = n-l,所述m為k段貝塞爾曲線中的第m段, 1 ^ m ^ n-1 〇
[0072] 為了更清楚的說明上述Bezier曲線的擬合方法,通過下述具體的計算過程進行 詳細(xì)說明。
[0073] 標(biāo)準(zhǔn)Bezier曲線上任意一點可由公式給出
【權(quán)利要求】
1. 一種基于德卡斯特里奧算法的貝塞爾曲線擬合方法,其特征在于,包括: 獲取貝塞爾曲線的η個型值點,通過所述貝塞爾曲線的η個型值點,根據(jù)德卡斯特里奧 算法獲取2Χ (η-2)個控制點; 在所述控制點上設(shè)置控制系數(shù),通過改變所述控制系數(shù)調(diào)節(jié)所述貝塞爾曲線在所述型 值點處的曲率,并確定所述曲率為目標(biāo)曲率時的控制系數(shù); 根據(jù)確定后的所述控制系數(shù),獲取擬合后的貝塞爾曲線。
2. 根據(jù)權(quán)利要求1所述的方法,其特征在于,所述獲取貝塞爾曲線的η個型值點,通過 所述貝塞爾曲線的η個型值點,根據(jù)德卡斯特里奧算法獲取2 X (η-2)個控制點,包括: 每個已知的型值點對應(yīng)兩個控制點,該型值點不包括所述貝塞爾曲線的起始點和終 點。
3. 根據(jù)權(quán)利要求1所述的方法,其特征在于,所述控制系數(shù)的取值范圍為[0, 2]。
4. 根據(jù)權(quán)利要求1所述的方法,其特征在于,所述根據(jù)確定后的所述控制系數(shù),獲取擬 合后的貝塞爾曲線,包括: 根據(jù)確定后的所述控制系數(shù),獲取第m段所述貝塞爾曲線的函數(shù)表達式; 根據(jù)所述第m段所述貝塞爾曲線的函數(shù)表達式,利用Langrange插值多項式算法,獲取 k段貝塞爾曲線; 其中,k為貝塞爾曲線的總段數(shù),k = n-1,所述m為k段貝塞爾曲線中的第m段, 1 ^ m ^ n-1 〇
5. 根據(jù)權(quán)利要求1至4中任一項所述基于德卡斯特里奧算法的貝塞爾曲面擬合方法, 其特征在于,包括: 確定所述待擬合貝塞爾曲面的u、v方向,對u方向上的貝塞爾曲線求積分,獲取所述u 方向貝塞爾曲線的總長度; 對所述u方向貝塞爾曲線的總長度進行細(xì)分,并獲取細(xì)分點的坐標(biāo); 根據(jù)u方向所述細(xì)分點的坐標(biāo),對v方向貝塞爾曲線的總長度進行細(xì)分; 根據(jù)u方向擬合的多條貝塞爾曲線及v方向擬合的的多條貝塞爾曲線,獲取擬合后的 貝塞爾曲面。
6. -種基于德卡斯特里奧算法的貝塞爾曲線擬合系統(tǒng),其特征在于,包括: 控制點獲取模塊,用于獲取貝塞爾曲線的η個型值點,通過所述貝塞爾曲線的η個型值 點,根據(jù)德卡斯特里奧算法獲取2 X (η-2)個控制點; 控制系數(shù)確定模塊,用于在所述控制點上設(shè)置控制系數(shù),通過改變所述控制系數(shù)調(diào)節(jié) 所述貝塞爾曲線在所述型值點處的曲率,并確定所述曲率為目標(biāo)曲率時的控制系數(shù); 曲線擬合模塊,用于根據(jù)確定后的所述控制系數(shù),獲取擬合后的貝塞爾曲線。
7. 根據(jù)權(quán)利要求6所述的系統(tǒng),其特征在于,所述控制點獲取模塊中的每個已知的型 值點對應(yīng)兩個控制點,該型值點不包括所述貝塞爾曲線的起始點和終點。
8. 根據(jù)權(quán)利要求6所述的系統(tǒng),其特征在于,所述控制系數(shù)的取值范圍為[0, 2]。
9. 根據(jù)權(quán)利要求6所述的系統(tǒng),其特征在于,所述曲線擬合模塊,用于: 根據(jù)確定后的所述控制系數(shù),獲取第m段所述貝塞爾曲線的函數(shù)表達式; 根據(jù)所述第m段所述貝塞爾曲線的函數(shù)表達式,利用Langrange插值多項式算法,獲取 k段貝塞爾曲線; 其中,k為貝塞爾曲線的總段數(shù),k = n-1,所述m為k段貝塞爾曲線中的第m段, 1 ^ m ^ n-1 〇
10.根據(jù)權(quán)利要求6至9中任一項所述基于德卡斯特里奧算法的貝塞爾曲面擬合系統(tǒng), 其特征在于,包括: 曲線確定模塊,用于確定所述待擬合貝塞爾曲面的u、v方向,對u方向上的貝塞爾曲線 求積分,獲取所述u方向貝塞爾曲線的總長度; 第一曲線細(xì)分模塊,用于對所述u方向貝塞爾曲線的總長度進行細(xì)分,并獲取細(xì)分點 的坐標(biāo); 第二曲線細(xì)分模塊,用于根據(jù)u方向所述細(xì)分點的坐標(biāo),對v方向貝塞爾曲線的總長度 進行細(xì)分; 曲面擬合模塊,用于根據(jù)U方向擬合的多條貝塞爾曲線及V方向擬合的的多條貝塞爾 曲線,獲取擬合后的貝塞爾曲面。
【文檔編號】G06T17/30GK104268942SQ201410469987
【公開日】2015年1月7日 申請日期:2014年9月15日 優(yōu)先權(quán)日:2014年9月15日
【發(fā)明者】郭大勇, 成佳頤, 姜國軍, 闕開良, 吳越 申請人:清華大學(xué)