精品資料(2021-2022年收藏)計(jì)算機(jī)圖形學(xué)實(shí)驗(yàn)報(bào)告分解_第1頁
精品資料(2021-2022年收藏)計(jì)算機(jī)圖形學(xué)實(shí)驗(yàn)報(bào)告分解_第2頁
精品資料(2021-2022年收藏)計(jì)算機(jī)圖形學(xué)實(shí)驗(yàn)報(bào)告分解_第3頁
精品資料(2021-2022年收藏)計(jì)算機(jī)圖形學(xué)實(shí)驗(yàn)報(bào)告分解_第4頁
精品資料(2021-2022年收藏)計(jì)算機(jī)圖形學(xué)實(shí)驗(yàn)報(bào)告分解_第5頁
已閱讀5頁,還剩12頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、中南大學(xué)信息科學(xué)與工程學(xué)院實(shí)驗(yàn)報(bào)告實(shí) 驗(yàn) 名 稱 實(shí) 驗(yàn) 地 點(diǎn) 科技樓四樓 實(shí) 驗(yàn) 日 期 2014年6月 指 導(dǎo) 教 師 學(xué) 生 班 級(jí) 學(xué) 生 姓 名 學(xué) 生 學(xué) 號(hào) 提 交 日 期 2014年6月 實(shí)驗(yàn)一 Window圖形編程基礎(chǔ)1、 實(shí)驗(yàn)類型:驗(yàn)證型實(shí)驗(yàn) 2、 實(shí)驗(yàn)?zāi)康?、熟練使用實(shí)驗(yàn)主要開發(fā)平臺(tái)VC6.0;2、掌握如何在編譯平臺(tái)下編輯、編譯、連接和運(yùn)行一個(gè)簡單的Windows圖形應(yīng)用程序;3、掌握Window圖形編程的基本方法;4、學(xué)會(huì)使用基本繪圖函數(shù)和Window GDI對(duì)象;3、 實(shí)驗(yàn)內(nèi)容創(chuàng)建基于MFC的Single Document應(yīng)用程序(Win32應(yīng)用程序也可,同學(xué)們可根

2、據(jù)自己的喜好決定),程序可以實(shí)現(xiàn)以下要求:1、用戶可以通過菜單選擇繪圖顏色;2、用戶點(diǎn)擊菜單選擇繪圖形狀時(shí),能在視圖中繪制指定形狀的圖形;4、 實(shí)驗(yàn)要求與指導(dǎo)1、建立名為“顏色”的菜單,該菜單下有四個(gè)菜單項(xiàng):紅、綠、藍(lán)、黃。用戶通過點(diǎn)擊不同的菜單項(xiàng),可以選擇不同的顏色進(jìn)行繪圖。2、 建立名為“繪圖”的菜單,該菜單下有三個(gè)菜單項(xiàng):直線、曲線、矩形其中“曲線”項(xiàng)有級(jí)聯(lián)菜單,包括:圓、橢圓。3、 用戶通過點(diǎn)擊“繪圖”中不同的菜單項(xiàng),彈出對(duì)話框,讓用戶輸入繪圖位置,在指定位置進(jìn)行繪圖。5、 實(shí)驗(yàn)結(jié)果:六、實(shí)驗(yàn)主要代碼1、畫直線:CClientDC *m_pDC;再在OnDraw函數(shù)里給變量初始化m_p

