版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
PAGE13-計(jì)算機(jī)圖形學(xué)課程實(shí)驗(yàn)報(bào)告實(shí)驗(yàn)題目:班級(jí):姓名:學(xué)號(hào)指導(dǎo)教師:日期:信息與計(jì)算機(jī)工程學(xué)院2014實(shí)驗(yàn)2基本圖形生成算法實(shí)驗(yàn)2基本圖形生成算法2.1直線的繪制一、實(shí)驗(yàn)?zāi)康?、通過實(shí)驗(yàn),進(jìn)一步理解和掌握DDA和Bresenham算法;2、掌握以上算法生成直線段的基本過程;3、通過編程,會(huì)在TC環(huán)境下完成DDA或中點(diǎn)算法實(shí)現(xiàn)直線段的繪制。二、實(shí)驗(yàn)環(huán)境計(jì)算機(jī)、Turbo
C或其他C語言程序設(shè)計(jì)環(huán)境
三、實(shí)驗(yàn)要求:1.每個(gè)學(xué)生單獨(dú)完成;2.開發(fā)語言為TurboC或C++,也可使用其它語言;3.請(qǐng)?jiān)谧约旱膶?shí)驗(yàn)報(bào)告上寫明姓名、學(xué)號(hào)、班級(jí);4.每次交的實(shí)驗(yàn)報(bào)告內(nèi)容包括:題目、試驗(yàn)?zāi)康暮鸵饬x、程序制作步驟、主程序、運(yùn)行結(jié)果圖以及參考文件;5.自己保留一份可執(zhí)行程序,考試前統(tǒng)一檢查和上交。四、實(shí)驗(yàn)內(nèi)容用DDA算法或Besenham算法實(shí)現(xiàn)斜率k在0和1之間的直線段的繪制。五、實(shí)驗(yàn)步驟1、算法、原理清晰,有詳細(xì)的設(shè)計(jì)步驟;2、依據(jù)算法、步驟或程序流程圖,用C語言編寫源程序;3、編輯源程序并進(jìn)行調(diào)試;4、進(jìn)行運(yùn)行測(cè)試,并結(jié)合情況進(jìn)行調(diào)整;5、對(duì)運(yùn)行結(jié)果進(jìn)行保存與分析;6、把源程序以文件的形式提交;7、按格式書寫實(shí)驗(yàn)報(bào)告。六、實(shí)驗(yàn)代碼1、DDA#include"graphics.h"#include"stdlib.h"#include"stdio.h"#include"conio.h"#include"math.h"voidDDALine(intx1,inty1,intx2,inty2,intcolor){floatx,y,dx,dy,k;dx=(float)(x2-x1);dy=(float)(y2-y1);k=dy/dx;y=y1;x=x1;if(abs(k)<1)if(x1<=x2)for(x=x1;x<=x2;x++){putpixel(x,(int)(y+0.5),color);y=y+k;}elsefor(x=x1;x>=x2;x--){putpixel(x,(int)(y+0.5),color);y=y-k;}elseif(y1<=y2)for(y=y1;y<=y2;y++){putpixel((int)(x+0.5),y,color);x=x+1/k;}elsefor(y=y1;y>=y2;y--){putpixel((int)(x+0.5),y,color);x=x-1/k;}}main(){intgmode,gdriver;gdriver=DETECT;initgraph(&gdriver,&gmode,"D:\Win-TC\project");setbkcolor(WHITE);DDALine(200,200,350,260,RED);getch();closegraph();}2、中點(diǎn)畫線:#include"graphics.h"#include"stdlib.h"#include"stdio.h"#include"conio.h"#include"math.h"voidMPLine(intx1,inty1,intx2,inty2,intcolor)/*適用于0<k<1,x1<=x2的情況*/{inta,b,d1,d2,d,x,y;a=y1-y2;b=x2-x1;d=2*a+b;d1=2*a;d2=2*(a+b);x=x1;y=y1;putpixel(x,y,color);while(x<x2){if(d<0){x++;y++;d=d+d2;}else{x++;d=d+d1;}putpixel(x,y,color);}}main(){intgmode,gdriver;gdriver==DETECT;initgraph(&gdriver,&gmode,"D:\Win-TC\project");setbkcolor(WHITE);MPLine(200,200,300,400,RED);getch();closegraph();}3、Bresenham:#include"graphics.h"#include"stdlib.h"#include"stdio.h"#include"conio.h"#include"math.h"voidBresenhamLine(intx1,inty1,intx2,inty2,intc){inti,s1,s2,interchange;floatx,y,deltax,deltay,e,temp;x=x1;y=y1;deltax=abs(x2-x1);deltay=abs(y2-y1);if(x2-x1>=0)s1=1;elses1=-1;if(y2-y1>=0)s2=1;elses2=-1;if(deltay>deltax){temp=deltax;deltax=deltay;deltay=temp;interchange=1;}elseinterchange=0;e=2*deltay-deltax;putpixel(x,y,c);for(i=1;i<=deltax;i++){if(e>=0){x=x+s1;y=y+s2;e=e-2*deltax+2*deltay;}else{if(interchange==1)y=y+s2;elsex=x+s1;e=e+2*deltay;}putpixel(x,y,c);}}main(){intgmode,gdriver;gdriver=DETECT;initgraph(&gdriver,&gmode,"D:\Win-TC\project");setbkcolor(WHITE);BresenhamLine(200,200,350,260,RED);getch();closegraph();}七、實(shí)驗(yàn)結(jié)果1、2、2.2圓和橢圓的繪制2.2.1實(shí)驗(yàn)?zāi)康?、通過實(shí)驗(yàn),進(jìn)一步理解和掌握中點(diǎn)和Bresenham算法;2、掌握以上算法生成圓或橢圓的基本過程;3、通過編程,會(huì)在TC環(huán)境下完成橢圓或圓的繪制。2.2.2實(shí)驗(yàn)環(huán)境計(jì)算機(jī)、TurboC或其他C語言程序設(shè)計(jì)環(huán)境
2.2.3實(shí)驗(yàn)要求:同2.12.2.4實(shí)驗(yàn)內(nèi)容用中點(diǎn)(Besenham)算法實(shí)現(xiàn)橢圓或圓的繪制。2.2.5實(shí)驗(yàn)步驟1、算法、原理清晰,有詳細(xì)的設(shè)計(jì)步驟;2、依據(jù)算法、步驟或程序流程圖,用C語言編寫源程序;3、編輯源程序并進(jìn)行調(diào)試;4、進(jìn)行運(yùn)行測(cè)試,并結(jié)合情況進(jìn)行調(diào)整;5、對(duì)運(yùn)行結(jié)果進(jìn)行保存與分析;6、把源程序以文件的形式提交;7、按格式書寫實(shí)驗(yàn)報(bào)告。2.2.6實(shí)驗(yàn)代碼1、中點(diǎn)畫圓#include"graphics.h"#include"stdlib.h"#include"stdio.h"#include"conio.h"#include"math.h"voidCirclePoint(intx,inty,intcolor){putpixel(x+100,y+100,color);putpixel(-x+100,y+100,color);putpixel(x+100,-y+100,color);putpixel(-x+100,-y+100,color);putpixel(y+100,x+100,color);putpixel(y+100,-x+100,color);putpixel(-y+100,x+100,color);putpixel(-y+100,-x+100,color);}voidMidCircle(intr,intcolor){intx,y,d;x=0;y=r;d=1-r;while(x<=y){CirclePoint(x,y,color);if(d<0)d+=2*x+3;else{d+=2*(x-y)+5;y--;}x++;}}main(){intgmode,gdriver;gdriver=DETECT;initgraph(&gdriver,&gmode,"D:\Win-TC\project");setbkcolor(WHITE);MidCircle(60,RED);getch();closegraph();}2、Bresenham畫圓#include"graphics.h"#include"stdlib.h"#include"stdio.h"#include"conio.h"#include"math.h"voidBresenhamCircle(intxc,intyc,intr,intc){intx,y;floatd;x=0;y=r;d=3-2*r;putpixel((xc+x),(yc+y),c);putpixel((xc-x),(yc+y),c);putpixel((xc+x),(yc-y),c);putpixel((xc-x),(yc-y),c);putpixel((xc+y),(yc+x),c);putpixel((xc-y),(yc+x),c);putpixel((xc+y),(yc-x),c);putpixel((xc-y),(yc-x),c);while(x<y){if(d>0){d=d+4*(x-y)+10;y--;x++;}else{d=d+4*x+6;x++;}putpixel((xc+x),(yc+y),c);putpixel((xc-x),(yc+y),c);putpixel((xc+x),(yc-y),c);putpixel((xc-x),(yc-y),c);putpixel((xc+y),(yc+x),c);putpixel((xc-y),(yc+x),c);putpixel((xc+y),(yc-x),c);putpixel((xc-y),(yc-x),c);}}main(){intgmode,gdriver;gdriver=DETECT;initgraph(&gdriver,&gmode,"D:\Win-TC\project");setbkcolor(WHITE);BresenhamCircle(100,100,50,RED);getch();closegraph();}3、中點(diǎn)畫橢圓代碼1:#include"graphics.h"#include"stdlib.h"#include"stdio.h"#include"conio.h"#include"math.h"voidMidBresenhamEllipse(inta,intb,intcolor){intx,y;floatd1,d2;x=0;y=b;d1=b*b+a*a*(-b+0.5);putpixel(x+100,y+100,color);putpixel(-x+100,-y+100,color);putpixel(-x+100,y+100,color);putpixel(x+100,-y+100,color);while(b*b*(x+1)<a*a*(y-0.5)){if(d1<=0){d1+=b*b*(2*x+3);x++;}else{d1+=b*b*(2*x+3)+a*a*(-2*y+2);x++;y--;}putpixel(x+100,y+100,color);putpixel(-x+100,-y+100,color);putpixel(-x+100,y+100,color);putpixel(x+100,-y+100,color);}d2=b*b*(x+0.5)*(x+0.5)+a*a*(y-1)*(y-1)-a*a*b*b;while(y>0){if(d2<=0){d2+=b*b*(2*x+2)+a*a*(-2*y+3);x++;y--;}else{d2+=a*a*(-2*y+3);y--;}putpixel(x+100,y+100,color);putpixel(-x+100,-y+100,color);putpixel(-x+100,y+100,color);putpixel(x+100,-y+100,color);}}main(){intgmode,gdriver;gdriver=DETECT;initgraph(&gdriver,&gmode,"D:\Win-TC\project");setbkcolor(WHITE);MidBresenhamEllipse(20,8,RED);getch();closegraph();}代碼2:#include"graphics.h"#include"stdlib.h"#include"stdio.h"#include"conio.h"#include"math.h"voidMPEllipse(longa,longb,longxc,longyc,intc){longx,y;doubled1,d2;x=0;y=b;d1=b*b+a*a*(-b
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年江西共青城人民醫(yī)院高層次衛(wèi)技人才招聘筆試歷年參考題庫頻考點(diǎn)附帶答案
- 培訓(xùn)機(jī)構(gòu)新生轉(zhuǎn)換
- 2024年桐城市血防附屬醫(yī)院高層次衛(wèi)技人才招聘筆試歷年參考題庫頻考點(diǎn)附帶答案
- 2024年武鳴縣人民中醫(yī)院高層次衛(wèi)技人才招聘筆試歷年參考題庫頻考點(diǎn)附帶答案
- 培訓(xùn)設(shè)施巡檢管理
- 培智班主任開學(xué)培訓(xùn)課件
- 古詩知識(shí)競(jìng)賽
- 天貓推流軟件流程
- 2024版地產(chǎn)金融服務(wù)合作協(xié)議3篇
- 2024版門面精裝修產(chǎn)權(quán)轉(zhuǎn)讓協(xié)議一
- 2024消防安全警示教育(含近期事故案例)
- Starter Section 1 Meeting English 說課稿 -2024-2025學(xué)年北師大版(2024)初中英語七年級(jí)上冊(cè)
- 2024年法律職業(yè)資格考試(試卷一)客觀題試卷及解答參考
- 2024-2025學(xué)年北師大版七年級(jí)上冊(cè)數(shù)學(xué)期末專項(xiàng)復(fù)習(xí):期末壓軸題分類(原卷版)
- 2024年全國(guó)《汽車加氣站操作工》安全基礎(chǔ)知識(shí)考試題庫與答案
- 2024-2025學(xué)年北師大版小學(xué)六年級(jí)上學(xué)期期末英語試卷及解答參考
- 食堂項(xiàng)目經(jīng)理培訓(xùn)
- 2024年人教版八年級(jí)道德與法治下冊(cè)期末考試卷(附答案)
- 公司事故隱患內(nèi)部報(bào)告獎(jiǎng)勵(lì)機(jī)制
- (高清版)DB34∕T 1337-2020 棉田全程安全除草技術(shù)規(guī)程
- 部編版小學(xué)語文二年級(jí)上冊(cè)單元測(cè)試卷含答案(全冊(cè))
評(píng)論
0/150
提交評(píng)論