




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第頁共頁圖形的繪制方法圖形的繪制方法引言在計算機輔助幾何造型領域,常常會用到各種具有復雜邊界的平面圖形,其邊界不僅有直線,還可能有圓弧等各種曲線。目前OpenGL提供了繪制三角面以及凸多邊形的函數(shù),沒有直接提供繪制凹多邊形及有曲線邊界的平面圖形的方法。但是其擁有強大的NURBS曲面繪制函數(shù),可以繪制任意的NURBS曲面,并且可以裁剪繪制NURBS曲面。由于平面也可以看作是一種最簡單的曲面,所以可以把OpenGL的NURBS曲面繪制功能借鑒到對平面圖形的繪制當中,實現(xiàn)對復雜邊界平面圖形的繪制。文中圖形是在笛卡爾坐標系中的xoy平面上進展討論的,對于不在這個平面上的圖形,也可以在其所在的平面上建立部分坐標系,再按照如下提到的方法進展計算。1NURBS及其相關概念NURBS是NonUniformRationalBSplines的縮寫,表示非均勻有理B樣條的意思。其核心思想在于用多個控制點來表示一條曲線或曲面。1.1NURBS控制點在計算機輔助幾何造型中,常常用到各種各樣的曲線,可以用簡單解析式表示的曲線遠遠不能滿足要求。為了更方便地用來表示曲線、曲面形狀,可以用一系列點來控制和調節(jié)曲線、曲面的形狀,這些點被稱為控制點。在NURBS的理論中,控制點包含兩部分信息,一部分是點的坐標值,另一部分是點的權重。點的坐標值表示點在空間中的位置,點的權重值表示點對曲線或曲面的影響大小。三維空間上的控制點可以用四維向量表示,分別代表三個坐標和一個權重值。也可以用三維向量表示,這時權重默認為1.0。二維空間上的控制點可以用三維向量表示,代表兩個坐標值和一個權重,也可以用二維向量表示,此時權重默認為1.0。1.2NURBS曲線、曲面NURBS曲線用空間中的一組控制點向量表示,每一個點都可以對曲線的形狀有一定的影響。NURBS曲面用空間中的一組控制點矩陣表示。根據(jù)NURBS的解析式,假如確定了控制點,也就可以唯一確定一條曲線或者一條曲面。也正是由于NURBS的這種準確表示的特性,在計算機輔助幾何造型中得到了廣泛的應用。2幾種圖形的NURBS表示方法2.1曲線本文僅對工程中最常見的線段和圓弧進展討論,其它曲線可以參照NURBS公式計算其表示方法。2.1.1直線段用2個控制點表示,2個控制點的坐標值為線段的端點坐標值,權重為1.0。2.1.2圓弧需要按照圓弧的圓心角θ的大小討論,分以下情況:對于0°<θ≤90°的圓弧,用3個控制點PA,PB,PC表示,其中兩端的控制點PA,PC的坐標值分別為圓弧的2個端點的坐標值,權重都為1.0。中間的點PB的坐標值為圓弧兩個端點處的兩條切線的交點坐標值,權重值weight計算公式為:weight=cos(θ2)。對于圓心角超過90°的圓弧(包括圓環(huán)),可以切成多段圓弧,每段圓弧都不超過90°,再把每段圓弧用上面的方法表示,即用多段圓弧來表示。2.2平面矩形平面矩形用4個控制點表示,4個控制點的坐標為矩形4個角點的坐標值。為方便起見,可以用三維向量表示,權重默認為1.0。3OpenGL中NURBS的特殊說明3.1控制點在OpenGL中表示帶權重的控制點有特殊的表示方法,對于控制點P,假設其坐標為(x,y,z),權重為weight,那么在OpenGL中表示該控制點的四維向量計算公式為:=(xweight,yweight,zweight,weight)(1)3.2曲面裁剪函數(shù)4圖形繪制數(shù)據(jù)計算4.1背景矩形繪制數(shù)據(jù)計算對于任意一個平面有界圖形,都可以在其所在的平面上找到假設干個矩形,使該圖形的所有部分都在矩形之中。在這些矩形中,兩邊與絕對坐標系的x軸與y軸平行且面積最小的矩形稱為背景矩形。該矩陣與x軸方向平行的邊的長度稱為背景矩形的寬,與y軸平行的長度稱為背景矩形的高。該矩形的四條邊分別通過平面有界圖形在x、y軸方向上的最大最小值點。該方法繪制的思路是先繪制背景矩形,再根據(jù)需要繪制平面有界圖形的幾何邊界,對背景矩形進展裁剪,生成一個完好的.圖形。4.2背景坐標系從z軸的正方向看,以背景矩形的左下角點Pori(xori,yori)為原點,三維空間中的x軸、y軸為坐標軸建立直角坐標系,這個坐標系稱為背景坐標系,背景坐標系x軸的單位長度設為背景矩形的寬,y軸的單位長度設為背景矩形的高。4.3圖形邊界控制點在背景坐標系下坐標值的計算由于只討論在xoy平面上的情況,所以不用考慮平面有界圖形上點的z軸坐標值,這樣邊界上任意一個控制點的絕對坐標只需要用(x,y)兩個坐標值表示。對于本文用到背景矩形,僅用到了在xoy平面上、而且兩邊都平行于坐標軸的矩形平面圖形,兩端控制點的節(jié)點參數(shù)設置為標準的0與1。裁剪邊界曲線上控制點在背景矩形上的UV坐標可以看作是在背景坐標系下的坐標。對于邊界曲線上的控制點,假如其絕對坐標為(x,y),那么其在背景坐標系下的部分坐標(x',y')計算公式為:x'y'=x-xoriy-yori×1width001height(2)其中width為背景矩形的寬,height為背景矩形的高。xori、yori為背景坐標系的原點坐標值。計算好邊界曲線上的控制點后就可以確定裁剪曲線的繪制數(shù)據(jù),邊界曲線上的控制點權重不變。5繪制流程根據(jù)以上分析^p,可以采用以下的繪制流程來繪制一個平面圖形:①確定背景矩形;②確定背景坐標系;③求出圖形邊界曲線的控制點的絕對坐標及權重,并求出其在背景坐標系上的坐標;④按照OpenGL控制點的表示方法構造顯示數(shù)據(jù);⑤調用NURBS曲面繪制函數(shù)繪制背景矩形;⑥調用NURBS曲面裁剪函數(shù)對繪制的背景矩形進展裁剪,生成平面幾何圖形。6程序實例為了檢測這種方法的有效性,選取了如圖1所示的圖形,該圖形包含直線邊界和圓弧邊界,而且有一個內部的孔。按照本文的方法,在Dev-C++軟件中,結合C++程序設計語言,繪制出結果如圖2所示的圖形。可以看出用這種方法
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 吊扇清洗項目合同范本
- 云銅購銷合同范本
- 口腔醫(yī)生兼職合同范本
- 半路夫妻合同范本
- 協(xié)會副會長聘用合同范本
- 華為設計合同范本
- 專業(yè)醫(yī)療咨詢合同范本
- 加盟制合同范本
- 醫(yī)院科室共建合同范本
- 合作入股技術合同范本
- 畢業(yè)設計外文文獻-Spring Boot
- 六年級下冊《生命.生態(tài).安全》全冊教案(表格式)
- 采購入庫單模板
- GB 14930.1-2022食品安全國家標準洗滌劑
- GB/T 15566.6-2007公共信息導向系統(tǒng)設置原則與要求第6部分:醫(yī)療場所
- 中國電信教育基地市級“三通兩平臺”建設方案(教育機構)
- 火力發(fā)電廠節(jié)能技術經濟指標釋義
- 智能制造知識課件
- 雙方責任及工程分工界面
- 2017醫(yī)學倫理知情同意書
- 中醫(yī)學-導論課件
評論
0/150
提交評論