下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、學(xué)號16082202032016-2017學(xué)年第2學(xué)期實體光照模型課程名稱題目:專業(yè):班級:姓名:導(dǎo)教師:課程設(shè)計報告用C語言設(shè)計實體光照模型網(wǎng)絡(luò)工程(對口)16 (3)指聶代應(yīng)豪代美麗成績計算機(jī)學(xué)院2017年4月25日計算機(jī)學(xué)院實體光照模型課程設(shè)計報告目錄課程設(shè)計題目:實體光照模型一需求分析2二總體設(shè)計2三詳細(xì)設(shè)計3四源代碼11一需求分析如對長方體,建 立一個點光源,采用環(huán)境光和點光源漫反射光的光照模型,應(yīng)用FLAT明暗處理方法,顯示平行投影后的長方體光 照效果。二總體設(shè)計圖形介紹1計算機(jī)學(xué)院實體光照模型課程設(shè)計報告三詳細(xì)設(shè)計1、原理光照模型是真實感圖形技術(shù)的重要組成部分,它主要研究的是如何
2、根據(jù)光 學(xué)物理的有關(guān)定律,采用計算機(jī)來模擬自然界中光照明的物理過程。本文通過對光源特性和物體表面特性、局部光照模型和整體光照模型的具體分析,完 成 對光照模型的系統(tǒng)闡述。關(guān)鍵詞:光源特性、局部光照模型、全局光照模型、真實感圖形2、詳細(xì)分支定義三維齊次坐標(biāo)結(jié)構(gòu)和面的結(jié)構(gòu);定義頂點表和面表,對長方體繞X軸旋轉(zhuǎn)和繞Y軸旋轉(zhuǎn)。對每一個面計算其外法向量及可見性對每個可見面計算其光線向量,并判斷其是否為背光面。計算每個見光面的環(huán)境光和點光源的漫反射分量。用該面的光強(qiáng)顯示該可見面3、設(shè)計介紹(1)旋轉(zhuǎn)變換繞X軸旋轉(zhuǎn)變換的坐標(biāo)表示 繞Y軸旋轉(zhuǎn)變換的坐標(biāo)表示(2)平行投影在XOYF面投影后坐標(biāo)(3)環(huán)境光模型物
3、體沒有受到光源的直射,但其表面仍有一定亮度,這是由于環(huán)境光的作用。表示環(huán)境光反射強(qiáng)度表示環(huán)境光反射率表示環(huán)境光入射強(qiáng)度(4)漫反射光模型漫反射光可認(rèn)為是在點光源的照射下,光被物體表面吸收后,然后重新反射 出來的光。表示漫反射光強(qiáng)度表示漫反射反射率表示點光源入射強(qiáng)度大小入射光與物體表面法矢量夾角4、定義結(jié)構(gòu)及分析i計算機(jī)學(xué)院實體光照模型課程設(shè)計報告(1)定義三維齊次向量結(jié)構(gòu)體typedef struct Vector3D float x;float y;float z;iint f;/f表示所在的平面的編號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; / 中心點float Id;/漫反射光強(qiáng)計算機(jī)學(xué)院實體光照模型課程設(shè)計報告int flag;/標(biāo)識符float kd;/漫反射率float ka;/環(huán)境光反射率float Ie;/環(huán)境光反射光強(qiáng)float I;/光強(qiáng)PLANE;(4)定義點的結(jié)構(gòu)typedef struct tagMYPOINT float x,y;MYPOINT;(5)長
5、方體頂點定義及初始化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ī)學(xué)院實體光照模型課程設(shè)計報告-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)定義點光源、1、點光源視線方向、光照方向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ī)學(xué)院實體光照模型課程設(shè)計報告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)各面可見性計算和判斷1、計算各個面的外法向量faces0.n VecCrossvector00, vector01fori0; i6; i+facesi.n VecCrossvectori0, vectori12、各個面的可見性判定float cos_angle;fori0; i6; i+計算機(jī)學(xué)院實體光照模型課程設(shè)計報告cos_angle-1.0*InnerProductfacesi.n,eye_vec/Get
9、Modulefacesi.n*GetModuleeye_vec;ifcos_angle0facesi.flagVISIABLE;elsefacesi.flagUNVISIABLE;3、計算各個面的中心點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ī)學(xué)院實體光照模型課程設(shè)計報告4、計算各個面的光照方向fori0; ifn; i+light_veci CalculateVectorilluminant, facesi.center, EOF;5、計算各個面的漫反射光強(qiáng)fori0; ifn; i+facesi.IdIp*facesi.kd*-1*InnerProdu
11、ctfacesi.n,light_veci/GetModulefacesi.n*GetModulelight_veci;6、計算各個面環(huán)境光反射光強(qiáng)fori0; ifn; i+facesi.Ie facesi.ka*Ia;7、計算各個面光強(qiáng)(漫反射光強(qiáng)和環(huán)境反射光強(qiáng)之和)fori0; ifn; i+facesi.I facesi.Id+facesi.Ie ;/窗口-視區(qū)變換實現(xiàn)過程1計算機(jī)學(xué)院實體光照模型課程設(shè)計報告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ī)學(xué)院實體光照模型課程設(shè)計報告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表示所在的平面的編號/定義三維齊次坐標(biāo) float x;float y;float z;float w;i計算機(jī)學(xué)院實體光照模型課程設(shè)計報告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)/外法向量/中心點/漫反射光強(qiáng)/漫反射率/環(huán)境光反射率/環(huán)境光反射光強(qiáng)/光強(qiáng)/定義點的結(jié)構(gòu),需要浮點數(shù)的x,y float x,y;MYPOINT;public:VECTOR CalculateVectorHOMOCOORD start, HOMOCOORD end, int face;/計算一個3維向量的函數(shù),1計算機(jī)學(xué)院實體光照模型課程設(shè)計報告從start點指向end
15、點的屬于face面的向量VECTOR VecCrossVECTOR vecl, VECTOR vec2;/計算兩個向量叉積,即外法向量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;/計
16、算兩個向量的內(nèi)積vec; /計算向量的模繞y軸逆時針旋轉(zhuǎn)繞x軸逆時針旋轉(zhuǎn)/繪制長方體/定義光源坐標(biāo)/定義光源光強(qiáng)/環(huán)境光光強(qiáng)/各個面的光照方向指針/三維頂點指針MYPOINT *pts2D;/自定義的二維浮點數(shù)結(jié)構(gòu),表示變換后的二維點PLANE *faces;/長方體的面指針int ptn,fn;/頂點個數(shù)與面的個數(shù)1Draw3DView.c 文件計算機(jī)學(xué)院實體光照模型課程設(shè)計報告int x_angle0;int y_angle0;void CDraw3DView:DrawMy3DGraphicsint i;/形體定義ptn8;ptsnew HOMOCOORDptn;/設(shè)置長方體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;/ 給定義面的指針分配內(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ī)學(xué)院實體光照模型課程設(shè)計報告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;/定義點光源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;定義并計算各個面的兩條相交的向/旋轉(zhuǎn)調(diào)用1計算機(jī)學(xué)院實體光照模型課程設(shè)計報告VECTOR vector62;fori
20、0; i6; i+vectori0CalculateVectorptsfacesi.v0,pts facesi.v1,i ;vectori1CalculateVectorptsfacesi.v0,pts facesi.v2,i ;/計算各個面的外法向量faces0.n VecCrossvector00, vector01;fori0; i6; i+facesi.n VecCrossvectori0, vectori1;/各個面的可見性判定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;/計算各個面的中心點fori0; ifn; i+facesi.center.xptsfacesi.v0.x+ptsfacesi.v1.x+ptsfacesi.v2.x+ptsfacesi.v3.1計算機(jī)學(xué)院實體光照模型課程設(shè)計報告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;/計算各個面的光照方向fori0; ifn; i+light_veci CalculateVectorilluminant, facesi.center, EOF;/計算各個面的漫反射光強(qiáng)fori0; ifn; i+facesi.IdIp*facesi.kd*-1*InnerProductface
23、si.n,light_veci/GetModulefacesi.n*GetModulelight_veci;/計算各個面環(huán)境光反射光強(qiáng)fori0; ifn; i+facesi.Ie facesi.ka*Ia;/計算各個面光強(qiáng) fori0; ifn; i+1計算機(jī)學(xué)院實體光照模型課程設(shè)計報告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ī)學(xué)院實體光照模型課程設(shè)計報告p3CPointpts2Dfacesj.v3
25、.x,pts2Dfacesj.v3.y;/dc.SelectObjectpOld; /把畫筆設(shè)置為原來的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 軸逆時針旋轉(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軸逆時針旋轉(zhuǎn)1計算機(jī)學(xué)院實體光照模型課程設(shè)計報告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計算一個3維向量的函數(shù),從start點指向end點的屬于face面的向量VECTOR tempVector;tempVector.xend.x-start.x;tempVector.yend.y-start.y
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 語文素養(yǎng)大賽策劃書3篇
- 2025年榆林能源科技職業(yè)學(xué)院高職單招語文2018-2024歷年參考題庫頻考點含答案解析
- 專題02 漫畫素材類選擇題(50題)
- 2024年電商應(yīng)用與品牌市場洞察報告
- 課題申報參考:數(shù)據(jù)驅(qū)動的帆板高效推進(jìn)搖帆策略研究
- 駕馭考試戰(zhàn)場的戰(zhàn)術(shù)思維
- 幼兒植樹節(jié)出游活動策劃方案五篇
- 酒店委托經(jīng)營合同范本
- 范文二手房買賣合同
- 商服用房買賣合同
- 文檔協(xié)同編輯-深度研究
- 七年級數(shù)學(xué)新北師大版(2024)下冊第一章《整式的乘除》單元檢測習(xí)題(含簡單答案)
- 2024-2025學(xué)年云南省昆明市盤龍區(qū)高一(上)期末數(shù)學(xué)試卷(含答案)
- 五年級上冊寒假作業(yè)答案(人教版)
- 2024年財政部會計法律法規(guī)答題活動題目及答案一
- 2025年中考語文復(fù)習(xí)熱搜題速遞之說明文閱讀(2024年7月)
- 和達(dá)投資集團(tuán)(杭州)有限公司招聘筆試沖刺題2025
- 綜治工作培訓(xùn)課件
- 2024年云網(wǎng)安全應(yīng)知應(yīng)會考試題庫
- 2024年全國職業(yè)院校技能大賽高職組(智能節(jié)水系統(tǒng)設(shè)計與安裝賽項)考試題庫-下(多選、判斷題)
- 2024年廣東省事業(yè)單位考試真題及答案5
評論
0/150
提交評論