3、DC=new CClientDC(this);在OnDraw函數(shù)中添加:m_pDC=new CClientDC(this);m_pDC->MoveTo(10,10);m_pDC->LineTo(100,100);m_pDC->SetPixel(100,200,RGB(0,0,0);m_pDC->TextOut(100,100);2、畫圓:void CMyCG:LineDDA2(int xa, int ya, int xb, int yb, CDC *pDC)int dx = xb - xa;int dy = yb - ya;int Steps, k;float xInc

4、rement,yIncrement;float x = xa,y= ya;if(abs(dx)>abs(dy)Steps = abs(dx);elseSteps = abs(dy);xIncrement = dx/(float)Steps;yIncrement = dy/(float)Steps;pDC->SetPixel(ROUND(x),ROUND(y),RGB(0,0,0);for(k=0;k<Steps;k+)x +=xIncrement;y +=yIncrement;sleep(10);pDC->SetPixel(ROUND(x),ROUND(y),RGB(0

5、,0,0); 3、畫矩形void CRectangleDlg:OnLButtonDown(UINT nFlags, CPoint point) lButtonDownNotUp = TRUE; RECT rect; m_showRectangle. GetClientRect( &rect ) ; if( (point. x<rect. right) && (point. x>rect. left) && (point. y<rect. bottom) && (point. y>rect. top) ) regio

6、nLeftTopTemp = point; CDialog:OnLButtonDown(nFlags, point);void CRectangleDlg:OnMouseMove(UINT nFlags, CPoint point) RECT rect; m_showRectangle. GetClientRect( &rect ); if( ( point.x<rect.right ) && ( point.x>rect.left ) && ( point.y<rect.bottom ) && ( point.y>

7、;rect.top ) ) if( ( lButtonDownNotUp = TRUE ) regionRightBottomTemp = point; CDC * pDC = m_showRectangle. GetWindowDC (); pDC -> Rectangle( CRect( regionLeftTopTemp, regionRightBottomTemp ) ) ; CDialog:OnMouseMove(nFlags, point);void CRectangleDlg:OnLButtonUp(UINT nFlags, CPoint point) lButtonDow

8、nNotUp=FALSE; CDialog:OnLButtonUp(nFlags, point);實(shí)驗(yàn)二 基本圖形生成算法一、實(shí)驗(yàn)類型:驗(yàn)證型實(shí)驗(yàn) 二、實(shí)驗(yàn)?zāi)康?、掌握DDA、Bresenham直線生成算法;2、掌握Bresenham或中點(diǎn)圓生成算法;3、掌握Bresenham或中點(diǎn)橢圓生成算法;三、實(shí)驗(yàn)內(nèi)容 1、實(shí)現(xiàn)DDA、Bresenham直線生成算法;2、實(shí)現(xiàn)Bresenham畫圓法或中點(diǎn)畫圓法;3、實(shí)現(xiàn)Bresenham或中點(diǎn)法橢圓生成算法;4、利用1、2、3實(shí)現(xiàn)的直線、圓、橢圓圖形生成函數(shù)進(jìn)行圖形繪制;四、實(shí)驗(yàn)要求與指導(dǎo) 1、按照實(shí)驗(yàn)指導(dǎo)書1.6節(jié)創(chuàng)建一個(gè)基于MFC的Single D

9、ocument應(yīng)用程序。建立名為“圖形繪制”的菜單,該菜單的子菜單項(xiàng)可根據(jù)下圖進(jìn)行設(shè)定,用戶通過點(diǎn)擊不同的子菜單項(xiàng),可以選擇不同的算法進(jìn)行繪圖。 2、建立一個(gè)專門用于進(jìn)行圖形繪制的類,比如下圖所示的CMyGL類。如無特殊說明,今后都以該類作為演示。 3、所有圖形的繪制算法都必須封裝在CMyGL類中,如下圖。 4、在View類中實(shí)例化一個(gè)CMyGL類的對(duì)象,比如m_gl,進(jìn)行繪圖操作。如下圖所示: 5、用戶通過點(diǎn)擊“圖形繪制”中不同的菜單項(xiàng),在指定位置進(jìn)行繪圖。5、 實(shí)驗(yàn)結(jié)果:六、實(shí)驗(yàn)主要代碼1、畫直線:void CDraw:DDALine(CDC* pDC, int x1, int y1, i

10、nt x2, int y2, COLORREF color)double dx,dy,e,x,y;dx = x2 -x1;dy = y2- y1;e = (fabs(dx) > fabs(dy) ? fabs(dx):fabs(dy);dx/=e;dy/=e;x = x1;y = y1;for (int i=1;i<=e;i+)pDC->SetPixel(int)(x+0.5),(int)(y+0.5),color);x+=dx;y+=dy;2、畫圓:void CMyCG:LineDDA2(int xa, int ya, int xb, int yb, CDC *pDC)in

11、t dx = xb - xa;int dy = yb - ya;int Steps, k;float xIncrement,yIncrement;float x = xa,y= ya;if(abs(dx)>abs(dy)Steps = abs(dx);elseSteps = abs(dy);xIncrement = dx/(float)Steps;yIncrement = dy/(float)Steps;pDC->SetPixel(ROUND(x),ROUND(y),RGB(255,0,0);for(k=0;k<Steps;k+)x +=xIncrement;y +=yInc

12、rement;sleep(10);pDC->SetPixel(ROUND(x),ROUND(y),RGB(255,0,0); 3、畫橢圓void CDraw:BresenhamEllipse(CDC *pDC, int x0, int y0, int a, int b, COLORREF color)int x,y,p;int aa=a*a,bb=b*b;x=0;y=b; p=2*bb+aa*(1-2*b);while (bb*x<=aa*y)pDC->SetPixel(x+x0,y+y0,color);pDC->SetPixel(-x+x0,y+y0,color);p

13、DC->SetPixel(x+x0,-y+y0,color);pDC->SetPixel(-x+x0,-y+y0,color);if(p>=0) p+=4*aa*(1-y)+bb*(4*x+6);y-;elsep+= bb*(4*x+6);x+;x=a;y=0; p=2*aa+bb*(1-2*a);while (bb*x>aa*y)pDC->SetPixel(x+x0,y+y0,color);pDC->SetPixel(-x+x0,y+y0,color);pDC->SetPixel(x+x0,-y+y0,color);pDC->SetPixel(

14、-x+x0,-y+y0,color);if(p>=0)p+=4*bb*(1-x)+aa*(4*y+6);x-;elsep+= aa*(4*y+6);y+;實(shí)驗(yàn)三、 OpenGL圖形程序設(shè)計(jì)基礎(chǔ)一實(shí)驗(yàn)?zāi)康?)了解OpenGL 圖形庫的功能和結(jié)構(gòu); 2)學(xué)習(xí)使用Visual C+ 開發(fā)基于控制臺(tái)的圖形程序; 3)學(xué)習(xí)使用Visual C+ 開發(fā)基于單文檔(GUI 界面)的圖形程序。 4)學(xué)習(xí)使用OpenGL 生成基本圖形; 5)學(xué)習(xí)使用OpenGL 實(shí)現(xiàn)圖形變換;二實(shí)驗(yàn)內(nèi)容1)使用Visual C+建立一個(gè)Win32 Console Application(控制臺(tái)應(yīng)用程序),定義若干點(diǎn)坐標(biāo),

