1、计算机图形学计算机图形学 课程学习报告课程学习报告 项目题目:项目题目: 圆柱面图像纹理映射算法圆柱面图像纹理映射算法 目录目录 一、一、项目描述项目描述1 1.1圆柱面的建立和二维图像纹理的绑定圆柱面的建立和二维图像纹理的绑定1 1.2 坐标系的建立坐标系的建立1 二、项目需求二、项目需求1 2.1 几何构造的原理几何构造的原理.1 2.22.2、动画的设计、动画的设计 2 2.3 纹理的设计纹理的设计 . 2 2.3.1 纹理映射的原理纹理映射的原理 2 2.3.2 纹理定义纹理定义 2 三、项目设计三、项目设计3 3.13.1、窗口设计以及各项功能的实现、窗口设计以及各项功能的实现 3
2、3.1.1 窗口设计函数窗口设计函数 . 3 3.1.2 点表函数点表函数 4 3.1.3 面表函数面表函数 4 3.1.4 绘制圆柱绘制圆柱函数函数 . 6 3.1.5 透视变换函数透视变换函数 . 8 3.1.6 读入纹理函数读入纹理函数 . 8 3.1.7 背景函数背景函数 9 3.1.8 时间函数时间函数9 3.1.9 动画控制函数动画控制函数10 四、项目效果四、项目效果10 4.14.1 构造图形分析以及坐标系变换的效果构造图形分析以及坐标系变换的效果错 误!未定义书签。 五、五、项目总结项目总结11 六、六、参考文献参考文献12 1 一、项目描述项目描述 1.11.1、圆柱的建立
3、和二维图像纹理的绑定、圆柱的建立和二维图像纹理的绑定 以屏幕客户区中心为体心建立圆柱面的几何模型。 读入二维位图图像纹 理,将纹理绑定到圆柱上。使用材质慢反射率设置纹理颜色,光源颜色设置为白 色。使用 Phong 明暗处理绘制光照纹理圆柱面动画 1.21.2、坐标系的建立、坐标系的建立 1、自定义屏幕三维左手坐标,原点位于客户区中心,x 轴水平向右为正, y 轴垂直向上为正,z 轴指向屏幕内部, 2、建立三维用户右手坐标系O;x,y,z,原点 O 位于客户区中心,x 轴水平向右,y 垂直向上,z 轴指向读者。 二、二、项目需求项目需求 2.12.1、几何构造的原理几何构造的原理 圆柱面采用平面
4、四边形小面逼近,需要根据周向相邻圆柱面采用平面四边形小面逼近,需要根据周向相邻 2 2 个小面的法矢量计个小面的法矢量计 算平均法矢量。对于索引号(算平均法矢量。对于索引号(i i,j j)的顶点,其相邻顶点的索引号如图所示。的顶点,其相邻顶点的索引号如图所示。 图中箭头所示为每个小面的边矢量,俩个边矢量的叉积得到小面的法矢量图中箭头所示为每个小面的边矢量,俩个边矢量的叉积得到小面的法矢量 NiNi。 小面的平均法矢量小面的平均法矢量 N N 的计算公式为的计算公式为 N=N= 1 0i 1 0i Ni Ni 2.22.2、动画的、动画的设计设计 实现动画的函数实现动画的函数 void CMy
5、123054212View:OnPlay() i,j i, j+1 i-1,j+1 i-1,j i-1,j-1 i,j-1 圆柱面平均法矢量的计算 2 / TODO: Add your command handler code here bPlay=bPlay?FALSE:TRUE; if(bPlay)/设置定时器 SetTimer(1,150,NULL); Else KillTimer(1); 设定动画时间 void CTestView:OnTimer(UINT nIDEvent)/动画时间函数 / TODO: Add your message handler code here and/o
6、r call default Beta=5; tran.RotateY(Beta); Invalidate(FALSE); CView:OnTimer(nIDEvent); 2.32.3、纹理的、纹理的设计设计 2.3.1 2.3.1 纹理映射的原理纹理映射的原理 使用使用 MFCMFC 的资源标签页加载二维图像纹理,的资源标签页加载二维图像纹理,DDBDDB 位图的标识取为位图的标识取为 IDB_TEXTUREIDB_TEXTURE。将纹理读入二维数组中,将纹理图像绑定到圆柱面的侧面网格顶。将纹理读入二维数组中,将纹理图像绑定到圆柱面的侧面网格顶 点上。将图像纹理的颜色值作为材质漫反射率和环境光反射率,镜面反射光设点上。将图像纹理的颜色值作为材质漫反射率和环境光反射率,镜面反射光设 置为白光,使用置为白光,使用 PhongPhong 明暗处理绘制光照纹理圆柱面。明暗处理绘制光照纹理圆柱面。 2.3.2 2.3.2 纹理的定义纹理的定义 在在 CTestViewCTes