計(jì)算機(jī)圖形學(xué)上機(jī)實(shí)驗(yàn)實(shí)現(xiàn)二維圖形的各種轉(zhuǎn)換_第1頁(yè)
計(jì)算機(jī)圖形學(xué)上機(jī)實(shí)驗(yàn)實(shí)現(xiàn)二維圖形的各種轉(zhuǎn)換_第2頁(yè)
計(jì)算機(jī)圖形學(xué)上機(jī)實(shí)驗(yàn)實(shí)現(xiàn)二維圖形的各種轉(zhuǎn)換_第3頁(yè)
計(jì)算機(jī)圖形學(xué)上機(jī)實(shí)驗(yàn)實(shí)現(xiàn)二維圖形的各種轉(zhuǎn)換_第4頁(yè)
計(jì)算機(jī)圖形學(xué)上機(jī)實(shí)驗(yàn)實(shí)現(xiàn)二維圖形的各種轉(zhuǎn)換_第5頁(yè)
已閱讀5頁(yè),還剩20頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、計(jì)算機(jī)圖形學(xué)上機(jī)實(shí)驗(yàn)實(shí)現(xiàn)二維圖形的各種轉(zhuǎn)換部門:xxx時(shí)問(wèn):xxx整理范文,僅供參考,可下載自行編輯昆明理工大學(xué)理學(xué)院信息與計(jì)算科學(xué)專業(yè)操作性實(shí)驗(yàn)報(bào)告年級(jí):10級(jí) 姓名:劉陳學(xué)號(hào):201811101128指導(dǎo)教師:胡杰實(shí)驗(yàn)課程名稱:計(jì)算機(jī)圖形學(xué)程序設(shè)計(jì)開課實(shí)驗(yàn)室:理學(xué)院機(jī)房216實(shí)驗(yàn)成績(jī):學(xué)風(fēng)(5觀察能力(15操作能力(30調(diào)試能力(50其它總分實(shí)驗(yàn)內(nèi)容:.實(shí)驗(yàn)/作業(yè)題目:用計(jì)算機(jī)高級(jí)語(yǔ)言VC+6.0實(shí)現(xiàn)計(jì)算機(jī)的基本圖元繪制.實(shí)驗(yàn)/作業(yè)課時(shí):2學(xué)時(shí).實(shí)驗(yàn)過(guò)程(包括實(shí)驗(yàn)環(huán)境、實(shí)驗(yàn)內(nèi)容的描述、完成實(shí)驗(yàn)要求的知識(shí)或技能:實(shí)驗(yàn)環(huán)境:1)硬件:每人一臺(tái)PC機(jī)2)軟件:windows OS, VC+6.0

2、或以上版本。實(shí)驗(yàn)內(nèi)容及步驟:1)在VC+環(huán)境下創(chuàng)建MFCS用程序工程 單文檔)2)編輯菜單資源3)添加菜單命令消息處理函數(shù)4)添加成員函數(shù)實(shí)現(xiàn)繪畫添加二維圖形 各個(gè)變換的矩 陣源碼添加消實(shí)現(xiàn)繪畫添加二維圖形 各個(gè)變換的矩 陣源碼息處理實(shí)現(xiàn)對(duì)二維圖形的.算法描述、流程圖或操作步驟:在lab3View.h文件中的public 內(nèi)添加變量:void ClearMatrix(double A33。 / 清除變換矩陣void GetMaxY( 。 /獲得屏幕的最大y值void GetMaxX( 。 / 獲得屏幕的最大x 值void Draw(double D3,int。 / 繪制圖形void Calcu

3、late(double P03,double T3。 / 矩陣相乘 b5E2RGbCAPvoidKeepMatrix(doubleOrig3,doubleDest43 。 / 保留矩陣值p1EanqFDPwvoid Tmove(double Tx,double Ty 。 / 平移變換計(jì)算void Tscale(double Sx,double Sy 。 / 比例變換計(jì)算void Trotate(double thta 。 / 旋轉(zhuǎn)變換計(jì)算void Treflect(double Fx,double Fy 。 / 對(duì)稱變換計(jì)算void Treform(double b,double c 。 /

4、錯(cuò)切變換計(jì)算在 lab3View.h 文件中的protected 內(nèi)添加變量:int MaxX,MaxY。/屏幕x和y的最大坐標(biāo)double P43 。 / 變換點(diǎn)double TM33 。 / 平移變換矩陣double TS33 。 / 比例變換矩陣double TR33 。 / 旋轉(zhuǎn)變換矩陣double TF33 。 / 對(duì)稱變換矩陣double TC33 。 / 錯(cuò)切變換矩陣double OSquare43/ 矩形坐標(biāo)double OSquare43/ 矩形坐標(biāo)double OTriangle43/ double OTriangle43/ 正三角形坐標(biāo)double OLine43。 /

5、直線坐標(biāo)int p3 。在 lab3View.cpp 文件中添加如下頭文件:#define ROUND(a int(a+0.5/ 四舍五入#define PI 3.1415926/ 圓周率#include math.h/ 數(shù)學(xué)頭文件在 lab3View.cpp 文件中的函數(shù)CLab3View:OnDraw(CDC* pDC下添加如下代碼:DXDiTa9E3dGetMaxX(。GetMaxY(。pDC-MoveTo(MaxX/2,0。 / 繪制坐標(biāo)軸pDC-LineTo(MaxX/2,MaxY。pDC-MoveTo(0,MaxY/2。pDC-LineTo(MaxX,MaxY/2。在 lab3Vi

6、ew.cpp 文件中添加如下的各個(gè)消息處理函數(shù)及代碼:void CLab3View:GetMaxX(/ 獲得屏幕寬度CRect Rect 。GetClientRect(&RectMaxX=Rect.rightvoid CLab3View:GetMaxY(/ 獲得屏幕高度CRect Rect 。GetClientRect(&Rect 。MaxY=Rect.bottom。void CLab3View:ClearMatrix(double A33/ 清除變換矩陣RTCrpUDGiTfor(int i=0。 ifor(int j=0。 jAij=0。 void CLab3View:OnTriangle

7、( / 菜單函數(shù)P00=-100/2。 P01=0 。 P02=1 。 / 繪制等邊三角形5PCzVD7HxAP10=100/2 。 P11=0 。 P12=1 。P20=0 。 P21=100/2*tan(60*PI/180。P22=1 。P30=0 。 P31=0 。 P32=1 。p3=3。KeepMatrix(P,OTriangle 。Draw(P,p3。 InvalidateRect(NULL,FALSE 。 / 重畫窗口void CLab3View:OnSquare(/ 菜單函數(shù)P02=1 。 / 繪制矩形P02=1 。 / 繪制矩形P11=100/2 。 P12=1P21=-10

8、0/2 。 P22=1。P31=-100/2P10=100/2P20=100/2P30=-100/2P32=1 。p3=4。KeepMatrix(P,OSquare 。Draw(P,p3。 InvalidateRect(NULL,FALSE 。 / 重畫窗口void CLab3View:OnLine(/ 菜單函數(shù)P00=-150/2。 P01=0 。 P02=1 。 / 繪制直線P10=150/2 。 P11=0 。 P12=1 。P20=0 。 P21=0 。 P22=1 。P30=0 。 P31=0 。 P32=1 。p3=2。KeepMatrix(P,OLine 。Draw(P,p3。

9、InvalidateRect(NULL,FALSE 。 / 重畫窗口void CLab3View:Draw(double D3,int n/ 繪制圖形 RedrawWindow(。CClientDC dc(this 。CPen pen,*pOldpen 。pen.CreatePen(PS_SOLID,2,RGB(0,0,0 。pOldpen=dc.SelectObject(&pen 。for(int i=0。 iif(i=0Di1dc.MoveTo(ROUND(MaxX/2+Di0,ROUND(MaxY/2- jLBHrnAILgDi1elsedc.LineTo(ROUND(MaxX/2+Di

10、0,ROUND(MaxY/2-Di1 。 xHAQX74J0Xdc.LineTo(ROUND(MaxX/2+D00,ROUND(MaxY/2-D01 。 LDAYtRyKfEdc.SelectObject(pOldpen 。pen.DeleteObject( 。void CLab3View:Calculate(double P03,double T3/兩個(gè)矩陣相乘Zzz6ZB2Ltkdouble Ptemp43。KeepMatrix(P,Ptemp 。for(int i=0。 ifor(int j=0。 jPij=Ptempi0*T0j+Ptempi1*T1j+Ptempi2*T2j。dvzf

11、vkwMI1void CLab3View:OnMENUleft(/ 向左平移Tmove(-10,0 。 void CLab3View:OnMENUright(/ 向右平移Tmove(10,0。 void CLab3View:OnMENUup( / 向上平移Tmove(0,10。 void CLab3View二OnMENUdown( 向下平移Tmove(0,-10。 void CLab3View:OnMENUClockwise(/ 順時(shí)針旋轉(zhuǎn)Trotate(30 。 void CLab3View:OnMENUAnticlockwise(/ 逆時(shí)針旋轉(zhuǎn)Trotate(-30 。 void CLab

12、3View:OnMENUIncrease(/ 放大比例Tscale(2,2 。 void CLab3View:OnMENUDecrease(/ 縮小比例Tscale(0.5,0.5 。 void CLab3View:OnMENUXaxis(/X 軸對(duì)稱 TOC o 1-5 h z Treflect(1,-1。void CLab3View:OnMENUYaxis(/Y 軸對(duì)稱Treflect(-1,1。void CLab3View:OnMENUorg( / 原點(diǎn)對(duì)稱Treflect(-1,-1。void CLab3View:OnMENUXdirectionplus(/X 正向錯(cuò)切 Treform

13、(0,1 。 void CLab3View:OnMENUXdirectionneg(/X 負(fù)向錯(cuò)切Treform(0,-1 。 void CLab3View:OnMENUITYdirectionplus(/Y 正向錯(cuò)切Treform(1,0 。 void CLab3View:OnMENUYdirectionneg(/Y 負(fù)向錯(cuò)切Treform(-1,0 。 void CLab3View:OnMENUReset( / 復(fù)位if(p3=4 TOC o 1-5 h z KeepMatrix(OSquare,P 。if(p3=3KeepMatrix(OTriangle,P 。if(p3=2KeepMa

14、trix(OLine,P 。Draw(P,p3。void CLab3View:Tmove(double Tx,double Ty/ 平移變換矩陣ClearMatrix(TMRedrawWindow(。TM00=1 。 TM11=1 。 TM20=Tx 。 TM21=Ty 。TM22=1 。 rqyn14ZNXICalculate(P,TM 。AfxGetMainWnd(-SetWindowText( 二維幾何變換平移變換 。Draw(P,p3。void CLab3View:Tscale(double Sx,double Sy/ 比例變換矩陣EmxvxOtOcoClearMatrix(TS 。R

15、edrawWindow(。TS00=Sx 。 TS11=Sy 。 TS22=1 。Calculate(P,TS 。AfxGetMainWnd(-SetWindowText( 二維幾何變換比例變換 。Draw(P,p3。void CLab3View:Trotate(double thta/ 旋轉(zhuǎn)變換矩陣ClearMatrix(TR 。RedrawWindow(。void CLab3View:Treform(double b,double c/void CLab3View:Treform(double b,double c/錯(cuò)切變換矩陣TR00=cos(thta*PI/180TR01=sin(th

16、ta*PI/180。 SixE2yXPq5TR10=-sin(thta*PI/180。TR11=cos(thta*PI/180。TR22=1 。 6ewMyirQFLCalculate(P,TR 。AfxGetMainWnd(-SetWindowText( 二維幾何變換旋轉(zhuǎn)變換 。Draw(P,p3。void CLab3View:Treflect(double Fx,double Fy/ 反射變換矩陣 kavU42VRUsClearMatrix(TF 。RedrawWindow(。TF00=Fx 。 TF11=Fy 。 TF22=1 。Calculate(P,TF 。AfxGetMainWnd

17、(-SetWindowText( 二維幾何變換反射變換 。Draw(P,p3。ClearMatrix(TCRedrawWindow(。TC00=1 。 TC01=b 。TC10=c 。 TC11=1 。TC22=1 。 y6v3ALoS89Calculate(P,TC 。AfxGetMainWnd(-SetWindowText( 二維幾何變換錯(cuò)切變換 。Draw(P,p3。void CLab3View:KeepMatrix(double Orig3,doubleDest3 M2ub6vSTnPint i,j 。for(i=0 。 ifor(j=0 。 jDestij=Origij 。6實(shí)驗(yàn)數(shù)據(jù)和實(shí)驗(yàn)結(jié)果用屏幕圖形表示,可另加附頁(yè)):打開Dubug內(nèi)lab3.exe點(diǎn)擊菜單欄“繪畫”,在工作區(qū)繪畫,畫好后單擊各個(gè)功能選項(xiàng)。結(jié)果如下: 初始圖1.平移 左移)平移 上移

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 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ì)用戶上傳內(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)論