版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、學(xué)號(hào)16082202032016-2017學(xué)年第2學(xué)期實(shí)體光照模型課程名稱題目:專業(yè):班級(jí):姓名:導(dǎo)教師:課程設(shè)計(jì)報(bào)告用C語(yǔ)言設(shè)計(jì)實(shí)體光照模型網(wǎng)絡(luò)工程(對(duì)口)16 (3)指聶代應(yīng)豪代美麗成績(jī)計(jì)算機(jī)學(xué)院2017年4月25日計(jì)算機(jī)學(xué)院實(shí)體光照模型課程設(shè)計(jì)報(bào)告目錄課程設(shè)計(jì)題目:實(shí)體光照模型一需求分析2二總體設(shè)計(jì)2三詳細(xì)設(shè)計(jì)3四源代碼11一需求分析如對(duì)長(zhǎng)方體,建 立一個(gè)點(diǎn)光源,采用環(huán)境光和點(diǎn)光源漫反射光的光照模型,應(yīng)用FLAT明暗處理方法,顯示平行投影后的長(zhǎng)方體光 照效果。二總體設(shè)計(jì)圖形介紹1計(jì)算機(jī)學(xué)院實(shí)體光照模型課程設(shè)計(jì)報(bào)告三詳細(xì)設(shè)計(jì)1、原理光照模型是真實(shí)感圖形技術(shù)的重要組成部分,它主要研究的是如何
2、根據(jù)光 學(xué)物理的有關(guān)定律,采用計(jì)算機(jī)來(lái)模擬自然界中光照明的物理過(guò)程。本文通過(guò)對(duì)光源特性和物體表面特性、局部光照模型和整體光照模型的具體分析,完 成 對(duì)光照模型的系統(tǒng)闡述。關(guān)鍵詞:光源特性、局部光照模型、全局光照模型、真實(shí)感圖形2、詳細(xì)分支定義三維齊次坐標(biāo)結(jié)構(gòu)和面的結(jié)構(gòu);定義頂點(diǎn)表和面表,對(duì)長(zhǎng)方體繞X軸旋轉(zhuǎn)和繞Y軸旋轉(zhuǎn)。對(duì)每一個(gè)面計(jì)算其外法向量及可見(jiàn)性對(duì)每個(gè)可見(jiàn)面計(jì)算其光線向量,并判斷其是否為背光面。計(jì)算每個(gè)見(jiàn)光面的環(huán)境光和點(diǎn)光源的漫反射分量。用該面的光強(qiáng)顯示該可見(jiàn)面3、設(shè)計(jì)介紹(1)旋轉(zhuǎn)變換繞X軸旋轉(zhuǎn)變換的坐標(biāo)表示 繞Y軸旋轉(zhuǎn)變換的坐標(biāo)表示(2)平行投影在XOYF面投影后坐標(biāo)(3)環(huán)境光模型物
3、體沒(méi)有受到光源的直射,但其表面仍有一定亮度,這是由于環(huán)境光的作用。表示環(huán)境光反射強(qiáng)度表示環(huán)境光反射率表示環(huán)境光入射強(qiáng)度(4)漫反射光模型漫反射光可認(rèn)為是在點(diǎn)光源的照射下,光被物體表面吸收后,然后重新反射 出來(lái)的光。表示漫反射光強(qiáng)度表示漫反射反射率表示點(diǎn)光源入射強(qiáng)度大小入射光與物體表面法矢量夾角4、定義結(jié)構(gòu)及分析i計(jì)算機(jī)學(xué)院實(shí)體光照模型課程設(shè)計(jì)報(bào)告(1)定義三維齊次向量結(jié)構(gòu)體typedef struct Vector3D float x;float y;float z;iint f;/f表示所在的平面的編號(hào)VECTOR;(2)定義三維齊次坐標(biāo)結(jié)構(gòu)typedef struct tagHOMOCOO
4、RD float x;float y;float z;float w;HOMOCOORD;(3)定義面的結(jié)構(gòu)typedef struct tagPLANE int v0, v1, v2, v3;VECTOR n;/外法向量HOMOCOORD center; / 中心點(diǎn)float Id;/漫反射光強(qiáng)計(jì)算機(jī)學(xué)院實(shí)體光照模型課程設(shè)計(jì)報(bào)告int flag;/標(biāo)識(shí)符float kd;/漫反射率float ka;/環(huán)境光反射率float Ie;/環(huán)境光反射光強(qiáng)float I;/光強(qiáng)PLANE;(4)定義點(diǎn)的結(jié)構(gòu)typedef struct tagMYPOINT float x,y;MYPOINT;(5)長(zhǎng)
5、方體頂點(diǎn)定義及初始化ptsnew HOMOCOORDptnpts0.x 1; pts0.y 2; pts0.z 1;pts0.w1;pts1.x -1; pts1.y 2; pts1.z 1; pts1.w1;pts2.x -1; pts2.y -2;pts2.z1; pts2.w1;pts3.x 1; pts3.y -2;pts3.z1;pts3.w1;pts4.x 1; pts4.y 2; pts4.z -1;pts4.w1;pts5.x -1; pts5.y 2; pts5.z -1;pts5.w1;1計(jì)算機(jī)學(xué)院實(shí)體光照模型課程設(shè)計(jì)報(bào)告-1;pts7.w1;pts6.x -1; pts6
6、.y -2;pts6.z-1;pts6.w1;pts7.x 1; pts7.y -2;pts7.z;(6)面表fn6;facesnewfaces0.v00;faces1.v04;faces2.v05;faces3.v06;faces4.v07;faces5.v07;PLANEfn;faces0.v11;faces1.v15;faces2.v16;faces3.v17;faces4.v14;faces5.v16;faces0.v22;faces1.v21;faces2.v22;faces3.v23;faces4.v20;faces5.v25;faces0.v33;faces1.v30;faces
7、2.v31;faces3.v32;faces4.v33;faces5.v34;(7)定義點(diǎn)光源、1、點(diǎn)光源視線方向、光照方向illuminant.x-100;illuminant.y-100;illuminant.z100;Ia 0.5;Ip 0.5;2、視線方向/環(huán)境光入射強(qiáng)度/漫反射入射光強(qiáng)度1VECTOR eye_vec;計(jì)算機(jī)學(xué)院實(shí)體光照模型課程設(shè)計(jì)報(bào)告eye_vec.x 0;eye_vec.y 0;eye_vec.z -1;3、定義光照方向light_vec new VECTORfn;VECTOR vector62;fori0; i6; i+vectori0CalculateVect
8、orptsfacesi.v0,pts facesi.v1, i ;1pts facesi.v2, i ;vectori1 CalculateVectorptsfacesi.v0,(8)各面可見(jiàn)性計(jì)算和判斷1、計(jì)算各個(gè)面的外法向量faces0.n VecCrossvector00, vector01fori0; i6; i+facesi.n VecCrossvectori0, vectori12、各個(gè)面的可見(jiàn)性判定float cos_angle;fori0; i6; i+計(jì)算機(jī)學(xué)院實(shí)體光照模型課程設(shè)計(jì)報(bào)告cos_angle-1.0*InnerProductfacesi.n,eye_vec/Get
9、Modulefacesi.n*GetModuleeye_vec;ifcos_angle0facesi.flagVISIABLE;elsefacesi.flagUNVISIABLE;3、計(jì)算各個(gè)面的中心點(diǎn)fori0; ifn; i+facesi.center.xptsfacesi.v0.x+ptsfacesi.v1.x+ptsfacesi.v2.x+ptsfacesi.v3.x/4.0f ;facesi.center.yptsfacesi.v0.y+ptsfacesi.v1.y+ptsfacesi.v2.y+ptsfacesi.v3.y/4.0f ;facesi.center.zptsfaces
10、i.v0.z+ptsfacesi.v1.z+ptsfacesi.v2.z+ptsfacesi.v3.z/4.0f ;facesi.center.wptsfacesi.v0.w+ptsfacesi.v1.w+ptsfacesi.v2.w+ptsfacesi.v3.w/4.0f1計(jì)算機(jī)學(xué)院實(shí)體光照模型課程設(shè)計(jì)報(bào)告4、計(jì)算各個(gè)面的光照方向fori0; ifn; i+light_veci CalculateVectorilluminant, facesi.center, EOF;5、計(jì)算各個(gè)面的漫反射光強(qiáng)fori0; ifn; i+facesi.IdIp*facesi.kd*-1*InnerProdu
11、ctfacesi.n,light_veci/GetModulefacesi.n*GetModulelight_veci;6、計(jì)算各個(gè)面環(huán)境光反射光強(qiáng)fori0; ifn; i+facesi.Ie facesi.ka*Ia;7、計(jì)算各個(gè)面光強(qiáng)(漫反射光強(qiáng)和環(huán)境反射光強(qiáng)之和)fori0; ifn; i+facesi.I facesi.Id+facesi.Ie ;/窗口-視區(qū)變換實(shí)現(xiàn)過(guò)程1計(jì)算機(jī)學(xué)院實(shí)體光照模型課程設(shè)計(jì)報(bào)告float wxl-5,wxr5,wyb-5,wyt5;int vxl0,vxr800,vyb0,vyt600;(9)窗口 -視區(qū)變換int aintvxr-vxl/wxr-wxl
12、;int bintvxl-wxl*a;int cintvyt-vyb/wyt-wyb;int dintvyb-wyb*c;fori0;iptn;i+pts2Di.xa*ptsi.x+b;pts2Di.yc*ptsi.y+d;(10)路徑填充CBrushBrush;Brush.CreateSolidBrushRGBfacesj.I*255,facesj.I*255,facesj.I*255+40;pd.SelectObject&Brush;pd.BeginPath;pd.MoveTop0;forint i1;i4;i+1計(jì)算機(jī)學(xué)院實(shí)體光照模型課程設(shè)計(jì)報(bào)告pd.LineTopi;pd.Li
13、neTop0;pd.EndPath;pd.FillPath;Brush.DeleteObject;四源代碼Draw3DView.h 文件typedef struct Vector3D體 float x;float y;float z;int f;VECTOR;typedef struct tagHOMOCOORD結(jié)構(gòu)/定義三維齊次向量結(jié)構(gòu)/f表示所在的平面的編號(hào)/定義三維齊次坐標(biāo) float x;float y;float z;float w;i計(jì)算機(jī)學(xué)院實(shí)體光照模型課程設(shè)計(jì)報(bào)告HOMOCOORD;;typedef struct tagPLANE int v0, v1, v2, v3;VECT
14、OR n;HOMOCOORD center;float Id;int flag;float kd;float ka;float Ie;float I;PLANE;typedef struct tagMYPOINT/定義面的結(jié)構(gòu)/外法向量/中心點(diǎn)/漫反射光強(qiáng)/漫反射率/環(huán)境光反射率/環(huán)境光反射光強(qiáng)/光強(qiáng)/定義點(diǎn)的結(jié)構(gòu),需要浮點(diǎn)數(shù)的x,y float x,y;MYPOINT;public:VECTOR CalculateVectorHOMOCOORD start, HOMOCOORD end, int face;/計(jì)算一個(gè)3維向量的函數(shù),1計(jì)算機(jī)學(xué)院實(shí)體光照模型課程設(shè)計(jì)報(bào)告從start點(diǎn)指向end
15、點(diǎn)的屬于face面的向量VECTOR VecCrossVECTOR vecl, VECTOR vec2;/計(jì)算兩個(gè)向量叉積,即外法向量float InnerProductVECTORvecl, VECTOR vec2;float GetModuleVECTORvoid RotateYint angle;void RotateXint angle;void DrawMy3DGraphics;virtual CDraw3DView;protected:HOMOCOORD illuminant;float Ip;float Ia;VECTOR *light_vec;HOMOCOORD *pts;/計(jì)
16、算兩個(gè)向量的內(nèi)積vec; /計(jì)算向量的模繞y軸逆時(shí)針旋轉(zhuǎn)繞x軸逆時(shí)針旋轉(zhuǎn)/繪制長(zhǎng)方體/定義光源坐標(biāo)/定義光源光強(qiáng)/環(huán)境光光強(qiáng)/各個(gè)面的光照方向指針/三維頂點(diǎn)指針MYPOINT *pts2D;/自定義的二維浮點(diǎn)數(shù)結(jié)構(gòu),表示變換后的二維點(diǎn)PLANE *faces;/長(zhǎng)方體的面指針int ptn,fn;/頂點(diǎn)個(gè)數(shù)與面的個(gè)數(shù)1Draw3DView.c 文件計(jì)算機(jī)學(xué)院實(shí)體光照模型課程設(shè)計(jì)報(bào)告int x_angle0;int y_angle0;void CDraw3DView:DrawMy3DGraphicsint i;/形體定義ptn8;ptsnew HOMOCOORDptn;/設(shè)置長(zhǎng)方體pts0.x1
17、; pts0.y2;pts0.z1; pts0.w1;pts1.x-1;pts1.y2;pts1.z1;pts1.w1;pts2.x-1;pts2.y-2;pts2.z1; pts2.w1;pts3.x1;pts3.y-2;pts3.z1; pts3.w1;pts4.x1;pts4.y2;pts4.z-1;pts4.w1;pts5.x-1;pts5.y2;pts5.z-1;pts5.w1;pts6.x-1;pts6.y-2;pts6.z-1; pts6.w1;pts7.x1; pts7.y-2;pts7.z-1; pts7.w1;/ 給定義面的指針?lè)峙鋬?nèi)存;fn6;facesnew PLANE
18、fn;/設(shè)置立方體各面faces0.v00;faces0.v11;faces0.v22;faces0.v33;faces1.v04;faces1.v15;faces1.v21;faces1.v30;faces2.v05;faces2.v16;1計(jì)算機(jī)學(xué)院實(shí)體光照模型課程設(shè)計(jì)報(bào)告faces2.v22;faces2.v31;faces3.v06;faces3.v17;faces3.v32;faces4.v07;faces4.v14;faces4.v33;faces5.v07;faces5.v16;faces5.v34;pts2Dnew MYPOINTptn;fori0; ifn; i+facesi
19、.ka0.8;facesi.kd0.8;/定義點(diǎn)光源illuminant.x-100;illuminant.y-100;illuminant.z100;Ia 0.5;Ip 0.5;/定義視線方向VECTOR eye_vec;eye_vec.x 0;eye_vec.y 0;eye_vec.z -1;/定義光照方向light_vec new VECTORfn;faces3.v23;faces4.v20;faces5.v25;RotateXx_angle;RotateYy_angle;定義并計(jì)算各個(gè)面的兩條相交的向/旋轉(zhuǎn)調(diào)用1計(jì)算機(jī)學(xué)院實(shí)體光照模型課程設(shè)計(jì)報(bào)告VECTOR vector62;fori
20、0; i6; i+vectori0CalculateVectorptsfacesi.v0,pts facesi.v1,i ;vectori1CalculateVectorptsfacesi.v0,pts facesi.v2,i ;/計(jì)算各個(gè)面的外法向量faces0.n VecCrossvector00, vector01;fori0; i6; i+facesi.n VecCrossvectori0, vectori1;/各個(gè)面的可見(jiàn)性判定float cos_angle;fori0; i6; i+cos_angle-1.0*InnerProductfacesi.n,eye_vec/GetModu
21、lefacesi.n*GetModuleeye_vec;ifcos_angle0facesi.flagVISIABLE;elsefacesi.flagUNVISIABLE;/計(jì)算各個(gè)面的中心點(diǎn)fori0; ifn; i+facesi.center.xptsfacesi.v0.x+ptsfacesi.v1.x+ptsfacesi.v2.x+ptsfacesi.v3.1計(jì)算機(jī)學(xué)院實(shí)體光照模型課程設(shè)計(jì)報(bào)告x/4.0f ;facesi.center.yptsfacesi.v0.y+ptsfacesi.v1.y+ptsfacesi.v2.y+ptsfacesi.v3.y/4.0f ;facesi.cen
22、ter.zptsfacesi.v0.z+ptsfacesi.v1.z+ptsfacesi.v2.z+ptsfacesi.v3.z/4.0f ;facesi.center.wptsfacesi.v0.w+ptsfacesi.v1.w+ptsfacesi.v2.w+ptsfacesi.v3.w/4.0f;/計(jì)算各個(gè)面的光照方向fori0; ifn; i+light_veci CalculateVectorilluminant, facesi.center, EOF;/計(jì)算各個(gè)面的漫反射光強(qiáng)fori0; ifn; i+facesi.IdIp*facesi.kd*-1*InnerProductface
23、si.n,light_veci/GetModulefacesi.n*GetModulelight_veci;/計(jì)算各個(gè)面環(huán)境光反射光強(qiáng)fori0; ifn; i+facesi.Ie facesi.ka*Ia;/計(jì)算各個(gè)面光強(qiáng) fori0; ifn; i+1計(jì)算機(jī)學(xué)院實(shí)體光照模型課程設(shè)計(jì)報(bào)告facesi.I facesi.Id+facesi.Ie ;/平行投影變換fori0;iptn;i+ptsi.xptsi.x;ptsi.yptsi.y;/窗口-視區(qū)變換int aintvxr-vxl/wxr-wxl;int bintvxl-wxl*a;int cintvyt-vyb/wyt-wyb;int d
24、intvyb-wyb*c;fori0;iptn;i+pts2Di.xa*ptsi.x+b;pts2Di.yc*ptsi.y+d;/圖形顯示CClientDC pdthis;CPoint p4;forint j0; j6; j+iffacesj.flagVISIABLEp0CPointpts2Dfacesj.v0.x,pts2Dfacesj.v0.y;p1CPointpts2Dfacesj.v1.x,pts2Dfacesj.v1.y;p2CPointpts2Dfacesj.v2.x,pts2Dfacesj.v2.y;1計(jì)算機(jī)學(xué)院實(shí)體光照模型課程設(shè)計(jì)報(bào)告p3CPointpts2Dfacesj.v3
25、.x,pts2Dfacesj.v3.y;/dc.SelectObjectpOld; /把畫(huà)筆設(shè)置為原來(lái)的CBrush Brush;DKGRAY_BRUSH,RGB64,64,64;Brush.CreateSolidBrushRGBfacesj.I*255,facesj.I*255,facesj.I* 255+40;pd.SelectObject&Brush;pd.BeginPath;pd.MoveTop0;forint i1;i4;i+pd.LineTopi;pd.LineTop0;pd.EndPath;pd.FillPath;Brush.DeleteObject;void CDraw
26、3DView二RotateXintangle/ 繞 x 軸逆時(shí)針旋轉(zhuǎn)float aangle*PI/180;forint i0;iptn;i+float y,z;yptsi.y; zptsi.z;ptsi.yy*cosa-z*sina;ptsi.zy*sina+z*cosa;void CDraw3DView:RotateYintangle 繞y軸逆時(shí)針旋轉(zhuǎn)1計(jì)算機(jī)學(xué)院實(shí)體光照模型課程設(shè)計(jì)報(bào)告float bangle*PI/180;forint i0;iptn;i+float x,z;xptsi.x; zptsi.z;ptsi.xx*cosb+z*sinb;ptsi.z-x*sinb+z*cosb;VECTOR CDraw3DView:CalculateVectorHOMOCOORDstart,HOMOCOORD end, int face計(jì)算一個(gè)3維向量的函數(shù),從start點(diǎn)指向end點(diǎn)的屬于face面的向量VECTOR tempVector;tempVector.xend.x-start.x;tempVector.yend.y-start.y
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025版小額貸款抵押合同資產(chǎn)評(píng)估及報(bào)告協(xié)議2篇
- 2025年度個(gè)人與公司租賃房屋修繕責(zé)任合同4篇
- 2025年度個(gè)人旅游規(guī)劃與導(dǎo)游服務(wù)合同2篇
- 2025版室外照明燈具廣告宣傳與品牌推廣合同3篇
- 2025年度煤炭行業(yè)綠色運(yùn)輸體系構(gòu)建合同4篇
- 2025標(biāo)準(zhǔn)新能源材料研發(fā)與采購(gòu)合作協(xié)議3篇
- 2025年度生態(tài)環(huán)保瓷磚批量采購(gòu)合作協(xié)議3篇
- 2025版醫(yī)療健康大數(shù)據(jù)合作開(kāi)發(fā)合同3篇
- 個(gè)性化定制小區(qū)房產(chǎn)買賣合同(2024版)版B版
- 2025版國(guó)際貿(mào)易糾紛訴訟擔(dān)保委托服務(wù)協(xié)議3篇
- 五年級(jí)上冊(cè)寒假作業(yè)答案(人教版)
- 2025年山東浪潮集團(tuán)限公司招聘25人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2024年財(cái)政部會(huì)計(jì)法律法規(guī)答題活動(dòng)題目及答案一
- 2025年江西省港口集團(tuán)招聘筆試參考題庫(kù)含答案解析
- (2024年)中國(guó)傳統(tǒng)文化介紹課件
- 液化氣安全檢查及整改方案
- 《冠心病》課件(完整版)
- 2024年云網(wǎng)安全應(yīng)知應(yīng)會(huì)考試題庫(kù)
- 公園保潔服務(wù)投標(biāo)方案
- 光伏電站項(xiàng)目合作開(kāi)發(fā)合同協(xié)議書(shū)三方版
- 2024年秋季新滬教版九年級(jí)上冊(cè)化學(xué)課件 第2章 空氣與水資源第1節(jié) 空氣的組成
評(píng)論
0/150
提交評(píng)論