![計算機圖形學報告(桂電)_第1頁](http://file4.renrendoc.com/view12/M04/11/37/wKhkGWXZPNGAGaczAAC6M79JoC4904.jpg)
![計算機圖形學報告(桂電)_第2頁](http://file4.renrendoc.com/view12/M04/11/37/wKhkGWXZPNGAGaczAAC6M79JoC49042.jpg)
![計算機圖形學報告(桂電)_第3頁](http://file4.renrendoc.com/view12/M04/11/37/wKhkGWXZPNGAGaczAAC6M79JoC49043.jpg)
![計算機圖形學報告(桂電)_第4頁](http://file4.renrendoc.com/view12/M04/11/37/wKhkGWXZPNGAGaczAAC6M79JoC49044.jpg)
![計算機圖形學報告(桂電)_第5頁](http://file4.renrendoc.com/view12/M04/11/37/wKhkGWXZPNGAGaczAAC6M79JoC49045.jpg)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
計算機圖形學實驗報告院系: 計算機科學與工程學院專業(yè): 計算機科學與技術(shù)學生姓名: 陳守創(chuàng)學號: 1100310106指導老師: 張文輝2014年6月19號實驗一基本圖元的生成一、實驗題目設(shè)計任意直線繪制程序,要求具有一定寬度。二、實驗目的與實驗要求:1、目的與任務:學習并掌握圖形處理的數(shù)學模型和算法。2、實驗基本要求:(1)利用所學算法原理(DDA、中點畫線、Bresenham),編程繪制生成直線,并比較各種算法的差別。所用算法不限定哪種,但不能直接利用編程語言中的畫線命令。(2)分別利用所學算法原理(中點畫圓、Bresenham畫圓),編程繪制圓。所用算法不限定哪種,但不能直接利用編程語言中的畫圓命令。三:生成直線的DDA原理算法的基本思想是利用直線的微分方程來確定直線上的點的坐標。無論光柵顯示器或繪圖機都可以看成有一個網(wǎng)格存在。表示一條直線,就是要用靠近直線的一些網(wǎng)格點來代表這一直線。顯示時要使這些點發(fā)出一定亮度。設(shè)直線的起點坐標Ps(xs,ys),終點坐標為Pe(xe,ye),令Δx=xe-xs,Δy=ye-ys,要繪的直線的微分方程是:(1.1)令Δt=max(|Δx|,|Δy|)(1.2)取時間步長為1/Δt,則可得式(1.1)的數(shù)值解的遞推公式xi+1=xi+Δx/Δt,yi+1=yi+Δy/Δt(1.3)用式(1.3)可求得圖中直線PsPe上三角形表示的點,但顯示時要用象素(即圖中網(wǎng)格結(jié)點)來表示,這要用舍入的辦法來找到最靠近三角形表示的點的象素,用這些象素(圖中圓表示的點)來表示直線。這個方法稱為DDA方法。PPsPe圖1.1圖中圓點表示DDA法生成的直線四:實驗代碼#include"graphics.h"#include<stdio.h>voiddda(intx1,inty1,intx2,inty2){ intk,i,t; floatx,y,xincre,yincre; k=x2-x1; if(k<0){ k=-1*k; } t=y2-y1; if(t<0){ t=-1*t; } if(t>k){ k=t; } xincre=(x2-x1)/k; yincre=(y2-y1)/k; x=x1; y=y1; for(i=1;i<=k;i++){ putpixel(x,y,0); x=x+xincre; y=y+yincre; }}voidmain(){ initgraph(600,600); setbkmode(TRANSPARENT); cleardevice(); setbkcolor(WHITE); floodfill(0,0,100); dda(0,0,300,300); getchar(); }實驗結(jié)果如下:五:實驗心得通過本次實驗,初步了解了計算機圖形學在計算機圖像處理,工程制作,平面設(shè)計上的應用,掌握了計算機繪制圓和直線的幾種算法,DDA直線和圓的生成算法,并且理解和掌握了他們的優(yōu)缺點,對圖形學有了基本的了解.實驗二圖案設(shè)計一:實驗題目采用旋轉(zhuǎn)及比例變換的原理,編制并實現(xiàn)產(chǎn)生正方形螺旋線的程序(圖2.24所示),使每個后繼的正方形被旋轉(zhuǎn)某一固定角度θ,且被縮小,同時使它包含于前一個正方形。二、實驗目的與實驗要求:1、目的與任務:學習并掌握幾何圖形的幾何變換算法。2、實驗基本要求:利用所學算法原理,編程對幾何圖形進行幾何變換。三、實驗原理分析圖形分析從圖案中可以分析出:但它是由基本圖形(正方形)經(jīng)過變換而構(gòu)成的,由16個相似的方塊拼接而成;每一個方塊是一個由正方形形成的螺旋圖案),而每個相鄰方塊的螺旋方向相反。假設(shè)逆時針旋轉(zhuǎn)為正,順時針旋轉(zhuǎn)為負(反),則圖案中螺旋方塊的正、反拼接結(jié)構(gòu)如下圖所示。反正反正正反正反反正反正正反正反圖2.25拼接規(guī)則組成整個圖案的每個方塊,是由正方形邊旋轉(zhuǎn)和縮小形成,且經(jīng)過旋轉(zhuǎn)和縮小的正方形的四個頂點剛好在前一個正方形的四條邊上,四:實驗代碼#include"graphics.h"#include<stdio.h>#include<math.h>voidpolygon(intx0,inty0,floata,intn,floataf){ intx,y,i; floatdtheta,theta; if(n<3) return; a=a/1.4142; dtheta=6.28318/n; theta=af*0.0174533; x=x0+a*cos(theta); y=y0+a*sin(theta); moveto(x,y); for(i=1;i<=n;i++) { theta=theta+dtheta; x=x0+a*cos(theta); y=y0+a*sin(theta); lineto(x,y); }}main(){ inti=0,x=55,y=55; intgdriver=1,gmode=3; floata=100.0; floatb=-1; initgraph(410,410); setbkmode(TRANSPARENT); cleardevice(); setbkcolor(WHITE); floodfill(0,0,50); setcolor(0); floatdtheta=10.0*0.0174533; floatf=1.0/(cos(dtheta)+sin(dtheta)); a=100; for(intj=0;j<4;j++) { b=-1*b; for(intk=0;k<4;k++) { a=100.0/f; for(i=0;i<=20;i++) polygon(x+j*100,y+k*100,(a=a*f),4,45+i*10*b); b=-1*b; } } getchar(); closegraph();}實驗結(jié)果如下:五:實驗心得
通過本次試驗,我學到了圖形變換的基本方法,初步掌握實現(xiàn)二維圖形的平移、旋轉(zhuǎn)和縮放功能,加深了計算機圖形學圖形變化相關(guān)知識的理解.
實驗三二維圖形裁剪一:實驗題目編程實現(xiàn)直線編碼裁剪法。二、實驗目的與實驗要求:1、目的與任務:學習和掌握圖形裁剪算法。2、實驗基本要求:(1)利用所學裁剪算法原理(C-S裁剪、中點分割)編程,分別用Sutherland-Cohen、中點法對線段進行裁剪。(2)比較各種算法的差別三、實驗原理Sutherland-Cohen算法該算法的思想是:對于每條線段P1P2分為三種情況處理。(1)若P1P2完全在窗口內(nèi),則顯示該線段P1P2簡稱“取”之。(2)若P1P2明顯在窗口外,則丟棄該線段,簡稱“棄”之。(3)若線段既不滿足“取”的條件,也不滿足“棄”的條件,則在交點處把線段分為兩段。其中一段完全在窗口外,可棄之。然后對另一段重復上述處理。四:實驗代碼#include<graphics.h>#include<conio.h>#defineLEFT1#defineRIGHT2#defineBOTTOM4#defineTOP8#defineXL100#defineXR300#defineYB100#defineYT300voidencode(floatx,floaty,int*code){ intc=0; if(x<XL)c=c|LEFT; elseif(x>XR)c=c|RIGHT; if(y<YB)c=c|BOTTOM; elseif(y>YT)c=c|TOP; *code=c; return; }/*(x1,y1)與(x2,y2)是線段端點坐標,其它四個參數(shù)分別定義窗口的左,下,右,上邊界*/voidC_S_LineCLip(floatx1,floaty1,floatx2,floaty2){ intcode1,code2,code; floatx,y; encode(x1,y1,&code1); encode(x2,y2,&code2); while((code1!=0)||(code2!=0)) { if((code1&code2)!=0)return; code=code1; if(code1==0)code=code2; if((LEFT&code)!=0)/*線段與左邊界相交*/ { x=XL; y=y1+(y2-y1)*(XL-x1)/(x2-x1); } elseif((RIGHT&code)!=0)/*線段與右邊界相交*/ { x=XR; y=y1+(y2-y1)*(XR-x1)/(x2-x1); } elseif((BOTTOM&code)!=0)/*線段與下邊界相交*/ { y=YB; x=x1+(x2-x1)*(YB-y1)/(y2-y1); } elseif((TOP&code)!=0)/*線段與上邊界相交*/ { y=YT; x=x1+(x2-x1)*(YT-y1)/(y2-y1); } if(code==code1) {x1=x;y1=y;encode(x,y,&code1);} else {x2=x;y2=y;encode(x,y,&code2);} } line((int)x1,(int)y1,(int)x2,(int)y2); return;}voidmain(){ intgraphdriver=VGA; intgraphmode=VGAHI; initgraph(&graphdriver,&graphmode,"C:\\TC3.0\\BGI"); rectangle(XL,YB,XR, C_S_LineCLip(20,30,400,430); getch(); closegraph(); return;}實驗結(jié)果如下:五:實驗心得通過此次實驗,我了解裁剪算法的基本原理。知道了如何快速的判斷一條線段與窗口屬何種關(guān)系,最終實現(xiàn)了直線的裁剪算法.還在比較高興的.實驗四樣條曲線的繪制一、實驗題目B-樣條曲線生成:鼠標點擊按鈕區(qū)域的Spline按鈕,彈出一個對話框。要給給出繪制B-樣條曲線的控制多邊形的頂點信息和B-樣條曲線的階數(shù)。比如要繪制一個四頂點的三階B-樣條曲線。以正方形為例:輸入如下:(20,20)(200,20)(200,200)(20,200)程序首先根據(jù)輸入的頂點繪制出控制多邊形。然后繪制B-樣條曲線。二、實驗目的與實驗要求:1、目的與任務:編程實現(xiàn)中點分割法繪制Bezier曲線。(1)、理解Bézier曲線和B樣條曲線的定義、性質(zhì)及繪制算法。(2)掌握VC的Bézier曲線和NURBS曲線的繪制方法。2、實驗基本要求:(1)實驗程序使用VC實現(xiàn)。(2)利用鼠標操作修改所繪制的曲線。單擊右鍵結(jié)束控制點繪制并顯示Bezier曲線。單擊控制點可以選擇控制點,這個時候可以通過拖拽移動控制點,同時Bezier曲線的變化也將反應;按鍵盤上的d可以刪除控制點,i可以在這個控制點和下一個控制點的中點位置增加一個新的控制點。按c可以清除所有內(nèi)容以重新繪制。通過上下鍵可以增加或者縮小閾值。三、實驗原理B曲線繪制算法四:實驗代碼voidCMyView::OnDraw3bezier()//三次Bezier曲線{ RedrawWindow(); floatcoeff_x[4]; floatcoeff_y[4]; floatpoints_x[nPoints+1]; floatpoints_y[nPoints+1]; intdegree,i,j; degree=3; CClientDC*pdc=newCClientDC(this); CPenpen; pen.CreatePen(PS_SOLID,1,RGB(0,0XFF,0)); CPen*oldpen=(CPen*)pdc->SelectObject(&pen); pdc->TextOut(200,150,"三次Bezier曲線"); doubledelt; coeff_x[0]=10; coeff_x[1]=30; coeff_x[2]=40; coeff_x[3]=40; coeff_y[0]=10; coeff_y[1]=5; coeff_y[2]=13; coeff_y[3]=30; pdc->MoveTo(110,110); for(j=0;j<=degree;j++) pdc->LineTo(10+10*coeff_x[j],10+10*coeff_y[j]);delt=float(1.0/nPoints); doublet=0.0; pdc->MoveTo(110,110); for(i=0;i<=nPoints;i++){ points_x[i]=ThreeBezier(degree,coeff_x,t); points_y[i]=ThreeBezier(degree,coeff_y,t); t=t+delt; pdc->LineTo(10+10*points_x[i],10+10*points_y[i]); } deletepdc;}voidCMyView::OnDraw3bspline()//三次B樣條曲線{RedrawWindow();CClientDC*pdc=newCClientDC(this);CPenpen;pen.CreatePen(PS_SOLID,1,RGB(0,0XFF,0));CPen*oldpen=(CPen*)pdc->SelectObject(&pen);pd
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2學會溝通交流(說課稿)-2023-2024學年道德與法治五年級上冊統(tǒng)編版
- 2025暫估價材料公開招標合同范本變頻水泵排污泵
- 6~9的認識(說課稿)-2024-2025學年一年級上冊數(shù)學人教版
- 2025以買賣合同擔保
- 2024年秋九年級化學上冊 第四單元 自然界的水說課稿 (新版)新人教版
- 2023三年級英語上冊 Assessment 3說課稿1 湘少版
- 路基邊坡防滑平臺施工方案
- Unit 4 My tidy bag Lesson 1 I have a big bag (說課稿)-2024-2025學年粵人版(2024)英語三年級上冊
- 2023八年級地理上冊 第一章 中國的疆域與人口第一節(jié) 中國的疆域說課稿 (新版)湘教版
- 出租代工合同范例
- (康德一診)重慶市2025屆高三高三第一次聯(lián)合診斷檢測 英語試卷(含答案詳解)
- 2025年福建泉州文旅集團招聘24人高頻重點提升(共500題)附帶答案詳解
- 建筑行業(yè)砂石物資運輸方案
- 腫瘤全程管理
- 桃李面包盈利能力探析案例11000字
- GB/Z 30966.71-2024風能發(fā)電系統(tǒng)風力發(fā)電場監(jiān)控系統(tǒng)通信第71部分:配置描述語言
- 污泥處置合作合同模板
- 2025高考數(shù)學專項復習:概率與統(tǒng)計的綜合應用(十八大題型)含答案
- 2024-2030年中國紫蘇市場深度局勢分析及未來5發(fā)展趨勢報告
- 銷售人員課件教學課件
- 三級綜合醫(yī)院評審標準(2024年版)
評論
0/150
提交評論