计算机图形学实验报告2
更新时间:2023-10-02 08:09:01 阅读量: 综合文库 文档下载
计算机图形学实验报告
实验二、 三维网格模型光顺 一、实验目的与基本要求:
(1)掌握Obj文件的读入;
(2)利用给定的数据结构类,建立读入网格模型数据结构; (3)利用OpenGL类库,对三维模型进行绘制;
(4)利用OpenGL类库,增加采用鼠标交互方式对三维模型进行旋转、放缩、平移等操作;
(5)实现Laplacian方法的三维模型光顺操作,并观察三维模型光顺过程; 二、实验设备(环境)及要求
1. 操作系统:Windows XP 或 Windows 7
2. 编程环境:Microsoft Visual Studio 2010,OpenGL 库函数 3. 界面框架:Win32,MFC,QT选择其中一种
三、实验内容与步骤
实验分为以下几个步骤:
(1)掌握Obj文件的读入顶点和面的个数; (2)建立数组存储点的坐标及面上的点数;
(3)存储顶点的邻接面数,并记录每个顶点周围的邻接点 (4)计算每个面的法向
利用OpenGL类库,增加采用鼠标交互方式对三维模型进行旋转、放缩、平移等操作; (5)利用面法向及顶点坐标进行绘制几何体 (6)实现鼠标对物体旋转、平移、缩放的算法
(7)实现Laplacian方法的三维模型光顺操作,并观察三维模型光顺过程;
四、实现过程说明及成果展示:
(1)掌握Obj文件的读入顶点和面的个数;
由于obj文件的存储形式是
v x1 x2 x3; …
f v1 v2 v3; …
这种形式,所以在记录点和面的数量时,只需按行读取,然后再判断首字母是v/f即可 实现代码如下:
(2)建立数组存储点的坐标及面上的点数; 数组的大小由点数和面数决定,点数组和面数组均由0开始记录,故后面再用面对应点的时候,由于面上点是从1开始记录,故需要减1然后使用,代码如下:
(3)存储顶点的邻接面数,并记录每个顶点周围的邻接点
记录点邻接面的是新建一个数组,在读面的时候,将该面的序号存入对应点的数组中,然后再在每个面上取一点,记录到点的邻接点数组中,在每个面上取得的点为向外右手方向的下一个点,实现代码如下:
(4)计算每个面的法向
计算面的法向方式为面上右手方向上的两向量的叉乘得到,即
所用代码为:
(8)利用面法向及顶点坐标进行绘制几何体 用法向绘制的方式是
先用glNormal3fv(v)指出面的法向;再用glVertex3f传入面上点的坐标;由于我将glNormal3fv(v)中写在算法向所以我直接对此直接调用即可,代码如下:
(9)实现鼠标对物体旋转、平移、缩放的算法
平移:利用Transform函数和键盘事件来改变参数,w,s,a,d分别控制绘制的kitty猫的上下左右的移动:实现代码如下:
旋转:利用gllookat();函数设定了观察角度,并用鼠标事件改变参数,用实现观察视角的变化实现物体的旋转,代码如下:
缩放:运用glScalef方法和键盘事件改变参数,实现物体的放大和缩小,代码如下:
(10)实现Laplacian方法的三维模型光顺操作,并观察三维模型光顺过程; Laplacian方法的原理是利用目标点与其所有邻接点平均后的点的差向量,对目标点的坐标进行变换的过程,具体方法是:
①建立每个点的邻接顶点数组,存储每个点的邻接点 ②对每个顶点的邻接点进行求平均,即将邻接点的坐标求和后除以邻接点个数,从而得到邻接平均点
③得到优化向量
优化向量 = 邻接平均点 - 目标点
④设定优化度参数λ,得到优化后的新坐标
新坐标 = 目标点 + λ*优化向量
在程序中,对于第num个顶点,我设定的变量为 目标点vArr
邻接平均点v0 优化向量l
新坐标数组vNewArr
具体代码如下:
五、结果展示及说明
计算面法向后直接绘制(未光顺):
光顺进行一次后
光顺多次后
利用点绘制结果为
正在阅读:
计算机图形学实验报告210-02
工业中心综合实训(10.5.4)04-30
MODIS资料在2005年陕西春旱过程监测中的应用08-21
f - 4鬼怪战机03-24
嫩芽作文650字07-08
热能与动力工程机械制造工艺学复习题04-19
abaqus6.13+vs2012+Intel - Fortran - 2013 - (abaqus6.13中For04-08
办公室主任自我批评03-21
氧传感器的检测及故障案例11-25
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 图形
- 实验
- 计算机
- 报告