2022-2023-2
《计算机图形学原理实践》
实验报告
实验名称
:
球面地理划分线框模型消隐
姓 名
:
学 号
:
专业班级
:
实验时间
:
西南科技大学计算机科学与技术学院
2022-2023-2
一、实验目的
(1) 掌握球面的地理划分法。
(2)掌握球面的数据结构。
(3)掌握球面线框模型的消隐。
二、实验步骤
1.实验要求:
(1)自定义屏幕三维右手坐标系,原点位于客户区中心,x 轴水
平向右为正,y 轴垂直向上为正,z 轴指向屏幕内部。
(2)建立三维用户右手坐标系{O;x,y,z},原点 O 位于客户区中
心,x 轴水平向右为正,y 轴垂直向上为正,z 轴指向读者。
(3)以用户坐标系的原点为正二十面体的体心建立三维几何模
型。对每个 表进行递归划分后,将递归点拉到球面上构造球面。
(4)使用三维旋转变换矩阵计算正二十面体线框模型围绕三维坐
标系原点变换前后的顶点坐标。
(5)使用双缓冲技术在屏幕坐标系内绘制球面线框模型消隐后的
二维透视投影图。
(6)使用键盘方向键旋转球面线框模型。
(7)使用工具条上的“动画”图标按钮播放或停止球面线框模型的
旋转动画。
(8)单击鼠标左键增加视径,单击鼠标右键缩短视径。
2.实验设计
(1)读入球面的顶点表
使用 CtestView 类添加成员函数 DrawObject(),对每个三角形表面
调用递归函数 SubDivide()进行细分
2022-2023-2
(2)递归函数
CtestView 类的成员函数 SubDivde 计算三角形的三条边的中点并
调用 Normalize 函数将中点拉到球面上
(3)球化函数
CtestView 类中的 normalize 函数,将每个三角形中点的位置矢量
单位化后再乘以球的半径进行球面化处理
(4)绘制三角形
CtestView 类中成员函数 rawTriangle 消隐后使用直线段绘制透视
投影后每个三角形小面的线框模型。
三、实验结果
1.窗口正中间显示一个球面模型