計(jì)算機(jī)圖形學(xué)實(shí)驗(yàn)報(bào)告2014_第1頁
計(jì)算機(jī)圖形學(xué)實(shí)驗(yàn)報(bào)告2014_第2頁
計(jì)算機(jī)圖形學(xué)實(shí)驗(yàn)報(bào)告2014_第3頁
計(jì)算機(jī)圖形學(xué)實(shí)驗(yàn)報(bào)告2014_第4頁
計(jì)算機(jī)圖形學(xué)實(shí)驗(yàn)報(bào)告2014_第5頁
已閱讀5頁,還剩12頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論