




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、實(shí) 驗(yàn) 報(bào) 告實(shí)驗(yàn)課程: 學(xué)生姓名: 學(xué) 號(hào): 專業(yè)班級(jí): 2014年12月07日目 錄 實(shí)驗(yàn)二 幾何變換實(shí)驗(yàn)三 二維基本圖形生成的算法實(shí)現(xiàn)實(shí)驗(yàn)四 二維填充圖的生成算法實(shí)驗(yàn)五 曲線的生成算法實(shí)現(xiàn)實(shí)驗(yàn)二 幾何變換1、 實(shí)驗(yàn)名稱 幾何變換二、實(shí)驗(yàn)?zāi)康?. 掌握二維圖形基本的幾何變換原理及變換矩陣;2. 掌握矩陣運(yùn)算的程序設(shè)計(jì)。三、實(shí)驗(yàn)內(nèi)容1. 掌握二維圖形的齊次坐標(biāo)表示方法;2. 實(shí)現(xiàn)二維圖形的基本變換,如進(jìn)行平移變換等。四、算法描述二維圖形齊次坐標(biāo)變換矩陣一般表達(dá)式:這33 矩陣中各元素功能一共可分成四塊,即五、實(shí)驗(yàn)步驟1. 編寫二維圖形基本變換如平移、旋轉(zhuǎn)、縮放、比例、對(duì)稱交換的通用子程序;2
2、. 繪制矩形,調(diào)用以上的通用子程序?qū)崿F(xiàn)圖形變換,并輸出交換結(jié)果;3. 上機(jī)調(diào)試程序,顯示最終結(jié)果。六、實(shí)驗(yàn)源程序#include #include double x1,y1,x2,y2,x3,y3,x4,y4;void pingyi(double d,double c) double a1,b1,a2,b2; a1=x1+d; b1=y1+c; a2=x2+d; b2=y2+c; rectangle(a1,b1,a2,b2);void suofang(double s) double a1,b1,a2,b2; a1=(double)x1*s; b1=(double)y1*s; a2=(doub
3、le)x2*s; b2=(double)y2*s; rectangle(a1,b1,a2,b2);void xuanzhuan(double b) double a1,b1,a2,b2; a1=x1*cos(b)-y1*sin(b); b1=y1*cos(b)+x1*sin(b); a2=x2*cos(b)-y2*sin(b); b2=y2*cos(b)+x2*sin(b); rectangle(a1,b1,a2,b2);void cuoqie(double b,double d)double a1,b1,a2,b2,a3,b3,a4,b4;a1=x1+b*y1; a3=x3+b*y3;b1=
4、d*x1+y1; b3=d*x3+y3;a2=x2+b*y2; a4=x4+b*x4;b2=d*x2+y2; b4=d*x4+y4;line(a1,b1,a3,b3);line(a3,b3,a2,b2);line(a2,b2,a4,b4);line(a4,b4,a1,b1);void duichenpoint() double a1,b1,a2,b2; a1=-x1;b1=-y1;a2=-x2;b2=-y2; rectangle(a1,b1,a2,b2);void duichenx()double a1,b1,a2,b2;a1=x1;b1=-y1;a2=x2;b2=-y2;rectangle(
5、a1,b1,a2,b2);void duicheny()double a1,b1,a2,b2;a1=-x1;b1=y1;a2=-x2;b2=y2;rectangle(a1,b1,a2,b2);void duichenxy()double a1,b1,a2,b2;a1=y1;b1=x1;a2=y1;b2=x2;rectangle(a1,b1,a2,b2);void duichenyx()double a1,b1,a2,b2;a1=-y1;b1=-x1;a2=-y2;b2=-x2;rectangle(a1,b1,a2,b2);main() int gdriver,gmode;int select=
6、100;double c,d,e; gdriver=DETECT; gmode=0; initgraph(&gdriver,&gmode,d:tc20hbgi); x1=50;y1=50;x2=100;y2=100; x3=x2;y3=y1;x4=x1;y4=y2; printf(please input a rectangles two point:(x1,y1,x2,y2); scanf(%lf%lf%lf%lf,&x1,&y1,&x2,&y2); rectangle(x1,y1,x2,y2); getch(); printf(1-pingyin); printf(2-suofang);
7、printf(3-xuanzhuan); printf(4-cuoqie); printf(5-guanyu yuandian duichenn); printf(6-guanyu x duichen n); printf(7-guanyu y duichen n); printf(8-guanyu y=x duichen n); printf(9-guanyu y=-x duichen n); printf(would you want to select what:(0 is exit system!) n); while(select!=0) scanf(%d,&select); if(
8、select=1) printf(whats distance to pingyi?); printf(x: ); scanf(%lf,&d); printf(y: ); scanf(%lf,&c); pingyi(d,c); else if(select=2) printf(whats size of rectangle you want?); scanf(%lf,&e); suofang(e); else if(select=3) printf(xuanzhauns size?); scanf(%lf,&e); xuanzhuan(e); else if(select=4) printf(
9、cuoqies size?); scanf(%lf%lf,&c,&d); cuoqie(c,d); else if(select=5) duichenpoint(); else if(select=6) duichenx(); else if(select=7) duicheny(); else if(select=8) duichenxy(); else if(select=9) duichenyx(); else printf(error please again! or input 0 to exit!n); closegraph(); system(pause);7、 程序結(jié)果及其分析
10、 通過(guò)在這次的實(shí)驗(yàn)剛開(kāi)始,由于第一次接觸編譯的環(huán)境覺(jué)得無(wú)從下手,但也逐漸學(xué)到了很多東西按照?qǐng)D形變換的基本原理,我簡(jiǎn)單實(shí)現(xiàn)了圖形的幾種變換 通過(guò)這次實(shí)驗(yàn),我對(duì)二維圖形的基本幾何變換(平移、旋轉(zhuǎn)、縮放、錯(cuò)切、反射、 投影)和復(fù)合變換的理解更加深入了,在對(duì)圖形進(jìn)行復(fù)合變換時(shí),將幾個(gè)基本幾何變換矩陣按一定順序相乘便能得到一個(gè)復(fù)合矩陣,這個(gè)復(fù)合矩陣能夠決定變換后圖形的最終位置、形狀和大小的信息。在產(chǎn)生復(fù)合矩陣時(shí),因?yàn)榫仃嚦朔ú⒉粷M足交換律,所以如果基本幾何變換矩陣相乘的順序不同,可能會(huì)得到不同的復(fù)合矩陣,也就生成了不同的最終變換圖形。實(shí)驗(yàn)三 二維基本圖形生成的算法實(shí)現(xiàn)1、 實(shí)驗(yàn)名稱 二維基本圖形生成的算
11、法實(shí)現(xiàn)二、實(shí)驗(yàn)?zāi)康?. 掌握直線的兩種生成算法;2. 掌握二維圖形顯示原理。三、實(shí)驗(yàn)內(nèi)容1. 對(duì)各種生成算法進(jìn)行效率及效果的分析和比較;2. 實(shí)現(xiàn)直線的生成;3. 學(xué)有余力的同學(xué)可在對(duì)現(xiàn)有算法理解的基礎(chǔ)上,能自行設(shè)計(jì)二維圖形的生成算法并編程實(shí)現(xiàn)。四、算法描述1. 數(shù)值微分法(Digital Differential Analyzer,DDA)生成直線(1) 算法思想:基于直線的微分方程來(lái)生成直線。已知過(guò)端點(diǎn)P0 (x0, y0), P1(x1, y1)的直線段L:y=kx+b直線斜率為(2)數(shù)學(xué)描述|k| 1 時(shí),在x的增量方向上走步,走步的方向決定于Dx的符號(hào)。xi+1=xi+ Dx , 計(jì)
12、算yi+1= kxi+1+ b = kxi + b + kDx = yi + kDx 當(dāng)Dx =1;yi+1 = yi+ k 即:當(dāng)x每遞增1,y遞增k(即直線斜率);在這種情況下,x每增加1,y最多增加1。當(dāng) |k| 1時(shí),在y的增量方向上走步,走步的方向決定于Dy的符號(hào)。yi+1 = yi + 1計(jì)算 xi = yi/k - b/k xi+1 = yi+1/k - b/k = (yi+1)/k - b/k = yi/k-b/k + 1/k = xi + 1/k2. Bresenham算法生成直線(1)算法思想比較從理想直線到位于直線上方的像素的距離d2和相鄰的位于直線下方的像素的距離d1,
13、然后根據(jù)距離誤差項(xiàng)的符號(hào)確定與理想直線最近的象素。(2)數(shù)學(xué)描述(1) 判別函數(shù)設(shè)直線起點(diǎn)P0(x0,y0),終點(diǎn)P1(x1,y1),令e0=2Dy - Dx作為判別函數(shù),根據(jù)e0的正負(fù),可以確定走向: e00,Y 方向不走步 e0=0,Y方向走一步(2) 遞推公式對(duì)于第i +1步(i=0,l,2,n)如果ei 0,則Y方向走一步:Xil Xi+1 Yi1 =Yi+1 ei1= ei + 2Dy - 2Dx如果ei0,則Y方向不走步:Xil Xi+1 Yi1 =Yiei1= ei+ 2Dy五、實(shí)驗(yàn)步驟1. 選擇一種直線生成算法(Bresenham算法生成直線);2. 用C語(yǔ)言編寫程序,依情況進(jìn)
14、行判斷;3. 用putpixel()函數(shù)逐個(gè)畫點(diǎn);4. 上機(jī)調(diào)試程序,顯示最終結(jié)果。六、實(shí)驗(yàn)源程序#include #include double x,y;double a50;b50;void run(double k,int d)int i; if(abs(k)=1) for(i=2;i=10;i+) ai=ai-1+d; bi=bi-1+k*d; putpixel(ai,bi,1); getch(); else for(i=2;i=10;i+) ai=ai-1+1/k; bi=bi-1+1; putpixel(ai,bi,1 ); getch(); main()int gdriver,g
15、mode;gdriver=DETECT;gmode=0;initgraph(&gdriver,&gmode,d:tc20hbgi);x=50;y=50;putpixel(x,y,1);getch();a1=x;b1=y;run(2,2);run(0.5,50); system(pause);七、程序結(jié)果及其分析實(shí)驗(yàn)四 二維填充圖的生成算法一、 實(shí)驗(yàn)名稱二維填充圖的生成算法二、 實(shí)驗(yàn)?zāi)康?、掌握區(qū)域填充的掃描線算法思想。三、實(shí)驗(yàn)內(nèi)容 1、編程實(shí)現(xiàn)任一多邊形的填充。四、算法描述1、算法思想 用水平掃描線從上到下掃描由點(diǎn)線段構(gòu)成的多段構(gòu)成的多邊形。每根掃描線與多邊形各邊產(chǎn)生一系列交點(diǎn),將這些交點(diǎn)按橫
16、坐標(biāo)從小到大排序,將交點(diǎn)兩兩配對(duì),并填充每一區(qū)段。多邊形被掃描完畢后,填充也就完成。 2、算法步驟:(1) 為每一條掃描線建立新邊表NET;(2) 將掃描線縱坐標(biāo)y的初值置為NET中非空元素的最小序號(hào);(3) 置活性邊表AET為空;(4) 執(zhí)行下列步驟直至NET和AET都為空;A、 如果NET中的第y類非空,則將其中的所有邊取出并插入AET中,在插入過(guò)程中進(jìn)行排序;B、 對(duì)AET中的邊兩兩配對(duì),將每對(duì)邊中x坐標(biāo)按規(guī)則取整,獲得有效的填充區(qū)段,再填充;C、 將當(dāng)前掃描線縱坐標(biāo)y值遞增1,即y=1;D、 將AET中滿足y=ymax邊刪去; E、 對(duì)AET中剩下的每一條邊的x遞增deltax,即x=
17、x+deltax 3、思考: (1)如何解決填充擴(kuò)大化問(wèn)題? (2)如何解決交點(diǎn)計(jì)數(shù)問(wèn)題?五、實(shí)驗(yàn)步驟1. 利用掃描線填充算法實(shí)現(xiàn),多邊形以n, x_array, y_array形式給出,其中x_array,y_array中存放著多邊形的n個(gè)頂點(diǎn)的x, y坐標(biāo);2. 用C語(yǔ)言編寫程序?qū)崿F(xiàn)算法;3. 上機(jī)調(diào)試程序,顯示最終結(jié)果。六、實(shí)驗(yàn)要求#include#include#include#includevoid draw(int x1,int y1,int x2,int y2,int delta)int nx1,ny1,nx2,ny2;nx1=x1,ny1=y2-delta,nx2=x1+del
18、ta,ny2=y2;while(ny1=y1)&(nx2x2)ny2-=nx2-x2; nx2=x2;while(ny1y1)line(nx1,ny1,nx2,ny2);getch();ny1-=delta; ny2-=delta; nx1+=y1-ny1; ny1=y1;while(nx1x2)line(nx1,ny1,nx2,ny2);getch();nx1+=delta; ny2-=delta; elsenx1+=y1-ny1; ny1=y1; while(nx2y1) line(nx1,ny1,nx2,ny2); getch(); ny2-=delta; nx1+=delta; int
19、 main(void)int x1,y1,y2,x2,delta;int driver=DETECT,mode;printf(Please input lefttop(x1,y1) and rightbottom(x2,y2) of rectangle and delta:n); scanf(%d%d%d%d%d,&x1,&y1,&x2,&y2,&delta);initgraph (&driver,&mode,d:tc20hbgi); /*這里*/rectangle(x1,y1,x2,y2);getch(); draw(x1,y1,x2,y2,delta); gotoxy(1,1);print
20、f(Press any key to exit!);getch();closegraph();return 0;七、程序結(jié)果及其分析實(shí)驗(yàn)五 曲線的生成算法實(shí)現(xiàn)1、 實(shí)驗(yàn)名稱曲線的生成算法實(shí)現(xiàn)二、實(shí)驗(yàn)?zāi)康?. 掌握B樣條曲線、Bezier曲線的定義;2. 能編程實(shí)現(xiàn)N 次B樣條曲線、Bezier曲線的繪制與顯示。 三、實(shí)驗(yàn)內(nèi)容1. 編程實(shí)現(xiàn)二次Bezier曲線的繪制;2. 學(xué)有余力的同學(xué)可以編程實(shí)現(xiàn)二次B樣條曲線的繪制。四、算法描述1. 貝塞爾曲線貝塞爾曲線的參數(shù)向量表達(dá)式通常,n+1個(gè)頂點(diǎn)定義一個(gè)n次多項(xiàng)式。其中稱為伯恩斯坦(Bernstain)基函數(shù)。2. B樣條的數(shù)學(xué)表達(dá)式 給定m+n+1
21、個(gè)頂點(diǎn),可以定義m+1段n次的參數(shù)曲線段為:式中稱為n次B樣條基函數(shù)。五、實(shí)驗(yàn)步驟1. 編程實(shí)現(xiàn)二次Bezier曲線的繪制;2. 上機(jī)調(diào)試程序,顯示最終繪圖結(jié)果。六、實(shí)驗(yàn)要求#includegraphics.h#includemalloc.h#includemath.h#defineMULTIPLE7#defineROW4structnodefloatx,y;voiddraw_polygon(structnodea,intoriginx,intoriginy)intn;for(n=0;nROW;n+)if(n=0)moveto(originx+a0.x,originy-a0.y);lineto(originx+an.x,originy-an.y);structnodedecastel
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年上半年安徽安慶潛山市事業(yè)單位招聘易考易錯(cuò)模擬試題(共500題)試卷后附參考答案
- 2025年上半年安徽合肥廬江縣部分事業(yè)單位招聘易考易錯(cuò)模擬試題(共500題)試卷后附參考答案
- 2025北新集團(tuán)建材股份有限公司應(yīng)屆生招聘筆試參考題庫(kù)附帶答案詳解
- 2025中國(guó)儲(chǔ)備糧管理集團(tuán)有限公司福建分公司招聘26人筆試參考題庫(kù)附帶答案詳解
- 2024重慶渝北區(qū)保安服務(wù)有限責(zé)任公司招聘6人筆試參考題庫(kù)附帶答案詳解
- 2024重慶西永產(chǎn)業(yè)發(fā)展有限公司招聘7人筆試參考題庫(kù)附帶答案詳解
- 2025年心臟除顫監(jiān)護(hù)儀項(xiàng)目可行性研究報(bào)告
- 2025年射頻監(jiān)測(cè)系統(tǒng)項(xiàng)目可行性研究報(bào)告
- 2025年大型空氣源熱泵熱水器項(xiàng)目可行性研究報(bào)告
- 廣東省廉江市實(shí)驗(yàn)學(xué)校高中政治4.2我國(guó)的基本經(jīng)濟(jì)制度練習(xí)2必修1
- 海洋自主無(wú)人系統(tǒng)跨域協(xié)同任務(wù)規(guī)劃模型與技術(shù)發(fā)展研究
- 中國(guó)中材海外科技發(fā)展有限公司招聘筆試沖刺題2025
- 兩層鋼結(jié)構(gòu)廠房施工方案
- 班級(jí)凝聚力主題班會(huì)12
- 初中語(yǔ)文“經(jīng)典誦讀與海量閱讀”校本課程實(shí)施方案
- 2025 春夏·淘寶天貓運(yùn)動(dòng)戶外行業(yè)趨勢(shì)白皮書(shū)
- 西門子S7-1200 PLC應(yīng)用技術(shù)項(xiàng)目教程(第3版) 課件 1.認(rèn)識(shí)S7-1200PLC寬屏-(LAD+SCL)
- 《稅法》(第六版)全書(shū)教案電子講義
- 翻斗車司機(jī)安全培訓(xùn)
- 計(jì)算機(jī)軟件配置管理計(jì)劃規(guī)范
- 《勞動(dòng)保障監(jiān)察條例》課件
評(píng)論
0/150
提交評(píng)論