圖形學實驗報告五 常用曲面與曲線的生成算法_第1頁
圖形學實驗報告五 常用曲面與曲線的生成算法_第2頁
圖形學實驗報告五 常用曲面與曲線的生成算法_第3頁
圖形學實驗報告五 常用曲面與曲線的生成算法_第4頁
圖形學實驗報告五 常用曲面與曲線的生成算法_第5頁
已閱讀5頁,還剩12頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、貴州大學實驗報告學院:計算機科學與信息學院 專業:計算機科學與技術 班級: 101姓名學號實驗組5實驗時間2013.5.2指導教師吳云成績實驗項目名稱常用曲面與曲線的生成算法實驗目的1、通過實驗,進一步理解和掌握生成Hermit、Bezier和B樣條曲線及Bezier曲面的生成算法2、掌握Hermit、Bezier、B樣條曲線及Bezier曲面的基本生成過程3、通過編程,會在一種語言環境下編程實現三次Hermit、Bezier、B樣條曲線及Bezier曲面的繪制實驗要求 1、編程實現Hermit曲線的繪制。2、編程實現B樣條曲線的繪制。3、編程實現Bezier曲線的繪制。 4、編程實現Bezi

2、er曲面的繪制。實驗原理1. 3次Hermite樣條曲線 (1). 將參數樣條曲線中的參數區間進行 等距參數化,即令Li長度歸一化為1。就得到Hermite曲線。(2). 用其端點位矢Pi(0)、Pi(1)和切矢Pi(0)和Pi(1)描述。 記為:G=AM 求解得:A=G MH 令:可將其簡記為: 上式是三次Hermite(Ferguson)曲線的幾何形式。 幾何系數是P0、P1、P0、P1。 F0,F1, G0,G1稱為基函數/調和函數。 (3). 每一段Hermite曲線就是控制點P0、P1、P0、P1的加權和,權值由基函數F0,F1, G0,G1確定。通過增加頂點并指定相應的切矢,就可得

3、到分段Hermite樣條曲線。2、Bezier曲線(1)基本構型原理是:a.兩點P0、P1確定一條直線,表示為一次參數方程:p=p0+(p1-p0)tb.三點確定一條二次曲線:p=(1-t)2p0+2t(1-t)p1+t2p2, c.三個點p0,p1,p2稱作頂點,中間頂點p1不但控制曲線的首末端切矢(方向和大小),而且唯一確定曲線的形狀。d.以此類推,n+1個頂點唯一確定一條n次曲線。頂點P0,P1,Pn的第一條邊P0P1決定曲線的一階導矢,第1,2條邊決定曲線的二階導矢,第1,2,3條邊決定曲線的三階導矢.(2).曲線方程中,各頂點的系數與二項式(1-t)n的展開式相似,在函數逼近論中,稱

4、這種系數函數為Bernstein基函數。(3). 給定空間n+1個點的位置矢量Pi(i=0,1,2,n)則Bézier曲線可定義為: 其中,Pi構成該Bézier曲線的特征多邊形,Bi,n(t)是n次Bernstein基函數: (4). 3次Bézier曲線 3.B樣條曲線(1). 在Bézier曲線方程中,用B樣條基函數代替Bernstein基函數,就得到B樣條曲線。(2). B樣條曲線的突出優點是對曲線的局部修改功能,因為B樣條曲線是分段組成的(很容易產生C2連續性),所以控制多邊形的頂點對曲線的控制靈活而直觀。(3). B樣條曲線的次數可根據需要指

5、定,不像Bezier曲線的次數是由控制點的個數來確定。(4). B樣條曲線的方程定義為:給定空間n+1個點Pi(i=0,1,2,n),及參數節點向量:T=ti(titi+1 ,i=0,1,2,m),由下式定義的曲線P(t) 稱為k階 (k-1次)B樣條曲線: 階數k,控制頂點數n+1,節點個數m+1,具有以下關系:m=n+k記T為:Tn,k=ti(titi+1 ,i=0,1,2,n,n+k)(4)Bezier曲面 (1). 給定空間16個位置點rij,可以確定一張三次Bézier曲面片:(2). 首先生成四條v向的三次Bézier曲線:(3). 根據“線動成面”的思想,取v

6、*0,1,在四條v線上取點為控制點,沿u向生成三次Bézier曲線:(4). 將u,v向曲線方程合并得 (5). 3次Bézier曲面的矩陣表達式: 實驗環境 Microsoft Visual Studio 6.0 實驗步驟一繪制Hermit曲線:1 創建一個MFC工程,取名為zjie_ex05: 2、在CZjie_ex05View.h文件中聲明成員函數和變量: 3在CZjie_ex05View.cpp文件中,頭文件加入# define ROUND(a) int(a+0.5),#include "math.h"數學頭文件,寫入控制多邊形的初始化和繪制函數

7、的代碼并對寫入成員函數的函數體,具體代碼在此省略 。 4設計Menu在資源視圖Resource View上雙擊Menu,打開IDR_MAINFRAME,設計如下:并在CZjie_ex05View.cpp中參加菜單函數,具體函數代碼在此省略。5運行調試二、繪制B樣條曲線:1 創建一個MFC工程,取名為zjie_B: 2、在zjie_BView.h文件中聲明成員函數和變量: 3在在zjie_BView.h文件中,頭文件加入# define ROUND(a) int(a+0.5),寫入控制多邊形的初始化和繪制函數的代碼并對寫入成員函數的函數體,具體代碼在此省略 。 4設計Menu在資源視圖Resou

8、rce View上雙擊Menu,打開IDR_MAINFRAME,設計如下:并在在zjie_BView.cpp中參加菜單函數,具體函數代碼在此省略。5運行調試三繪制Bezier曲線:1. 創建一個MFC工程,取名為zjie_bezier:2、在zjie_bezierView.h文件中聲明成員函數和變量:3.在zjie_bezierView.h文件中,頭文件加入以下頭文件:寫入控制多邊形的初始化和繪制函數的代碼并對寫入成員函數的函數體,具體代碼在此省略 。 4設計Menu在資源視圖Resource View上雙擊Menu,打開IDR_MAINFRAME,設計如下:并在在zjie_bezierVie

9、w.cpp中參加菜單函數,具體函數代碼在此省略。5運行調試四Bezier曲面的繪制:1. 創建一個MFC工程,取名為zjie_Bezier_qm:2建立兩個新類,分別為P3D,P2D用于設置三維坐標點和二維坐標點: 3.在zjie_Bezier_qmView.h文件中,頭文件加入以下頭文件:寫入成員函數和變量的聲明的函數體,具體代碼在此省略 。 4.在zjie_Bezier_qmView.cpp文件中,頭文件加入以下頭文件:寫入成員函數的函數體,具體代碼在此省略 。 4設計Menu在資源視圖Resource View上雙擊Menu,打開IDR_MAINFRAME,設計如下:并在在zjie_Bezier_qmView.cpp中參加菜單函數,具體函數代碼在此省略。5運行調試實驗內容編寫繪制Hermit、Bezier、B樣條曲線的程序。實驗結果一 Hermit曲線:可執行程序運行初界面:點擊繪圖的里繪制Hermit曲線:二 繪制三次B樣條曲線:1.可執行程序運行初界面:2.點擊繪制三次B樣條曲線:3.直接拖動多邊形頂點:三 繪制Bezier曲線:1.點擊繪制Bezier曲線:2.點擊鼠標左鍵,設置控制多邊形頂點,并點擊右鍵得到曲線:一次Bezier曲線:、二次Bezier曲線:三次Bezier曲線:四次Bezier曲

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論