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

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

教育科學(xué)與技術(shù)學(xué)院/第一學(xué)期實(shí)驗(yàn)報(bào)告實(shí)驗(yàn)課程名稱計(jì)算機(jī)圖形學(xué)專業(yè)教育技術(shù)學(xué)學(xué)生學(xué)號(hào)B14150226學(xué)生姓名朱志耀指導(dǎo)教師熊健、閆靜杰指導(dǎo)單位通信與信息工程學(xué)院日期:11月24日1、每項(xiàng)實(shí)驗(yàn)報(bào)告的內(nèi)容==============================================================================實(shí)驗(yàn)一:直線的生成算法實(shí)現(xiàn)實(shí)驗(yàn)?zāi)康模豪斫庵本€生成的原理;實(shí)驗(yàn)內(nèi)容:1、理解直線的生成原理

2、掌握幾個(gè)基本的直線生成算法:DDA畫線法、中點(diǎn)畫線法、Bresenham畫線法。

3、仿照教材有關(guān)直線生成的Bresenham算法,編譯程序。

4、調(diào)試、編譯、運(yùn)行程序。實(shí)驗(yàn)辦法及編程:實(shí)現(xiàn)辦法介紹本次實(shí)驗(yàn)是在TurboC2.0的平臺(tái)上編譯實(shí)現(xiàn)的;Bresenham算法的基本原理是:過各行各列像素中心構(gòu)造一組虛擬網(wǎng)格線,按直線從起點(diǎn)到終點(diǎn)的次序計(jì)算直線與各垂直網(wǎng)格線的交點(diǎn),然后擬定該列像素中與此交點(diǎn)近來的像素。實(shí)當(dāng)代碼及分析#include

"stdio.h"

#include

"graphics.h"

Bresenham_line(x0,y0,x1,y1,color)

int

x0,y0,x1,y1,color;

{

int

x,y,dx,dy,i,e;

float

k;

dx=x1-x0;dy=y1-y0;

k=(dy*1.0)/dx;

/*求斜率*/e=2*dy-dx;

x=x0;

y=y0;

for

(x=x0;

x<=x1;

x++)

{

putpixel(x,y,RED);/*畫紅色的像素點(diǎn)*/

e=e+2*dy;

if(e>=0)

{

y++;e=e-2*dx;}

}

}

int

main()

{

int

x0,y0,x1,y1,c;

int

graphdriver=DETECT,graphmode=0;/*自動(dòng)搜索顯示屏類型和顯示模式*/

initgraph(&graphdriver,&graphmode,"c:\\TC20\\BGI");

/*初始化圖形系統(tǒng)*/setbkcolor(WHITE);/*設(shè)立背景為白色*/

setcolor(BLUE);/*設(shè)立直線為藍(lán)色*/

Bresenham_line(100,100,500,500,3);/*畫以(100,100)為起點(diǎn),(500,500)為終點(diǎn),3為像素點(diǎn)的直線*/

getch();

/*從控制臺(tái)讀取一種字符,但不顯示在屏幕上*/

closegraph();

/*關(guān)閉圖形系統(tǒng)*/}實(shí)驗(yàn)成果及分析:這幅圖片是以Bresenham直線掃描算法繪制的以(100,100)為起點(diǎn),(500,500)為終點(diǎn)的一條直線,背景被設(shè)立為了白色,以藍(lán)色畫出了這條直線。實(shí)驗(yàn)二:自由曲線的生成算法實(shí)現(xiàn)實(shí)驗(yàn)?zāi)康模豪斫馇€生成的原理實(shí)驗(yàn)內(nèi)容:1、理解自由曲線的生成原理。

2、掌握三次樣條曲線和Bezier曲線的生成算法。

3、仿照教材有關(guān)自由曲線生成的Bezier算法,編譯程序。

