计算机图形学任务书
- 格式:doc
- 大小:37.50 KB
- 文档页数:5
《计算机图形学》任务书
一.课程设计的目的
通过课程设计,使学生具备通过具体的平台实现图形算法的设计、编程与调试的能力,完成对实验结果分析、总结及撰写技术报告的能力。
二.课程设计的要求
课程设计时间为第17周,地点:计412室,要求进实验室调试时必须有理论设计,调试通过后请辅导老师验收。
课程设计分组进行,一人一组,设计完成后每人提交一份课程设计报告,没有交报告的同学不予评定成绩。
本次课程设计备选题目有30个,每人选择一个提目,选定后不能更改。
每个题目的基本要求必须完成,其他可根据自身情况选做。
三.课程设计报告要求
1.设计概述
设计题目、设计要求、设计方案
2.软件设计
软件流程框图
3.调试后的正确程序清单
4.设计总结分析
5.完整的课程设计报告
【课程设计报告书内容要求】
每一小组要上交一份完整的设计方案,统一用A4纸打印,内容包括:
(1)实验报告封面(设计题目、小组成员)
(2)设计题目
(3)设计方案
(4)程序流程图(包括各个子系统和子过程的程序流程)
(5)程序清单,要有适当的注释
(6)程序运行结果分析
(7)系统不足及改进方案
四.课程设计选题(任选一题)
1、逐点比较法生成直线
内容:
(1)推导出该算法法绘制直线的原理;
(2)根据算法原理,设计相应算法;
(3)编写该算法的程序并实现;
功能要求:
(1)要求有两种方式进行输出:
1)模拟算法输出;
2)直接生成输出。
(2)采用屏幕或键盘输入坐标点;
2、椭圆Bresenham算法
内容:
(1)推导出Bresenham法绘制椭圆的算法原理;
(2)根据算法原理,设计相应算法;
(3)编写绘制完整椭圆的中点或Bresenham算法程序;
功能要求:
(1)要求有两种输入方式:根据输入点来生成椭圆并输出椭圆的长短轴;输入椭圆的长短轴来生成椭圆;
(2)椭圆的颜色为红色;
3、多边形有效边表填充算法
内容:
(1)设计边表与活性链表数据结构;
(2)根据多边形有效边表填充算法原理,设计相应算法;
功能要求:
(1)要求根据鼠标输入点来生成多边形;
(2)通过右键菜单显示填充效果,右键菜单有两个选项:未填充与填充;
(3)参考文[1]-6;
4、区域四向种子点填充算法
内容:
(1)掌握四向邻接点的访问方法;
(2)掌握堆栈的编程操作;
(3)掌握种子填充算法原理;
功能要求:
(1)区域为多边形,要求根据鼠标输入点来生成多边形;
(2)通过右键菜单实现填充效果;
(3)参考文[1]-8;
5.影线填充算法
内容:
(1)掌握影线填充算法原理;
(2)掌握边界数据的组织方法;
(3)掌握复合域转换为单值域的方法;
(4)掌握影线和边界求交的计算方法;
功能要求:
(1)要求根据输入屏幕点生成多边形区域边界;
(2)通过键盘按键实现填充一组斜线;
6、直线快速裁剪算法
内容:
(1)掌握窗口相对于直线的位置判断;
(2)掌握直线快速裁剪的原理;
(3)实现点一直线裁剪和多条直线直线裁剪;
功能要求:
(1)要求根据输入两点来生成直线;
(2)通过键盘按键实现裁剪;
7.多边形裁剪算法
内容:
(1)掌握多边形算法原理;
(2)掌握直线和窗口相交的判断条件;
(3)掌握直线和窗口交点处的参数值计算方法;
功能要求:
(1)要求根据输入屏幕点生成多边形和窗口;
(2)通过键盘按键实现裁剪;
8. 三视图算法
内容:
(1)掌握三视图生成原理;
(2)掌握主视图、俯视图和侧视图变换矩阵;
功能要求:
(1)缺省状态为正三棱柱的三维立体图;
(2)通过右键菜单显示三视图,右键菜单有两个选项:立体图与三视图;
9. 双三次Bezier曲面算法
内容:
(1)掌握双三次Bezier曲面定义;
(2)实现矩阵相关运算;
功能要求:
(1)给定16个三维控制点如下:
P00(200,20,0),P01(150,0,100),P02(50,-130,100),P03(0,-250,50);
P10(150,100,100),P11(100,30,100),P12(50,-40,100),P13(0,-110,100);P20(140,280,90),P21(80,110,120),P22(30,30,130),P23(-50,-100,150);P30(150,350,30),P31(50,200,150),P32(0,50,200),P33(-70,0,100);(2)实现键盘控制曲面旋转效果
10.立方体背面剔除消隐算法
内容:
(1)掌握背面剔除消隐算法原理;
(2)实现矢量点积与叉积运算;
(3)透视投影变换
功能要求:
(1)绘制立方体线框模型的透视投影图,使用背面剔除算法实现动态消隐;(2)通过右键菜单显示消隐效果,右键菜单有两个选项:未消隐与消隐;(3)使用键盘的上下左右控制键旋转消隐前后的立方体;
(4)单击左键增加视距,右击缩短视距;
11. 球体背面剔除消隐算法
内容:
(1)掌握背面剔除消隐算法原理;
(2)实现矢量点积与叉积运算;
(3)透视投影变换
(4)曲面体经纬线划分方法
功能要求:
(1)绘制球体线框模型的透视投影图,使用背面剔除算法实现动态消隐;(2)通过右键菜单显示消隐效果,右键菜单有两个选项:未消隐与消隐;(3)使用键盘的上下左右控制键旋转消隐前后的球体;
(4)单击左键增加视距,右击缩短视距;
12.立方体动态Z-Buffer隐面算法
内容:
(1)掌握Z-Buffer消隐算法原理;
(2)像素点动态深度计算;
功能要求:
(1)绘制立方体,使用Z-Buffer消隐算法实现消隐;
(2)使用键盘的上下左右控制键旋转消隐前后的立方体;13.参数法绘制凸多面体动态图形
内容:
(1)掌握参数法绘制三维图形的方法;
(2)掌握立体的数据结构形式并合理组织数据;
功能要求:
(1)绘制凸多面体(简易房子)的动态消隐图形;
(2)使用键盘的上下左右控制键旋转消隐前后的立方体;14.明暗处理立方体算法-Gouraud明暗处理
内容:
(1)掌握双线性光强插值方法;
(2)根据有效边表法绘制立方体每个面;
功能要求:
(1)绘制立方体,使用Gouraud明暗处理填充立方体各个面;(2)使用键盘的上下左右控制键旋转立方体;
15.明暗处理立方体算法-Phong明暗处理
内容:
(1)掌握双线性法向量插值方法;
(2)根据有效边表法绘制立方体每个面;
功能要求:
(1)绘制立方体,使用Phong明暗处理填充立方体各个面;(2)使用键盘的上下左右控制键旋转立方体;
16.球的光照模型算法
内容:
(1)掌握简单光照模型计算;
(2)球体绘制方法;
功能要求:
(1)绘制球体,给球体施加环境光、漫反射光和镜面反射光;(2)通过右键菜单控制显示效果,右键菜单安排如下:17.立方体纹理映射算法
内容:
(1)国际象棋棋盘纹理的制作;
(2)立方体表面纹理映射方法;
功能要求:
(1)绘制立方体,给立方体添加国际象棋棋盘纹理;
(2)使用键盘的上下左右控制键旋转立方体:
18.编程实现时钟运动
内容:
(1)掌握动画基本原理;
(2)实现平面几何变换;
功能要求:
(1)显示时钟三个时针,实现三根时针间的相互关系;
(2)通过右键菜单切换时钟背景与时针颜色;
19.实现皮球运动动画
内容:
(1)掌握动画基本原理;
(2)圆的绘制;
功能要求:
圆皮球从某竖直高度以横向速度抛出,落地,弹起,最终静止。
设弹起后所能上升的高度为上一次最大高度的4/5,实现运动轨迹动画;
20.实现太阳系运行动画
内容:
(1)掌握动画基本原理;
(2)实现三维几何变换及其组合;
功能要求:
(1)利用glutWireSphere创建太阳、地球、月亮三个球体;
(2)编写三维旋转变换矩阵实现“月亮绕着地球转,地球绕着太阳转”的效果;
21.动态造型系统
内容:
(1)掌握橡皮筋技术绘制直线、圆;
(2)掌握图形对象的拾取技术;
功能要求:
(1)实现橡皮筋技术绘制直线与圆;
(2)设置两种状态:绘图与编辑。
编辑状态下实现鼠标左键对直线与圆的拾取,按住鼠标左键可以拖动选择对象使其能平移;
22.点在凸多边形内外判定
内容:
掌握点在凸多边形内外判定原理与方法;
功能要求:
(1)使用鼠标指定一组点来定义凸多边形;
(2)使用鼠标指定测试点;
(3)根据测试结果输出“在内部”或“在外部”;
23.椭圆台球桌中台球碰撞模拟
内容:
掌握二维光线跟踪方法;
功能要求:
(1)构建一张椭圆形台球桌;
(2)使用鼠标指定椭圆内的一个随机起点S和方向c;
(3)台球从S点出发,沿方向c按直线前进,遇到球桌边缘返回并沿新方向前进,直到用户按某键中止;
参考文献
(1)计算机图形学实践教程,孔令德编著
(2)计算机图形学。