計(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頁,還剩33頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

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

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

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

4、調(diào)試、編譯、運(yùn)行程序。試驗(yàn)措施及編程:實(shí)現(xiàn)措施簡介本次試驗(yàn)是在TurboC2.0的平臺上編譯實(shí)現(xiàn)的;Bresenham算法的基本原理是:過各行各列像素中心構(gòu)造一組虛擬網(wǎng)格線,按直線從起點(diǎn)到終點(diǎn)的次序計(jì)算直線與各垂直網(wǎng)格線的交點(diǎn),然后確定該列像素中與此交點(diǎn)近來的像素。實(shí)現(xiàn)代碼及分析#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;/*自動搜索顯示屏類型和顯示模式*/

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();

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

closegraph();

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

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

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

4、調(diào)試、編譯、運(yùn)行程序。試驗(yàn)措施及編程:實(shí)現(xiàn)措施簡介本次試驗(yàn)是在TurboC2.0的平臺上編譯實(shí)現(xiàn)的;用光滑參數(shù)曲線段迫近折線多邊形,只需要根據(jù)給出的數(shù)據(jù)點(diǎn)就可以構(gòu)造出曲線,曲線次數(shù)嚴(yán)格依賴于確定該段曲線的數(shù)據(jù)點(diǎn)個數(shù),曲線形狀依賴于多邊形的形狀,多邊形的第一種頂點(diǎn)和最終一種頂點(diǎn)在曲線上。實(shí)現(xiàn)代碼及分析#include<stdio.h>#include<string.h>#include<conio.h>#include<graphics.h>#include<math.h>#defineN1000intn;//控制點(diǎn)的個數(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個點(diǎn){intm=500,i;for(i=0;i<=m;i++)sol3((double)i/(double)m);}intmain(){int

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

initgraph(&graphdriver,&graphmode,"c:\\TC20\\BGI");/*初始化圖形系統(tǒng)*/init();sol1();sol4();getch();closegraph();return0;}試驗(yàn)成果及分析:本次測試成果使用3個點(diǎn),隨機(jī)取了點(diǎn)(100,100)、(200,200)、(300,100),繪制對應(yīng)的Bezier曲線,成果如下。試驗(yàn)三:二維圖形的幾何變換試驗(yàn)?zāi)康模豪斫舛S圖形的幾何變換的基本原理試驗(yàn)內(nèi)容:根據(jù)二維圖形幾何變換的基本原理及其變換矩陣:(二選一)編寫實(shí)現(xiàn)二維圖形平移、旋轉(zhuǎn)變換的C語言程序;編寫實(shí)現(xiàn)二維圖形錯切、比例變換的C語言程序;規(guī)定設(shè)置變換的參數(shù)變量,以便觀測不一樣取值狀況下的變換效果。試驗(yàn)措施及編程:實(shí)現(xiàn)措施簡介本次試驗(yàn)是在turboc上實(shí)現(xiàn)的編程,平移變換時將平移距離tx和ty加到原始坐標(biāo)(x,y)上獲得一種新的坐標(biāo)位置,可以實(shí)現(xiàn)一種二維位置的平移,旋轉(zhuǎn)變換時,通過在xy平面上沿圓途徑將對象重新定位來實(shí)現(xiàn)。實(shí)現(xiàn)代碼及分析#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個點(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;}試驗(yàn)成果及分析:如下幾幅圖是運(yùn)行后得到的圖形:試驗(yàn)四:計(jì)算機(jī)動畫制作試驗(yàn)?zāi)康模焊鶕?jù)學(xué)到的計(jì)算機(jī)圖形學(xué)的基礎(chǔ)知識,可以加之運(yùn)用到計(jì)算機(jī)動畫的制作上去試驗(yàn)內(nèi)容:理解計(jì)算機(jī)動畫的不一樣生成措施;采用某種動畫生成措施設(shè)計(jì)制作一種動畫小片斷;規(guī)定運(yùn)用TurboC環(huán)境下的圖形庫函數(shù),如cleardevice(),getimage()與putimage(),setactivepage()與setvisualpage()等來設(shè)計(jì)實(shí)現(xiàn)動畫;所設(shè)計(jì)動畫應(yīng)有一定可觀性。試驗(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ù)變化的動畫。實(shí)現(xiàn)代碼及分析#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();}試驗(yàn)成果及分析:圓圈的落體效果,可以設(shè)置參數(shù),落得快慢可以調(diào)整。==============================================================================2、計(jì)算機(jī)圖形學(xué)試驗(yàn)課程小結(jié)和思索(包括感想、體會與啟示)通過一學(xué)期刻苦而又努力的沖刺,我在計(jì)算機(jī)圖形學(xué)這門課程上相對于其他科目而言,獲益良多。尤其是老

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論