4、調(diào)試、編譯、運(yùn)行程序。實(shí)驗(yàn)辦法及編程:實(shí)現(xiàn)辦法介紹本次實(shí)驗(yàn)是在TurboC2.0的平臺(tái)上編譯實(shí)現(xiàn)的;用光滑參數(shù)曲線段逼近折線多邊形,只需要根據(jù)給出的數(shù)據(jù)點(diǎn)就能夠構(gòu)造出曲線,曲線次數(shù)嚴(yán)格依賴于擬定該段曲線的數(shù)據(jù)點(diǎn)個(gè)數(shù),曲線形狀依賴于多邊形的形狀,多邊形的第一種頂點(diǎn)和最后一種頂點(diǎn)在曲線上。實(shí)當(dāng)代碼及分析#include<stdio.h>#include<string.h>#include<conio.h>#include<graphics.h>#include<math.h>#defineN1000intn;//控制點(diǎn)的個(gè)數(shù)structpoint//控制點(diǎn)的坐標(biāo){doublex;doubley;}point[N];voidinit()//輸入控制點(diǎn)的坐標(biāo){inti;printf("pleaseinputthenumberofthepoints:");scanf("%d",&n);printf("pleaseinputthelocationofthepoints\n");for(i=0;i<n;i++)scanf("%lf%lf",&point[i].x,&point[i].y);}voidsol1()//繪制控制多邊形的輪廓{inti;setcolor(RED);for(i=0;i<n-1;i++)line((int)point[i].x,(int)point[i].y,(int)point[i+1].x,(int)point[i+1].y);}doublesol2(intnn,intk)//計(jì)算多項(xiàng)式的系數(shù)C(nn,k){inti;doublesum=1;for(i=1;i<=nn;i++)sum*=i;for(i=1;i<=k;i++)sum/=i;for(i=1;i<=nn-k;i++)sum/=i;returnsum;}voidsol3(doublet)//計(jì)算Bezier曲線上點(diǎn)的坐標(biāo){doublex=0,y=0,Ber;intk;for(k=0;k<n;k++){Ber=sol2(n-1,k)*pow(t,k)*pow(1-t,n-1-k);x+=point[k].x*Ber;y+=point[k].y*Ber;}putpixel((int)x,(int)y,GREEN);}voidsol4()//根據(jù)控制點(diǎn),求曲線上的m個(gè)點(diǎn){intm=500,i;for(i=0;i<=m;i++)sol3((double)i/(double)m);}intmain(){int

graphdriver=DETECT,graphmode=0;/*自動(dòng)搜索顯示屏類型和顯示模式*/