15、繪制點(diǎn)、線段、不閉合折線、閉合折線、多邊形、三角形、四邊形、三角扇、三角條帶、四邊形條帶。嘗試不同尺寸的點(diǎn)、不同線寬的線、設(shè)置顏色等操作。 2 )使用MFC AppWizard 建立一個(gè)SDI 程序,根據(jù)參考資料2 和3中的步驟設(shè)置OpenGL 圖形繪制環(huán)境。增加繪制4種基本圖形(選擇其中之一)。3實(shí)驗(yàn)過程: 1)建立一個(gè)控制臺(tái)應(yīng)用程序,在RenderScene()函數(shù)中調(diào)用不同的系統(tǒng)函數(shù)分別繪制不同屬性的點(diǎn)、線、折線、多邊形、扇形等;2)建立一個(gè)SDI程序,按照所給資料設(shè)置OpenGL圖形繪制環(huán)境,并照敲老師所給實(shí)列,觀看結(jié)果,查看關(guān)鍵代碼區(qū);3)仿照所給列子,改寫代碼,繪制彩色的正方體;三

16、實(shí)驗(yàn)結(jié)果基本圖形顯示正確 基本圖形截圖:三棱柱截圖:實(shí)驗(yàn)四、 二維圖形變換程序設(shè)計(jì)一實(shí)驗(yàn)?zāi)康模?1)掌握?qǐng)D形變換實(shí)現(xiàn)原理,基本幾何變換,復(fù)合變換等; 2)學(xué)習(xí)使用Visual C+開發(fā)菜單,對(duì)話框等交互界面的設(shè)計(jì);3)學(xué)習(xí)使用MFC單文檔程序,實(shí)現(xiàn)二維圖形的基本幾何變換。 二實(shí)驗(yàn)內(nèi)容: 使用Visual C+建立一個(gè)單文檔程序,采用實(shí)驗(yàn)二中定義的基本圖形類。在程序中增加圖形變換菜單(各基本變換對(duì)應(yīng)菜單項(xiàng)),各圖形變換的參數(shù)通過對(duì)話框提供(設(shè)計(jì)提供變換參數(shù)的對(duì)話框,如平移,旋轉(zhuǎn),比例等),實(shí)現(xiàn)二維圖形的變換。(提示:在各個(gè)圖形類中增加相應(yīng)的成員函數(shù)實(shí)現(xiàn)平移;菜單選擇變換彈出對(duì)應(yīng)變換的參數(shù)對(duì)話框,

17、對(duì)話框中提供參數(shù)后取出參數(shù)傳遞給圖形對(duì)象,通過調(diào)用圖形變換成員函數(shù)實(shí)現(xiàn)圖形對(duì)象的變換)。要求實(shí)現(xiàn)直線段、圓、多邊形等基本圖形的幾何變換。三實(shí)驗(yàn)過程: (1).根據(jù)實(shí)驗(yàn)要求,新建菜單,增加二維圖形變換子菜單,然后在菜單上添加平移,比例,對(duì)稱,旋轉(zhuǎn)以及錯(cuò)切選項(xiàng)。(2).對(duì)菜單中的每一項(xiàng)方法構(gòu)造響應(yīng)函數(shù),并給幾個(gè)需要彈出對(duì)話框的選項(xiàng)添加對(duì)話框響應(yīng)函數(shù)。(3).在彈出的對(duì)話框輸入?yún)?shù),獲取輸入的參數(shù),調(diào)用相應(yīng)的變換函數(shù),實(shí)現(xiàn)圖形的變換。四實(shí)驗(yàn)結(jié)果: 結(jié)果正確。平移xy(100, 0)五、實(shí)驗(yàn)主要代碼class CTransform/二維幾何變換 public:CTransform();virtual

