




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第三專題 曲面造型的發(fā)展趨勢(shì)曲面造型的發(fā)展趨勢(shì) 曲線的參數(shù)方程 )( )( )( tzz tyy txx 給定一個(gè)t值,就得到曲線上一點(diǎn)的坐標(biāo)。當(dāng)t在參 數(shù)域a,b內(nèi)連續(xù)變化時(shí),就得到了曲線。為了方便起見, 可以將a,b區(qū)間規(guī)范化成0,1。 kjip)()()()(tztytxt 曲線參數(shù)表示矢量方程式 )()()()(tztytxt, pp 給定一個(gè)t值,就得到曲線上一點(diǎn)的坐標(biāo)。當(dāng)t在參 數(shù)域a,b內(nèi)連續(xù)變化時(shí),就得到了曲線。為了方便起見, 可以將a,b區(qū)間規(guī)范化成0,1。 螺旋線的參數(shù)方程可以寫為螺旋線的參數(shù)方程可以寫為 bz ay ax sin cos ),( v bt 螺旋線的重要性質(zhì)
2、:螺旋線的重要性質(zhì): ,: 00 ,: 00 bbbz 上升的高度與轉(zhuǎn)過的角度成正比即上升的高度與轉(zhuǎn)過的角度成正比即 上升的高度上升的高度 bh2 螺距螺距 ,2 tax cos tay sin vtz 或 曲線參數(shù)方程實(shí)例曲線參數(shù)方程實(shí)例 ),( ),( ),( vuzz vuyy vuxx 雙參數(shù)描述表達(dá)式 曲面的范圍通常用兩個(gè)參數(shù)u和v的變化區(qū)間的矩形區(qū)域 2121 ,vvvuuu 給出。這種曲面通常叫做矩形域曲面。參數(shù)u和v的變化區(qū)間一般規(guī)范為0,1, ),(),(),(),vuzvuyvuxvu s(s ),(zyx 矢量方程式為 當(dāng)參數(shù)u,v在參數(shù)域0,1中連續(xù)變化時(shí),其對(duì)應(yīng)點(diǎn) 就
3、形成一張曲面。 向線稱為曲面的參數(shù)曲線(等參數(shù)線)。u,v 分別等于0,1時(shí)的參數(shù)曲線。 ),(),(),() 0000 vuzvuyvuxvu s(s v ),(),(),(),( 0000 vuzvuyvuxvu ss uv ) 1 ,(),0 ,(), 1 (), 0(ususvsvs ) 1 , 1 (),0 , 1 (),1 , 0(),0 , 0(ssss 當(dāng)u=u0時(shí), 表示曲面上一條沿V方向的空間曲線,稱為 向線, 向線和 曲面的邊界曲線 曲面的四個(gè)角點(diǎn) u 向線。當(dāng)v=v0時(shí), 類似地,可以定義 nk du udp du udp uu k k uu k k , 1 , 0 )
4、()( 00 | 0)()( ii upup )( iii upupup )()( 2 n i nii uuBDuP 0 , 10)()( 其中)( , uB ni 被稱為Bernstein基函數(shù)。 ni in uu ini n in uuCuB ii i nni ,1 , 0)1 ( )!( ! ! )1 ()( , ) 1(*) 1(lk ), 1 , 0;,1 , 0( , ljkiD ji lk * lk * k i l j jlikji vuvBuBDvuS 00 , 1 , 0,)()(),( 。 )( , uB ik ik uuCuB i i kik )1 ()( , )( ,
5、vB jl jl j j ljl uuCvB )1 ()( , 為u向Bernstein基函數(shù), 為v向Bernstein基函數(shù), ), 1 , 0(niDi n i kii uufDuB 0 , 10),()( )( , uf ki 110 ki uuu ), 1 , 0(niDi 稱為B樣條基函數(shù),是由節(jié)點(diǎn)矢量U: 所決定的k次分段多項(xiàng)式。順序連接控制頂點(diǎn) 所形成的多邊形成為控制多邊形。 移動(dòng)定點(diǎn)對(duì)B樣條曲線的影響 k次B樣條曲線與k+1個(gè)頂點(diǎn)有關(guān) )()( , vfuf ljki 與 ), 1, 0;, 1, 0(njmiDij ) 1() 1(nm), 1, 0;, 1, 0(njmi
6、Dij 110 , km uuuU 110 , ln vvvV n i m j nlmkljkiij uuvuuuvfufDvuS 00 11, , )()(),(, n j kjj kii ki n i kii uB uB uR uRduP 0 , , , 0 , )( )( )( )()( )( , uR ki )( , uR ki 式中稱為k次有理基函數(shù), 具有和k次B樣條基函數(shù)相同的性質(zhì) n i kii n i kiii uB uBd uP 0 , 0 , )( )( )( ni i , 1 , 0, nidi, 1 , 0, 0, 0, 0 in 其余 )( , uB ki , 11
7、0 kn uuuU 式中:分別與 首、末權(quán)因子 。 為由節(jié)點(diǎn)矢量 節(jié)點(diǎn)矢量中的節(jié)點(diǎn)數(shù)為m=n+k+1,n為控制點(diǎn)數(shù),k為B樣條基函數(shù)的次數(shù)。 決定的k次B樣條基函數(shù)。 控制頂點(diǎn) 相聯(lián)系。 權(quán)因子 n i m j ljkiji n i m j ljkijiji vBuB vBuBd vuP 00 , 00 , )()( )()( ),( ji d , ji, )( , uB ki )( , vB lj 式中:控制頂點(diǎn)網(wǎng) 權(quán)因子 :v向節(jié)點(diǎn)矢量 :沿v向的l次B樣條基函數(shù) :沿u向的k次B樣條基函數(shù) :u向節(jié)點(diǎn)矢量u v NurbsNurbs曲線數(shù)據(jù)結(jié)構(gòu)圖曲線數(shù)據(jù)結(jié)構(gòu)圖 NurbsNurbs曲面數(shù)
8、據(jù)結(jié)構(gòu)圖曲面數(shù)據(jù)結(jié)構(gòu)圖 classCurve public: intCurveNo; *曲線號(hào)* intk; *曲線次數(shù)* ControlPointCP; *控制點(diǎn)指針* KnotVectorKV; *節(jié)點(diǎn)矢量指針* classControlPoint public: intVertexNo; *控制點(diǎn)序號(hào)* doubleVertex3; *控制點(diǎn)坐標(biāo)* doubleWeight; *控制點(diǎn)權(quán)因子* public: voidFormatControl(CStringstr); ; classKnotVector public: intKnotNo; *節(jié)點(diǎn)序號(hào)* intMultiplicity
9、; *節(jié)點(diǎn)重復(fù)度* doubleKnotValue; *節(jié)點(diǎn)值* public: voidFormatKnot(CStringstr); ; VCVC寫的寫的NURBSNURBS曲線數(shù)據(jù)結(jié)構(gòu)曲線數(shù)據(jù)結(jié)構(gòu) classSurface ControlPoint*Up; ControlPoint*Vp; KnotVector*KU; KnotVector*KV; VCVC寫的寫的NURBSNURBS曲面的數(shù)據(jù)結(jié)構(gòu)曲面的數(shù)據(jù)結(jié)構(gòu) 控制點(diǎn)、節(jié)點(diǎn)的可視化實(shí)現(xiàn)控制點(diǎn)、節(jié)點(diǎn)的可視化實(shí)現(xiàn) 為實(shí)現(xiàn)對(duì)控制點(diǎn)、節(jié)點(diǎn)鏈表實(shí)時(shí)進(jìn)行插入、刪除和修改 等操作,可將這些操作同對(duì)話框聯(lián)系起來。并通過操作對(duì)話框 上的控件,實(shí)現(xiàn)對(duì)控制
10、點(diǎn)、節(jié)點(diǎn)鏈表實(shí)時(shí)插入、刪除和修改等 操作過程的可視化。 利用VC實(shí)現(xiàn)控制點(diǎn)鏈表的插入、刪除和修改等操作 過程的可視化的過程如下: (2)建立與對(duì)話框相聯(lián)系的類CmodifierVertex,同時(shí)編寫與按 鈕相關(guān)的成員函數(shù)OnAdd()、OnInsert()、OnUpdate()、 OnRemoveAt()和OnRemoveAll(); (1)建立如圖1所示的對(duì)話框,對(duì)話框中有按鈕Add、Insert、 Update、RemoveAt、RemoveAll,可對(duì)控制點(diǎn)鏈進(jìn)行操作;有組合 框可顯示控制點(diǎn)鏈表中的數(shù)據(jù); (3)將控制點(diǎn)鏈表中的數(shù)據(jù)在組合框中顯示出來。 voidCModifierVert
11、ext:OnAdd() TODO:Addyourcontrolnotificationhandlercode here if(UpdateData()!TRUE) return; ControlPoint*pControlnewControlPoint; pControlVertexNom_VertexNo; pControlVertex0m_Vertexx; pControlVertex1m_Vertexy; pControlVertex2m_Vertexz; pControlWeightm_Weight; ControlPoint_ListAddTail(pControl); AddToL
12、istBox(pControl);*將數(shù)據(jù)添加到組合框* 添 加 操 作 的 程 序 設(shè) 計(jì) 實(shí) 例 PIXELFORMATDESCRIPTOR pixelDesc; /像素存儲(chǔ)格式化, 對(duì)結(jié)構(gòu)變量進(jìn)行了填充; pixelDesc.nSize = sizeof(PIXELFORMATDESCRIPTOR);/pfd的大小 pixelDesc.nVersion = 1; /版本號(hào) pixelDesc.dwFlags = PFD_DRAW_TO_WINDOW | /支持窗 口 PFD_SUPPORT_OPENGL| /支持OpenGL PFD_DOUBLEBUFFER; /支持雙緩存 pixelD
13、esc.iPixelType = PFD_TYPE_RGBA; /RGBA類型 pixelDesc.cColorBits = 32; /32位色深度 pixelDesc.cRedBits = 8; /各顏色位 pixelDesc.cRedShift = 16; pixelDesc.cGreenBits = 8; pixelDesc.cGreenShift = 8; pixelDesc.cBlueBits = 8; pixelDesc.cBlueShift = 0; pixelDesc.cAlphaBits = 0; /無alpha緩存 pixelDesc.cAlphaShift = 0; /忽
14、略轉(zhuǎn)換位 pixelDesc.cAccumBits = 64; /各累計(jì)位 pixelDesc.cAccumRedBits = 16; pixelDesc.cAccumGreenBits = 16; pixelDesc.cAccumBlueBits = 16; pixelDesc.cAccumAlphaBits = 0; pixelDesc.cDepthBits = 32; /32位深度緩存 pixelDesc.cStencilBits = 0; /無模版緩存 pixelDesc.cAuxBuffers = 0; /無輔助緩存 pixelDesc.iLayerType = PFD_MAIN_P
15、LANE; /主層 pixelDesc.bReserved = 0; /保留 pixelDesc.dwLayerMask = 0; pixelDesc.dwVisibleMask = 0; pixelDesc.dwDamageMask = 0; /設(shè)置一個(gè)線程的當(dāng)前繪圖描述表 wglMakeCurrent(hDC,m_hGLContext); /對(duì)自由曲線曲面的繪制 DoNURBS(); /釋放繪圖描述表 wglMakeCurrent(hDC,NULL); /釋放RC(一般在WM_DESTORY消息響應(yīng)函數(shù)OnDestory()中 進(jìn)行) wglDeleteContext(m_hGLConte
16、xt); 至此,一個(gè)基于OpenGL的基本程序框架構(gòu)造完畢,具體對(duì) 自由型曲線曲面的構(gòu)造工作在DoNURBS()中完成。 在繪制自由曲線曲面之前用wglCreateContext()創(chuàng)建一個(gè)渲染 上下文RC并將其作為參數(shù),通過wglMakeCurrent()來建立一 個(gè)當(dāng)前的繪圖描述表,并在繪制完畢后將其釋放。 /節(jié)點(diǎn)序列 GLfloat Notes8=0.0f,0.0f,0.0f,0.0f,1.0f,1.0f,1.0f,1.0f; /定義控制點(diǎn) for(int i=0;i4;i+) for(int j=0;j4;j+) LinchpinPtij0=(GLfloat)(3.0f*(i-0.5f
17、); LinchpinPtij1=(GLfloat)(3.0f*(j-0.5f); if(0i else LinchpinPtij2=-4.0f; /創(chuàng)建NURBS曲面對(duì)象 Nurb=gluNewNurbsRenderer(); /設(shè)置NURBS曲面對(duì)象屬性 gluNurbsProperty(Nurb,GLU_SAMPLING_TOLERANCE,30.0f); gluNurbsProperty(Nurb,GLU_DISPLAY_MODE,GLU_FILL); /開始NURB區(qū)間繪制 gluBeginSurface(Nurb); /定義NURBS曲面的形狀 gluNurbsSurface(Nu
18、rb,8,Notes,8, Notes,4*3,3, /結(jié)束曲面繪制 gluEndSurface(Nurb); glPopMatrix(); /強(qiáng)制繪圖,不駐留緩存 glFlush(); void gluNurbsSurface( GLUnurbsObj * nobj, /NURBS曲面對(duì)象 GLint sknot_count, /u方向節(jié)點(diǎn)數(shù)目 GLfloat * sknot, /u方向節(jié)點(diǎn)數(shù)組指針 GLint tknot_count, /v方向節(jié)點(diǎn)數(shù)目 GLfloat * tknot, /v方向節(jié)點(diǎn)數(shù)組指針 GLint s_stride, /u方向控制點(diǎn)數(shù)據(jù)跨度 GLint t_strid
19、e, /v方向控制點(diǎn)數(shù)據(jù)跨度 GLfloat * ctlarray, /控制點(diǎn)數(shù)組指針 GLint sorder, /u方向上多項(xiàng)式階數(shù) GLint torder, /v方向上多項(xiàng)式階數(shù) GLenum type /確定求值器類型 ); 另有g(shù)luNurbsCurve()函數(shù)也可用于NURBS曲線曲面的定義,使用方法與之類似。 GLfloat Light_position=1.0f,1.0f,1.0f,0.0f,; GLfloat Light_diffuse=1.0f,1.0f,0.0f,1.0f,; glLightfv(GL_LIGHT0,GL_POSITION,Light_position); /定義 光源位置 glLightfv(GL_LIGHT0,GL_DIFFUSE,Light_diffuse); /定義光 源漫射光 glEnable(GL_AUTO_NORMAL); /自動(dòng)生成曲面法向量 glEnable(GL_LIGHTING); /啟動(dòng)光照模型; glEnable(GL_LIGHT0); /使光源GL_LIGHT0有效 OpenGL中所指的材質(zhì)均指構(gòu)成三維實(shí)體的材料在光照模型中對(duì) 于R、G、B三原色的反射率。與光源的定義類似,材質(zhì)的定義 分環(huán)境、漫射、 鏡面
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 財(cái)務(wù)成本管理解題技巧試題及答案
- 財(cái)務(wù)管理下的邏輯歸納與應(yīng)用試題及答案
- 四級(jí)計(jì)算機(jī)實(shí)踐題型試題及答案解析
- 嵌入式系統(tǒng)設(shè)計(jì)原則討論試題及答案
- 二級(jí)C語言實(shí)現(xiàn)排序算法試題及答案
- JAVA微服務(wù)架構(gòu)設(shè)計(jì)概念試題及答案
- 八年級(jí)語文上冊(cè)第五單元第20課夢(mèng)回繁華教案新人教版
- 保險(xiǎn)代扣合同協(xié)議書模板
- 冷庫銷售合同協(xié)議書模板
- 2025版高考地理一輪復(fù)習(xí)課后限時(shí)集訓(xùn)11氣候及其在地理環(huán)境中的作用含解析中圖版
- 【中考真題匯編】專項(xiàng)查漏補(bǔ)缺現(xiàn)代文閱讀-2025年中考語文(含答案)
- 2025年綠色建筑與可持續(xù)發(fā)展考試試題及答案
- 手表質(zhì)押借款協(xié)議書
- 湖北省八校聯(lián)考2025屆高三三模語文試題(含答案)
- 2025四川西南發(fā)展控股集團(tuán)有限公司招聘工作人員65人筆試參考題庫附帶答案詳解
- (三模)溫州市2025屆高三第三次適應(yīng)性考試英語試卷(含答案)
- 光伏高空作業(yè)施工方案
- 2025年江蘇省泰州市姜堰區(qū)中考一模歷史試題(含答案)
- 湖北省武漢市2025屆高中畢業(yè)生四月調(diào)研考試數(shù)學(xué)試卷及答案(武漢四調(diào))
- 2025年2月27日四川省公務(wù)員面試真題及答案解析(綜合管理崗)
- T-CRHA 086-2024 住院患者胰島素泵應(yīng)用護(hù)理規(guī)范
評(píng)論
0/150
提交評(píng)論