initgraph(&graphdriver,&graphmode,"c:\\TC20\\BGI");/*初始化圖形系統(tǒng)*/init();sol1();sol4();getch();closegraph();return0;}實(shí)驗(yàn)成果及分析:本次測試成果使用3個(gè)點(diǎn),隨機(jī)取了點(diǎn)(100,100)、(200,200)、(300,100),繪制對(duì)應(yīng)的Bezier曲線,成果以下。實(shí)驗(yàn)三:二維圖形的幾何變換實(shí)驗(yàn)?zāi)康模豪斫舛S圖形的幾何變換的基本原理實(shí)驗(yàn)內(nèi)容:根據(jù)二維圖形幾何變換的基本原理及其變換矩陣:(二選一)編寫實(shí)現(xiàn)二維圖形平移、旋轉(zhuǎn)變換的C語言程序;編寫實(shí)現(xiàn)二維圖形錯(cuò)切、比例變換的C語言程序;規(guī)定設(shè)立變換的參數(shù)變量,方便觀察不同取值狀況下的變換效果。實(shí)驗(yàn)辦法及編程:實(shí)現(xiàn)辦法介紹本次實(shí)驗(yàn)是在turboc上實(shí)現(xiàn)的編程,平移變換時(shí)將平移距離tx和ty加到原始坐標(biāo)(x,y)上獲得一種新的坐標(biāo)位置,能夠?qū)崿F(xiàn)一種二維位置的平移,旋轉(zhuǎn)變換時(shí),通過在xy平面上沿圓途徑將對(duì)象重新定位來實(shí)現(xiàn)。實(shí)當(dāng)代碼及分析#include"stdio.h"#include"string.h"#include"graphics.h"#include"math.h"#include"conio.h"#definePI3.1415926voidsanjiaoxing()//畫一種基礎(chǔ)的三角形,用于進(jìn)行平移和變換{intgraphdriver=DETECT,graphmode=0;initgraph(&graphdriver,&graphmode,"c:\\TC20\\BGI");line(15,20,10,30);line(10,30,20,30);line(20,30,15,20);}voidpingyi()//平移函數(shù)的實(shí)現(xiàn){inta,b;//x軸和y軸的平移量a,bintgraphdriver=DETECT,graphmode=0;initgraph(&graphdriver,&graphmode,"c:\\TC20\\BGI");printf("pleaseinputaandb!");scanf("%d%d",&a,&b);//進(jìn)行a,b的輸入sanjiaoxing();//畫三角形用于進(jìn)行比較line(15+a,20+b,10+a,30+b);//畫平移后的三角形line(10+a,30+b,20+a,30+b);line(20+a,30+b,15+a,20+b);}voidxuanzhuan()//旋轉(zhuǎn)函數(shù)的實(shí)現(xiàn){intc;intx1,y1,x2,y2,x3,y3;//三角形3個(gè)點(diǎn)旋轉(zhuǎn)后的坐標(biāo)intgraphdriver=DETECT,graphmode=0;initgraph(&graphdriver,&graphmode,"c:\\TC20\\BGI");printf("pleaseinputc!");scanf("%f",&c);//旋轉(zhuǎn)角度的輸入x1=15*cos(c)-20*sin(c);y1=15*sin(c)+20*cos(c);x2=10*cos(c)-30*sin(c);y2=10*sin(c)+30*cos(c);x3=20*cos(c)-30*sin(c);y3=20*sin(c)+30*cos(c);sanjiaoxing();line(x1,y1,x2,y2);//畫旋轉(zhuǎn)后的三角形line(x2,y2,x3,y3);line(x3,y3,x1,y1);}intmain(){intd;intgraphdriver=DETECT,graphmode=0;initgraph(&graphdriver,&graphmode,"c:\\TC20\\BGI");printf("pleaseinputduse1or2!");scanf("%d",&d);switch(d)//進(jìn)行先平移還是先旋轉(zhuǎn)的選擇{case0:break;case1:pingyi();break;case2:xuanzhuan();break;}getch();closegraph();return0;}實(shí)驗(yàn)成果及分析:下列幾幅圖是運(yùn)行后得到的圖形:實(shí)驗(yàn)四:計(jì)算機(jī)動(dòng)畫制作實(shí)驗(yàn)?zāi)康模焊鶕?jù)學(xué)到的計(jì)算機(jī)圖形學(xué)的基礎(chǔ)知識(shí),能夠加之運(yùn)用到計(jì)算機(jī)動(dòng)畫的制作上去實(shí)驗(yàn)內(nèi)容:理解計(jì)算機(jī)動(dòng)畫的不同生成辦法;采用某種動(dòng)畫生成辦法設(shè)計(jì)制作一種動(dòng)畫小片斷;規(guī)定運(yùn)用TurboC環(huán)境下的圖形庫函數(shù),如cleardevice(),getimage()與putimage(),setactivepage()與setvisualpage()等來設(shè)計(jì)實(shí)現(xiàn)動(dòng)畫;所設(shè)計(jì)動(dòng)畫應(yīng)有一定可觀性。實(shí)驗(yàn)辦法及編程:實(shí)現(xiàn)辦法介紹

基于TurboC的圖形編程,學(xué)習(xí)使用cleardevice()

cleanviewdevice()getimage()與putimage()的配合使用。學(xué)習(xí)運(yùn)用數(shù)學(xué)函數(shù)或數(shù)學(xué)方程式,跟據(jù)自變量和因變量的關(guān)系,讓自變量在一種允許范疇內(nèi)以一步長逐步增值或減值,進(jìn)行持續(xù)循環(huán),獲得持續(xù)變化的動(dòng)畫。實(shí)當(dāng)代碼及分析#include<graphics.h>#include<dos.h>#defineG10main(){intx=320,y,t;intgraphdriver=DETECT,graphmode=0;initgraph(&graphdriver,&graphmode,"c:\\TC20\\BGI");cleardevice();setcolor(15);do{for(t=0;t<10;t++){y=0.5*G*t*t;circle(x,y,20);delay(10);cleardevice();}for(t=0;t<10;t++){y=405-(90*t-0.5*G*t*t);circle(x,y,20);delay(50000);cleardevice();}}while(!kbhit());closegraph();}實(shí)驗(yàn)成果及分析:圓圈的落體效果,能夠設(shè)立參數(shù),落得快慢能夠調(diào)節(jié)。==============================================================================2、計(jì)算機(jī)圖形學(xué)實(shí)驗(yàn)課程小結(jié)和思考(涉及感想、體會(huì)與啟示)通過一學(xué)期刻苦而又努力的沖刺,我在計(jì)算機(jī)圖形學(xué)這門課程上相對(duì)于其它科目而言,獲益良多。特別是老

溫馨提示

  • 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)論