18、CTransform();void SetMat(CP2 *,int);void Identity();void Translate(double,double);/平移變換矩陣void Scale(double,double);/比例變換矩陣void Scale(double,double,CP2);/相對(duì)于任意點(diǎn)的比例變換矩陣void Rotate(double);/旋轉(zhuǎn)變換矩陣void Rotate(double,CP2);/相對(duì)于任意點(diǎn)的旋轉(zhuǎn)變換矩陣void ReflectOrg();/原點(diǎn)反射變換矩陣void ReflectX();/X軸反射變換矩陣void ReflectY();/

19、Y軸反射變換矩陣void Shear(double,double);/錯(cuò)切變換矩陣void MultiMatrix();/矩陣相乘public:double T33;CP2 *POld;int num;void CTransform:Translate(double tx,double ty)/平移變換矩陣Identity();T20=tx; T21=ty; MultiMatrix();void CTransform:Scale(double sx,double sy)/比例變換矩陣Identity();T00=sx; T11=sy; MultiMatrix();void CTransform

20、:Scale(double sx,double sy,CP2 p)/相對(duì)于任意點(diǎn)的整體比例變換矩陣Translate(-p.x,-p.y);Scale(sx,sy);Translate(p.x,p.y);void CTransform:Rotate(double beta)/旋轉(zhuǎn)變換矩陣Identity();double rad=beta*PI/180;T00=cos(rad); T01=sin(rad);T10=-sin(rad);T11=cos(rad);MultiMatrix();實(shí)驗(yàn)五、二維交互式圖形程序設(shè)計(jì)一、實(shí)驗(yàn)?zāi)康模?1)綜合使用VC+編寫Win32 應(yīng)用的方法(單文檔、多文檔、對(duì)話框); 2 )掌握交互式繪圖程序設(shè)計(jì)及MFC 相關(guān)類的使用; 3)掌握使用MFC 的編寫簡單動(dòng)畫程序。 二、實(shí)驗(yàn)任務(wù): 1)使用MFC AppWizard 建立一個(gè)SDI 程序。綜合前幾次二維繪圖 實(shí)驗(yàn)的結(jié)果,實(shí)現(xiàn)基本功能: 建立繪制點(diǎn)、直線段、圓、橢圓、圓弧、多段線(折線)、多邊形、貝塞爾(Bezier )曲線的相關(guān)類(對(duì)于封閉圖形,應(yīng)能多種方式填充)、 字

溫馨提示

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