




已阅读5页,还剩8页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实体光照模型课程名称实体光照模型课程名称 课程设计报告课程设计报告 题目:用 C 语言设计实体光照模型 专业:网络工程(对口) 班级:16(3) 姓名:聂代应豪 指导教师: 代美丽 成绩: 计算机学院计算机学院 20172017 年年 4 4 月月 2 25 5 日日 学号学号 2016-2017 学年学年 第第 2 学期学期 计算机学院 实体光照模型课程设计报告 1 目录目录 课程设计题目:实体光照模型课程设计题目:实体光照模型 一一 需求分析需求分析 .2 二二 总体设计总体设计 .2 三三 详细设计详细设计 .3 四四 源代码源代码.11 一一 需求分析需求分析 如对长方体,建立一个点光源,采用环境光和点光源漫反射光 的光照模型,应用 FLAT 明暗处理方法,显示平行投影后的长方体光 照效果。 二二 总体设计总体设计 图形介绍图形介绍 光照模型效果图 表面表面 模型模型 可见可见 面判断面判断 可见面背可见面背 光性判断光性判断 可见面可见面 光照计算光照计算 计算机学院 实体光照模型课程设计报告 1 三三 详细设计详细设计 1 1、原理、原理 光照模型是真实感图形技术的重要组成部分,它主要研究的是如何根据光 学物理的有关定律,采用计算机来模拟自然界中光照明的物理过程。本文通过 对光源特性和物体表面特性、局部光照模型和整体光照模型的具体分析,完成 对光照模型的 系统阐述。 关键词:光源特性、局部光照模型、全局光照模型、真实感图形 2 2、详细分支、详细分支 定义三维齐次坐标结构和面的结构;定义顶点表和面表,对长方体绕 X 轴 旋转和绕 Y 轴旋转。 对每一个面计算其外法向量及可见性 对每个可见面计算其光线向量,并判断其是否为背光面。 计算每个见光面的环境光和点光源的漫反射分量。 用该面的光强显示该可见面 3 3、设计介绍、设计介绍 (1)旋转变换 绕 X 轴旋转变换的坐标表示 绕 Y 轴旋转变换的坐标表示 (2) 平行投影 在 XOY 平面投影后坐标 (3) 环境光模型 物体没有受到光源的直射,但其表面仍有一定亮度,这是由于环境光的作用。 表示环境光反射强度 表示环境光反射率 表示环境光入射强度 (4)漫反射光模型 漫反射光可认为是在点光源的照射下,光被物体表面吸收后,然后重新反射 出来的光。 表示漫反射光强度 表示漫反射反射率 表示点光源入射强度大小 入射光与物体表面法矢量夹角 4 4、定义结构及分析、定义结构及分析 计算机学院 实体光照模型课程设计报告 1 (1)定义三维齐次向量结构体 typedeftypedef structstruct Vector3DVector3D floatfloat x;x; floatfloat y;y; floatfloat z;z; intint f;f; /f/f 表示所在的平面的编号表示所在的平面的编号 VECTOR;VECTOR; ; (2) 定义三维齐次坐标结构 typedeftypedef structstruct tagHOMOCOORDtagHOMOCOORD floatfloat x;x; floatfloat y;y; floatfloat z;z; floatfloat w;w; HOMOCOORD;HOMOCOORD; ; (3)定义面的结构 typedeftypedef structstruct tagPLANEtagPLANE intint v0,v0, v1,v1, v2,v2, v3;v3; VECTORVECTOR n;n; /外法向量外法向量 HOMOCOORDHOMOCOORD center;center; /中心点中心点 floatfloat Id;Id; /漫反射光强漫反射光强 intint flag;flag; /标识符标识符 floatfloat kd;kd; /漫反射率漫反射率 floatfloat ka;ka; /环境光反射率环境光反射率 floatfloat Ie;Ie; /环境光反射光强环境光反射光强 floatfloat I;I; /光强光强 PLANE;PLANE; ; (4)定义点的结构 typedeftypedef structstruct tagMYPOINTtagMYPOINT floatfloat x,y;x,y; MYPOINT;MYPOINT; ; (5)长方体顶点定义及初始化 ptsnewptsnew HOMOCOORDptnHOMOCOORDptn 计算机学院 实体光照模型课程设计报告 1 pts0.xpts0.x 1;1;pts0.ypts0.y 2;2; pts0.zpts0.z 1;1; pts0.w1;pts0.w1; pts1.xpts1.x -1;-1; pts1.ypts1.y 2;2; pts1.zpts1.z 1;1; pts1.w1;pts1.w1; pts2.xpts2.x -1;-1; pts2.ypts2.y -2;pts2.z-2;pts2.z 1;1; pts2.w1;pts2.w1; pts3.xpts3.x 1;1;pts3.ypts3.y -2;pts3.z-2;pts3.z 1;1; pts3.w1;pts3.w1; pts4.xpts4.x 1;1;pts4.ypts4.y 2;2; pts4.zpts4.z -1;-1; pts4.w1;pts4.w1; pts5.xpts5.x -1;-1; pts5.ypts5.y 2;2; pts5.zpts5.z -1;-1; pts5.w1;pts5.w1; pts6.xpts6.x -1;-1; pts6.ypts6.y -2;pts6.z-2;pts6.z -1;-1; pts6.w1;pts6.w1; pts7.xpts7.x 1;1;pts7.ypts7.y -2;pts7.z-2;pts7.z -1;-1; pts7.w1;pts7.w1; ; (6)面表 fn6;fn6; facesnewfacesnew PLANEfn;PLANEfn; faces0.v00;faces0.v00; faces0.v11;faces0.v11; faces0.v22;faces0.v22; faces0.v33;faces0.v33; faces1.v04;faces1.v04; faces1.v15;faces1.v15; faces1.v21;faces1.v21; faces1.v30;faces1.v30; faces2.v05;faces2.v05; faces2.v16;faces2.v16; faces2.v22;faces2.v22; faces2.v31;faces2.v31; faces3.v06;faces3.v06; faces3.v17;faces3.v17; faces3.v23;faces3.v23; faces3.v32;faces3.v32; faces4.v07;faces4.v07; faces4.v14;faces4.v14; faces4.v20;faces4.v20; faces4.v33;faces4.v33; faces5.v07;faces5.v07; faces5.v16;faces5.v16; faces5.v25;faces5.v25; faces5.v34;faces5.v34; (7)定义点光源、视线方向、光照方向 1、点光源 illuminant.xilluminant.x -100;-100; illuminant.yilluminant.y -100;-100; illuminant.zilluminant.z 100;100; IaIa 0.5;0.5; /环境光入射强度环境光入射强度 IpIp 0.5;0.5; /漫反射入射光强漫反射入射光强度度 2、视线方向 VECTORVECTOR eye_vec;eye_vec; eye_vec.xeye_vec.x 0;0; eye_vec.yeye_vec.y 0;0; eye_vec.zeye_vec.z -1;-1; 3、定义光照方向 light_veclight_vec newnew VECTORfn;VECTORfn; VECTORVECTOR vector62vector62 ; ; fori0;fori0; i6;i6; i+i+ vectori0vectori0 CalculateVectorptsfacesi.v0,CalculateVectorptsfacesi.v0, ptspts facesi.v1,facesi.v1, i i ; ; 计算机学院 实体光照模型课程设计报告 1 vectori1vectori1 CalculateVectorptsfacesi.v0,CalculateVectorptsfacesi.v0, ptspts facesi.v2,facesi.v2, i i ; ; (8)各面可见性计算和判断 1、计算各个面的外法向量 faces0.nfaces0.n VecCrossvector00,VecCrossvector00, vector01vector01 ; ; fori0;fori0; i6;i6; i+i+ facesi.nfacesi.n VecCrossvectori0,VecCrossvectori0, vectori1vectori1 ; ; 2、各个面的可见性判定 floatfloat cos_angle;cos_angle; fori0;fori0; i6;i6; i+i+ cos_anglecos_angle -1.0*InnerProductfacesi.n,-1.0*InnerProductfacesi.n, eye_vec/GetModulefacesi.n*GetModuleeye_vec;eye_vec/GetModulefacesi.n*GetModuleeye_vec; ifcos_angle0ifcos_angle0 facesi.flagfacesi.flag VISIABLE;VISIABLE; elseelse facesi.flagfacesi.flag UNVISIABLE;UNVISIABLE; 3、计算各个面的中心点 fori0;fori0; ifn;ifn; i+i+ facesi.center.xfacesi.center.x ptsfacesi.v0.x+ptsfacesi.v1.x+ptsfacesi.v2.x+ptsfacesi.vptsfacesi.v0.x+ptsfacesi.v1.x+ptsfacesi.v2.x+ptsfacesi.v 3.x/4.0f3.x/4.0f ; ; facesi.center.yfacesi.center.y ptsfacesi.v0.y+ptsfacesi.v1.y+ptsfacesi.v2.y+ptsfacesi.vptsfacesi.v0.y+ptsfacesi.v1.y+ptsfacesi.v2.y+ptsfacesi.v 3.y/4.0f3.y/4.0f ; ; facesi.center.zfacesi.center.z ptsfacesi.v0.z+ptsfacesi.v1.z+ptsfacesi.v2.z+ptsfacesi.vptsfacesi.v0.z+ptsfacesi.v1.z+ptsfacesi.v2.z+ptsfacesi.v 3.z/4.0f3.z/4.0f ; ; facesi.center.wfacesi.center.w ptsfacesi.v0.w+ptsfacesi.v1.w+ptsfacesi.v2.w+ptsfacesi.vptsfacesi.v0.w+ptsfacesi.v1.w+ptsfacesi.v2.w+ptsfacesi.v 3.w/4.0f3.w/4.0f ; ; 计算机学院 实体光照模型课程设计报告 1 4、计算各个面的光照方向 fori0;fori0; ifn;ifn; i+i+ light_vecilight_veci CalculateVectorilluminant,CalculateVectorilluminant, facesi.center,facesi.center, EOF;EOF; 5、计算各个面的漫反射光强 fori0;fori0; ifn;ifn; i+i+ facesi.Idfacesi.Id Ip*facesi.kd*-1*InnerProductfacesi.n,Ip*facesi.kd*-1*InnerProductfacesi.n, light_veci/GetModulefacesi.n*GetModulelight_veci;light_veci/GetModulefacesi.n*GetModulelight_veci; 6、计算各个面环境光反射光强 fori0;fori0; ifn;ifn; i+i+ facesi.Iefacesi.Ie facesi.ka*Ia;facesi.ka*Ia; 7、计算各个面光强(漫反射光强和环境反射光强之和) fori0;fori0; ifn;ifn; i+i+ facesi.Ifacesi.I facesi.Id+facesi.Iefacesi.Id+facesi.Ie ; ; /窗口窗口- -视区变换实现过程视区变换实现过程 floatfloat wxl-5,wxr5,wyb-5,wyt5;wxl-5,wxr5,wyb-5,wyt5; intint vxl0,vxr800,vyb0,vyt600;vxl0,vxr800,vyb0,vyt600; (9)窗口-视区变换 intint a a intvxr-vxl/wxr-wxl;intvxr-vxl/wxr-wxl; intint b b intvxl-wxl*a;intvxl-wxl*a; intint c c intvyt-vyb/wyt-wyb;intvyt-vyb/wyt-wyb; intint d d intvyb-wyb*c;intvyb-wyb*c; fori0;iptn;i+fori0;iptn;i+ pts2Di.xpts2Di.x a*ptsi.x+b;a*ptsi.x+b; pts2Di.ypts2Di.y c*ptsi.y+d;c*ptsi.y+d; (10) 路径填充 计算机学院 实体光照模型课程设计报告 1 CBrushCBrush Brush;Brush.CreateSolidBrushRGBfacesj.I*255,facesj.I*255,facesj.IBrush;Brush.CreateSolidBrushRGBfacesj.I*255,facesj.I*255,facesj.I *255+40;*255+40; pd.SelectObjectpd.SelectObject pd.BeginPath;pd.BeginPath; pd.MoveTop0;pd.MoveTop0; forintforint i1;i4;i+i1;i4;i+ pd.LineTopi;pd.LineTopi; pd.LineTop0;pd.LineTop0; pd.EndPath;pd.EndPath; pd.FillPath;pd.FillPath; Brush.DeleteObject;Brush.DeleteObject; 四四 源代码源代码 Draw3DView.hDraw3DView.h 文件文件 typedeftypedef structstruct Vector3DVector3D /定义三维齐次向量结构体定义三维齐次向量结构体 floatfloat x;x; floatfloat y;y; floatfloat z;z; intint f;f; /f/f 表示所在的平面的编号表示所在的平面的编号 VECTOR;VECTOR; ; typedeftypedef structstruct tagHOMOCOORDtagHOMOCOORD /定义三维齐次坐标结构定义三维齐次坐标结构 floatfloat x;x; floatfloat y;y; floatfloat z;z; floatfloat w;w; HOMOCOORD;HOMOCOORD; ; typedeftypedef structstruct tagPLANEtagPLANE /定义面的结构定义面的结构 intint v0,v0, v1,v1, v2,v2, v3;v3; VECTORVECTOR n;n; /外法向量外法向量 HOMOCOORDHOMOCOORD center;center; /中心点中心点 floatfloat Id;Id; /漫反射光强漫反射光强 intint flag;flag; floatfloat kd;kd; /漫反射率漫反射率 floatfloat ka;ka; /环境光反射率环境光反射率 floatfloat Ie;Ie; /环境光反射光强环境光反射光强 floatfloat I;I; /光强光强 PLANE;PLANE; 计算机学院 实体光照模型课程设计报告 1 typedeftypedef structstruct tagMYPOINTtagMYPOINT /定义点的结构定义点的结构, ,需要浮点数的需要浮点数的 x,yx,y floatfloat x,y;x,y; MYPOINT;MYPOINT; public:public: VECTORVECTOR CalculateVectorHOMOCOORDCalculateVectorHOMOCOORD start,start, HOMOCOORDHOMOCOORD end,end, intint face;face; /计算一个计算一个 3 3 维向量的函数维向量的函数, , /从从 startstart 点指向点指向 endend 点的属于点的属于 faceface 面的向量面的向量 VECTORVECTOR VecCrossVECTORVecCrossVECTOR vec1,vec1, VECTORVECTOR vec2;vec2; /计算两个向量叉积计算两个向量叉积, ,即外法向量即外法向量 floatfloat InnerProductVECTORInnerProductVECTOR vec1,vec1, VECTORVECTOR vec2;vec2; /计算两个向量的内积计算两个向量的内积 floatfloat GetModuleVECTORGetModuleVECTOR vec;vec; /计算向量的模计算向量的模 voidvoid RotateYintRotateYint angle;angle; /绕绕 y y 轴逆时针旋转轴逆时针旋转 voidvoid RotateXintRotateXint angle;angle; /绕绕 x x 轴逆时针旋转轴逆时针旋转 voidvoid DrawMy3DGraphics;DrawMy3DGraphics; /绘制长方体绘制长方体 virtualvirtual CDraw3DView;CDraw3DView; protected:protected: HOMOCOORDHOMOCOORD illuminant;illuminant; /定义光源坐标定义光源坐标 floatfloat Ip;Ip; /定义光源光强定义光源光强 floatfloat Ia;Ia; /环境光光强环境光光强 VECTORVECTOR *light_vec;*light_vec; /各个面的光照方向指针各个面的光照方向指针 HOMOCOORDHOMOCOORD *pts;*pts; /三维顶点指针三维顶点指针 MYPOINTMYPOINT *pts2D;*pts2D; /自定义的二维浮点数结构自定义的二维浮点数结构, ,表示变换后的二维点表示变换后的二维点 PLANEPLANE *faces;*faces; /长方体的面指针长方体的面指针 intint ptn,fn;ptn,fn; /顶点个数与面的个数顶点个数与面的个数 Draw3DView.cDraw3DView.c 文件文件 intint x_anglex_angle 0;0; intint y_angley_angle 0;0; voidvoid CDraw3DView:DrawMy3DGraphicsCDraw3DView:DrawMy3DGraphics intint i;i; /形体定义形体定义 ptn8;ptn8; ptsnewptsnew HOMOCOORDptn;HOMOCOORDptn; /设置长方体设置长方体 pts0.x1;pts0.x1;pts0.y2;pts0.y2; pts0.z1;pts0.z1; pts0.w1;pts0.w1; pts1.x-1;pts1.x-1; pts1.y2;pts1.y2;pts1.z1;pts1.z1; pts1.w1;pts1.w1; pts2.x-1;pts2.x-1; pts2.y-2;pts2.y-2; pts2.z1;pts2.z1; pts2.w1;pts2.w1; pts3.x1;pts3.x1;pts3.y-2;pts3.y-2; pts3.z1;pts3.z1; pts3.w1;pts3.w1; pts4.x1;pts4.x1;pts4.y2;pts4.y2; pts4.z-1;pts4.z-1; pts4.w1;pts4.w1; pts5.x-1;pts5.x-1; pts5.y2;pts5.y2;pts5.z-1;pts5.z-1; pts5.w1;pts5.w1; 计算机学院 实体光照模型课程设计报告 1 pts6.x-1;pts6.x-1; pts6.y-2;pts6.y-2; pts6.z-1;pts6.z-1; pts6.w1;pts6.w1; pts7.x1;pts7.x1;pts7.y-2;pts7.y-2; pts7.z-1;pts7.z-1; pts7.w1;pts7.w1; /给定义面的指给定义面的指 针分配内存针分配内存; ; fn6;fn6; facesnewfacesnew PLANEfn;PLANEfn; /设置立方体各面设置立方体各面 faces0.v00;faces0.v00; faces0.v11;faces0.v11; faces0.v22;faces0.v22; faces0.v33;faces1.v04;faces0.v33;faces1.v04; faces1.v15;faces1.v15; faces1.v21;faces1.v21; faces1.v30;faces2.v05;faces1.v30;faces2.v05; faces2.v16;faces2.v16; faces2.v22;faces2.v22; faces2.v31;faces3.v06;faces2.v31;faces3.v06; faces3.v17;faces3.v17; faces3.v23;faces3.v23; faces3.v32;faces4.v07;faces3.v32;faces4.v07; faces4.v14;faces4.v14; faces4.v20;faces4.v20; faces4.v33;faces5.v07;faces4.v33;faces5.v07; faces5.v16;faces5.v16; faces5.v25;faces5.v25; faces5.v34;pts2Dnewfaces5.v34;pts2Dnew MYPOINTptn;MYPOINTptn; fori0;fori0; ifn;ifn; i+i+ facesi.kafacesi.ka 0.8;0.8; facesi.kdfacesi.kd 0.8;0.8; /定义点光源定义点光源 illuminant.xilluminant.x -100;-100; illuminant.yilluminant.y -100;-100; illuminant.zilluminant.z 100;100; IaIa 0.5;0.5; IpIp 0.5;0.5; /定义视线方向定义视线方向 VECTORVECTOR eye_vec;eye_vec; eye_vec.xeye_vec.x 0;0; eye_vec.yeye_vec.y 0;0; eye_vec.zeye_vec.z -1;-1; /定义光照方向定义光照方向 light_veclight_vec newnew VECTORfn;VECTORfn; /旋转调用旋转调用 RotateXx_angle;RotateYy_angle;/RotateXx_angle;RotateYy_angle;/定义并计算各个面的两条相交的向量定义并计算各个面的两条相交的向量 VECTORVECTOR vector62vector62 ; ; fori0;fori0; i6;i6; i+i+ vectori0vectori0 CalculateVectorptsfacesi.v0,CalculateVectorptsfacesi.v0, ptspts facesi.v1,facesi.v1, i i ; ; vectori1vectori1 CalculateVectorptsfacesi.v0,CalculateVectorptsfacesi.v0, ptspts facesi.v2,facesi.v2, i i ; ; /计算各个面的外法向量计算各个面的外法向量 faces0.nfaces0.n VecCrossvector00,VecCrossvector00, vector01vector01 ; ; fori0;fori0; i6;i6; i+i+ facesi.nfacesi.n VecCrossvectori0,VecCrossvectori0, vectori1vectori1 ; ; /各个面的可见性判定各个面的可见性判定 floatfloat cos_angle;cos_angle; fori0;fori0; i6;i6; i+i+ 计算机学院 实体光照模型课程设计报告 1 cos_anglecos_angle -1.0*InnerProductfacesi.n,-1.0*InnerProductfacesi.n, eye_vec/GetModulefacesi.n*GetModuleeye_vec;eye_vec/GetModulefacesi.n*GetModuleeye_vec; ifcos_angle0ifcos_angle0 facesi.flagfacesi.flag VISIABLE;VISIABLE; elseelse facesi.flagfacesi.flag UNVISIABLE;UNVISIABLE; /计算各个面的中心点计算各个面的中心点 fori0;fori0; ifn;ifn; i+i+ facesi.center.xfacesi.center.x ptsfacesi.v0.x+ptsfacesi.v1.x+ptsfacesi.v2.x+ptsfacesi.vptsfacesi.v0.x+ptsfacesi.v1.x+ptsfacesi.v2.x+ptsfacesi.v 3.x/4.0f3.x/4.0f ; ; facesi.center.yfacesi.center.y ptsfacesi.v0.y+ptsfacesi.v1.y+ptsfacesi.v2.y+ptsfacesi.vptsfacesi.v0.y+ptsfacesi.v1.y+ptsfacesi.v2.y+ptsfacesi.v 3.y/4.0f3.y/4.0f ; ; facesi.center.zfacesi.center.z ptsfacesi.v0.z+ptsfacesi.v1.z+ptsfacesi.v2.z+ptsfacesi.vptsfacesi.v0.z+ptsfacesi.v1.z+ptsfacesi.v2.z+ptsfacesi.v 3.z/4.0f3.z/4.0f ; ; facesi.center.wfacesi.center.w ptsfacesi.v0.w+ptsfacesi.v1.w+ptsfacesi.v2.w+ptsfacesi.vptsfacesi.v0.w+ptsfacesi.v1.w+ptsfacesi.v2.w+ptsfacesi.v 3.w/4.0f3.w/4.0f ; ; /计算各个面的光照方向计算各个面的光照方向 fori0;fori0; ifn;ifn; i+i+ light_vecilight_veci CalculateVectorilluminant,CalculateVectorilluminant, facesi.center,facesi.center, EOF;EOF; /计算各个面的漫反射光强计算各个面的漫反射光强 fori0;fori0; ifn;ifn; i+i+ facesi.Idfacesi.Id Ip*facesi.kd*-1*InnerProductfacesi.n,Ip*facesi.kd*-1*InnerProductfacesi.n, light_veci/GetModulefacesi.n*GetModulelight_veci;light_veci/GetModulefacesi.n*GetModulelight_veci; /计算各个面环境光反射光强计算各个面环境光反射光强 fori0;fori0; ifn;ifn; i+i+ facesi.Iefacesi.Ie facesi.ka*Ia;facesi.ka*Ia; /计算各个面光强计算各个面光强 fori0;fori0; ifn;ifn; i+i+ facesi.Ifacesi.I facesi.Id+facesi.Iefacesi.Id+facesi.Ie ; ; /平行投影变换平行投影变换 fori0;iptn;i+fori0;iptn;i+ ptsi.xptsi.x;ptsi.xptsi.x; ptsi.yptsi.y;ptsi.yptsi.y; / 窗口窗口- -视区变换视区变换 intint a a intvxr-vxl/wxr-wxl;intvxr-vxl/wxr-wxl; intint b b intvxl-wxl*a;intvxl-wxl*a; intint c c intvyt-vyb/wyt-wyb;intvyt-vyb/wyt-wyb; intint d d intvyb-wyb*c;intvyb-wyb*c; fori0;iptn;i+fori0;iptn;i+ pts2Di.xpts2Di.x a*ptsi.x+b;a*ptsi.x+b; 计算机学院 实体光照模型课程设计报告 1 pts2Di.ypts2Di.y c*ptsi.y+d;c*ptsi.y+d; / /图形显示图形显示 CClientDCCClientDC pdthis;pdthis; CPointCPoint p4;p4; forintforint j0;j0; j6;j6; j+j+ iffacesj.flagVISIABLEiffacesj.flagVISIABLE p0CPointpts2Dfacesj.v0.x,pts2Dfacesj.v0.y;p0CPointpts2Dfacesj.v0.x,pts2Dfacesj.v0.y; p1CPointpts2Dfacesj.v1.x,pts2Dfacesj.v1.y;p1CPointpts2Dfacesj.v1.x,pts2Dfacesj.v1.y; p2CPointpts2Dfacesj.v2.x,pts2Dfacesj.v2.y;p2CPointpts2Dfacesj.v2.x,pts2Dfacesj.v2.y; p3CPointpts2Dfacesj.v3.x,pts2Dfacesj.v3.y;p3CPointpts2Dfacesj.v3.x,pts2Dfacesj.v3.y; /dc.SelectObjectpOld;/dc.SelectObjectpOld; /把画笔设置为原来的把画笔设置为原来的 CBrushCBrush Brush;/DKGRAY_BRUSH,RGB64,64,64;Brush;/DKGRAY_BRUSH,RGB64,64,64; Brush.CreateSolidBrushRGBfacesj.I*255,facesj.I*255,facesj.IBrush.CreateSolidBrushRGBfacesj.I*255,facesj.I*255,facesj.I *255+40;*255+40; pd.SelectObjectpd.SelectObject pd.BeginPath;pd.BeginPath; pd.MoveTop0;pd.MoveTop0; forintforint i1;i4;i+i1;i4;i+ pd.LineTopi;pd.LineTopi; pd.LineTop0;pd.LineTop0; pd.EndPath;pd.EndPath; pd.FillPath;pd.FillPath; Brush.DeleteObject;Brush.DeleteObject; voidvoid CDraw3DView:RotateXintCDraw3DView:RotateXint angle/angle/绕绕 x x 轴逆时针旋转轴逆时针旋转 floatfloat aangle*PI/180;aangle*PI/180; forintforint i0;iptn;i+i0;iptn;i+ floatfloat y,z;y,z; yptsi.y;yptsi.y; zptsi.z;zptsi.z; ptsi.yy*cosa-z*sina;ptsi.yy*cosa-z*sina; ptsi.zy*sina+z*cosa;ptsi.zy*sina+z*cosa; voidvoid CDraw3DView:RotateYintCDraw3DView:RotateYint angleangle /绕绕 y y 轴逆时针旋转轴逆时针旋转 floatfloat bangle*PI/180;bangle*PI/180; forintforint i0;iptn;i+i0;iptn;i+ floatfloat x,z;x,z; xptsi.x;xptsi.x; zptsi.z;zptsi.z; ptsi.xx*cosb+z*sinb;ptsi.xx*cosb+z*sinb; ptsi.z-x*sinb+z*cosb;ptsi.z-x*sinb+z*cosb; VECTORVECTOR CDraw3DView:CalculateVectorHOMOCOORDCDraw3DView:CalculateVectorHOMOCOORD start,start, HOMOCOORDHOMOCOORD end,end, intint faceface /计算一个计算一个 3 3 维向量的函数维向量的函数, ,从从 startstart 点指向点指向 endend 点的属于点的属于 faceface 面的向量面的向量 VECTORVECTOR tempVector;tempVector; tempVector.xtempVector.x end.x-start.x;end.x-start.x; tempVector.ytempVector.y end.y-start.y;end.y-start.y; 计算机学院 实体光照模型课程设
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 煤矿安全知识
- 沃森徳吊篮施工方案
- 西安交通大学《大学数学(一)》2023-2024学年第二学期期末试卷
- 《江畔独行刘禹锡》课件
- 天津现代职业技术学院《普通化学Ⅱ》2023-2024学年第二学期期末试卷
- 长江职业学院《中国民族民间舞》2023-2024学年第二学期期末试卷
- 西南大学《医学机能学实验(Ⅱ)》2023-2024学年第二学期期末试卷
- 预分支电缆施工方案
- 美术轮滑写生课件
- 2025至2031年中国微型光刷治疗仪行业投资前景及策略咨询研究报告
- 中国普通食物营养成分表(修正版)
- 江苏省建筑与装饰工程计价定额(2014)电子表格版
- 不干胶基础知识
- 服务外包合同
- 立管改造施工方案
- FZ15—100型(C2型)翻车机压车梁故障分析
- 常用建筑材料容重表
- 智慧树知到《求职那点儿事-大学生就业指导》章节测试答案
- 土方工程投标文件
- 酒店流水单模版
- XR-WS1600型乳化液箱随机图册
评论
0/150
提交评论