




版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 三農(nóng)村電商售后服務(wù)與客戶關(guān)系管理實(shí)戰(zhàn)指南
- 安裝光伏發(fā)電劃算不
- 汽車 充電樁 新能源
- 課題研究可行性分析格式模板
- 項(xiàng)目進(jìn)度管理與風(fēng)險(xiǎn)控制的工作計(jì)劃
- 三農(nóng)產(chǎn)品三農(nóng)村市場(chǎng)風(fēng)險(xiǎn)防控方案
- 消防中級(jí)監(jiān)控練習(xí)試題及答案
- 中級(jí)養(yǎng)老護(hù)理練習(xí)試題
- 茶藝師復(fù)習(xí)測(cè)試題
- 游泳救生員復(fù)習(xí)測(cè)試卷附答案
- 2021年10月自考03347流體力學(xué)試題及答案含評(píng)分標(biāo)準(zhǔn)
- 聚酯生產(chǎn)技術(shù) 聚酯崗位操作規(guī)程
- 幕墻玻璃維修更換施工方案
- 證明公司人數(shù)
- 《電子信息工程專業(yè)導(dǎo)論》復(fù)習(xí)備考核心題庫(100多題)
- GB/T 10561-2023鋼中非金屬夾雜物含量的測(cè)定標(biāo)準(zhǔn)評(píng)級(jí)圖顯微檢驗(yàn)法
- 淺談希沃白板在初中區(qū)域地理教學(xué)中的應(yīng)用
- 小鷹廣郡通:2023成都城市全景數(shù)據(jù)報(bào)告 -城市研究
- -《畫線段圖解決問題的策略》
- 工程勘察服務(wù)成本要素信息(2022版)
- 特種設(shè)備安全風(fēng)險(xiǎn)管控責(zé)任清單
評(píng)論
0/150
提交評(píng)論