




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
教育科學(xué)與技術(shù)學(xué)院/第一學(xué)期實(shí)驗(yàn)報(bào)告試驗(yàn)課程名稱(chēng)計(jì)算機(jī)圖形學(xué)專(zhuān)業(yè)教育技術(shù)學(xué)學(xué)生學(xué)號(hào)B14150226學(xué)生姓名朱志耀指導(dǎo)教師熊健、閆靜杰指導(dǎo)單位通信與信息工程學(xué)院日期:11月24日1、每項(xiàng)試驗(yàn)匯報(bào)的內(nèi)容==============================================================================試驗(yàn)一:直線(xiàn)的生成算法實(shí)現(xiàn)試驗(yàn)?zāi)康模豪斫庵本€(xiàn)生成的原理;試驗(yàn)內(nèi)容:1、理解直線(xiàn)的生成原理
2、掌握幾種基本的直線(xiàn)生成算法:DDA畫(huà)線(xiàn)法、中點(diǎn)畫(huà)線(xiàn)法、Bresenham畫(huà)線(xiàn)法。
3、仿照教材有關(guān)直線(xiàn)生成的Bresenham算法,編譯程序。
4、調(diào)試、編譯、運(yùn)行程序。試驗(yàn)措施及編程:實(shí)現(xiàn)措施簡(jiǎn)介本次試驗(yàn)是在TurboC2.0的平臺(tái)上編譯實(shí)現(xiàn)的;Bresenham算法的基本原理是:過(guò)各行各列像素中心構(gòu)造一組虛擬網(wǎng)格線(xiàn),按直線(xiàn)從起點(diǎn)到終點(diǎn)的次序計(jì)算直線(xiàn)與各垂直網(wǎng)格線(xiàn)的交點(diǎn),然后確定該列像素中與此交點(diǎn)近來(lái)的像素。實(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);/*畫(huà)紅色的像素點(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)搜索顯示屏類(lèi)型和顯示模式*/
initgraph(&graphdriver,&graphmode,"c:\\TC20\\BGI");
/*初始化圖形系統(tǒng)*/setbkcolor(WHITE);/*設(shè)置背景為白色*/
setcolor(BLUE);/*設(shè)置直線(xiàn)為藍(lán)色*/
Bresenham_line(100,100,500,500,3);/*畫(huà)以(100,100)為起點(diǎn),(500,500)為終點(diǎn),3為像素點(diǎn)的直線(xiàn)*/
getch();
/*從控制臺(tái)讀取一種字符,但不顯示在屏幕上*/
closegraph();
/*關(guān)閉圖形系統(tǒng)*/}試驗(yàn)成果及分析:這幅圖片是以Bresenham直線(xiàn)掃描算法繪制的以(100,100)為起點(diǎn),(500,500)為終點(diǎn)的一條直線(xiàn),背景被設(shè)置為了白色,以藍(lán)色畫(huà)出了這條直線(xiàn)。試驗(yàn)二:自由曲線(xiàn)的生成算法實(shí)現(xiàn)試驗(yàn)?zāi)康模豪斫馇€(xiàn)生成的原理試驗(yàn)內(nèi)容:1、理解自由曲線(xiàn)的生成原理。
2、掌握三次樣條曲線(xiàn)和Bezier曲線(xiàn)的生成算法。
3、仿照教材有關(guān)自由曲線(xiàn)生成的Bezier算法,編譯程序。
4、調(diào)試、編譯、運(yùn)行程序。試驗(yàn)措施及編程:實(shí)現(xiàn)措施簡(jiǎn)介本次試驗(yàn)是在TurboC2.0的平臺(tái)上編譯實(shí)現(xiàn)的;用光滑參數(shù)曲線(xiàn)段迫近折線(xiàn)多邊形,只需要根據(jù)給出的數(shù)據(jù)點(diǎn)就可以構(gòu)造出曲線(xiàn),曲線(xiàn)次數(shù)嚴(yán)格依賴(lài)于確定該段曲線(xiàn)的數(shù)據(jù)點(diǎn)個(gè)數(shù),曲線(xiàn)形狀依賴(lài)于多邊形的形狀,多邊形的第一種頂點(diǎn)和最終一種頂點(diǎn)在曲線(xiàn)上。實(shí)現(xiàn)代碼及分析#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曲線(xiàn)上點(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),求曲線(xià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)搜索顯示屏類(lèi)型和顯示模式*/
initgraph(&graphdriver,&graphmode,"c:\\TC20\\BGI");/*初始化圖形系統(tǒng)*/init();sol1();sol4();getch();closegraph();return0;}試驗(yàn)成果及分析:本次測(cè)試成果使用3個(gè)點(diǎn),隨機(jī)取了點(diǎn)(100,100)、(200,200)、(300,100),繪制對(duì)應(yīng)的Bezier曲線(xiàn),成果如下。試驗(yàn)三:二維圖形的幾何變換試驗(yàn)?zāi)康模豪斫舛S圖形的幾何變換的基本原理試驗(yàn)內(nèi)容:根據(jù)二維圖形幾何變換的基本原理及其變換矩陣:(二選一)編寫(xiě)實(shí)現(xiàn)二維圖形平移、旋轉(zhuǎn)變換的C語(yǔ)言程序;編寫(xiě)實(shí)現(xiàn)二維圖形錯(cuò)切、比例變換的C語(yǔ)言程序;規(guī)定設(shè)置變換的參數(shù)變量,以便觀測(cè)不一樣取值狀況下的變換效果。試驗(yàn)措施及編程:實(shí)現(xiàn)措施簡(jiǎn)介本次試驗(yàn)是在turboc上實(shí)現(xiàn)的編程,平移變換時(shí)將平移距離tx和ty加到原始坐標(biāo)(x,y)上獲得一種新的坐標(biāo)位置,可以實(shí)現(xiàn)一種二維位置的平移,旋轉(zhuǎn)變換時(shí),通過(guò)在xy平面上沿圓途徑將對(duì)象重新定位來(lái)實(shí)現(xiàn)。實(shí)現(xiàn)代碼及分析#include"stdio.h"#include"string.h"#include"graphics.h"#include"math.h"#include"conio.h"#definePI3.1415926voidsanjiaoxing()//畫(huà)一種基礎(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();//畫(huà)三角形用于進(jìn)行比較line(15+a,20+b,10+a,30+b);//畫(huà)平移后的三角形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);//畫(huà)旋轉(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ī)動(dòng)畫(huà)制作試驗(yàn)?zāi)康模焊鶕?jù)學(xué)到的計(jì)算機(jī)圖形學(xué)的基礎(chǔ)知識(shí),可以加之運(yùn)用到計(jì)算機(jī)動(dòng)畫(huà)的制作上去試驗(yàn)內(nèi)容:理解計(jì)算機(jī)動(dòng)畫(huà)的不一樣生成措施;采用某種動(dòng)畫(huà)生成措施設(shè)計(jì)制作一種動(dòng)畫(huà)小片斷;規(guī)定運(yùn)用TurboC環(huán)境下的圖形庫(kù)函數(shù),如cleardevice(),getimage()與putimage(),setactivepage()與setvisualpage()等來(lái)設(shè)計(jì)實(shí)現(xiàn)動(dòng)畫(huà);所設(shè)計(jì)動(dòng)畫(huà)應(yīng)有一定可觀性。試驗(yàn)措施及編程:實(shí)現(xiàn)措施簡(jiǎn)介
基于TurboC的圖形編程,學(xué)習(xí)使用cleardevice()
cleanviewdevice()getimage()與putimage()的配合使用。學(xué)習(xí)運(yùn)用數(shù)學(xué)函數(shù)或數(shù)學(xué)方程式,跟據(jù)自變量和因變量的關(guān)系,讓自變量在一種容許范圍內(nèi)以一步長(zhǎng)逐漸增值或減值,進(jìn)行持續(xù)循環(huán),獲得持續(xù)變化的動(dòng)畫(huà)。實(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é)和思索(包括感想、體會(huì)與啟示)通過(guò)一學(xué)期刻苦而又努力的沖刺,我在計(jì)算機(jī)圖形學(xué)這門(mén)課程上相對(duì)于其他科目而言,獲益良多。尤其是老
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年全自動(dòng)開(kāi)關(guān)機(jī)項(xiàng)目可行性研究報(bào)告
- 2025年毛邊玻璃項(xiàng)目可行性研究報(bào)告
- 2025年室內(nèi)光纜項(xiàng)目可行性研究報(bào)告
- 2025年鍛鑄造產(chǎn)品項(xiàng)目可行性研究報(bào)告
- 婦產(chǎn)科醫(yī)生個(gè)人總結(jié)范文(30篇)
- 2025年度砂石場(chǎng)礦山環(huán)境保護(hù)監(jiān)測(cè)服務(wù)合同4篇
- 2025年度辦公樓物業(yè)安全檢查與應(yīng)急預(yù)案服務(wù)協(xié)議
- 2025年重整保護(hù)催化劑項(xiàng)目投資可行性研究分析報(bào)告
- 2025年度企業(yè)慶典場(chǎng)地租賃及活動(dòng)執(zhí)行合同
- 服務(wù)結(jié)算合同范本
- 核電項(xiàng)目人橋吊車(chē)抗震計(jì)算書(shū)版
- 耳鼻咽喉頭頸外科學(xué)-鼻科癥狀學(xué)課件
- 《幼小銜接存在的問(wèn)題及對(duì)策研究(論文)6400字》
- 揭陽(yáng)市基層診所醫(yī)療機(jī)構(gòu)衛(wèi)生院社區(qū)衛(wèi)生服務(wù)中心村衛(wèi)生室地址信息
- 通信工程監(jiān)理方案
- 主題閱讀25:陜北的春
- 晉中項(xiàng)目投決會(huì)報(bào)告
- 2022年中小學(xué)心理健康教育指導(dǎo)綱要
- 公共關(guān)系文書(shū)(《公共關(guān)系學(xué)》課件)
- 2023屆高考復(fù)習(xí)之文學(xué)類(lèi)文本閱讀訓(xùn)練
- 國(guó)家基礎(chǔ)教育實(shí)驗(yàn)中心外語(yǔ)教育研究中心
評(píng)論
0/150
提交評(píng)論