1 / 20
文档名称:

计算机图形学课程设计--计算机图形学基本算法.doc

格式:doc   大小:215KB   页数:20页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

计算机图形学课程设计--计算机图形学基本算法.doc

上传人:zl201163zl 2017/12/22 文件大小:215 KB

下载得到文件列表

计算机图形学课程设计--计算机图形学基本算法.doc

文档介绍

文档介绍:河南理工大学
万方科技学院
课程设计报告
2011 — 2012学年第二学期
课程名称计算机图形学
设计题目计算机图形学基本算法
演示系统设计
学生姓名
学号
专业班级
指导教师
2012 年 5 月 28 日
目录
目录 I
第1章 设计内容与要求 1
总体目标和要求 1
内容与要求 1
第2章总体设计 3
用Bresenham算法画直线 3
3
3
4
用Bresenham算法画圆 4
4
5
6
用梁友栋-Barsky算法进行线段裁剪 7
7
8
用Sutherland-Hodgman算法进行多边形裁剪 9
9
9
10
第3章详细设计 11
11
11
-Barsky算法进行线段裁剪 13
-Hodgman算法进行多边形裁剪 13
第4章功能实现 14
14
14
-Barsky算法进行线段裁剪 15
-Hodgman算法进行多边形裁剪 15
第5章总结 17
参考文献 18
设计内容与要求
总体目标和要求
目标:以图形学算法为目标,深入研究。继而策划、设计并实现一个能够表现计算机图形学算法原理的或完整过程的演示系统,并能从某些方面作出评价和改进意见。通过完成一个完整程序,经历策划、设计、开发、测试、总结和验收各阶段,达到:
巩固和实践计算机图形学课程中的理论和算法;
学****表现计算机图形学算法的技巧;
培养认真学****积极探索的精神。
总体要求:策划、设计并实现一个能够充分表现图形学算法的演示系统,界面要求美观大方,能清楚地演示算法执行的每一个步骤。
开发环境:Viusal C++ ,VC2005或其他你认为比较熟悉的环境。
内容与要求
实验分为五项内容。
直线的生成
内容:用Bresenham算法画直线
要求:
鼠标移动时,显示鼠标当前位置
显示判别式的计算过程和下一点的选择策略
记录生成点的坐标
图形生成过程可以重复进行
圆弧的生成
内容:用Bresenham算法画圆
要求:
鼠标移动时,显示鼠标当前位置
显示判别式的计算过程和下一点的选择策略
记录生成点的坐标
图形生成过程可以重复进行
橡皮筋技术实现
线段裁剪
内容:用梁友栋-Barsky算法进行线段裁剪
要求:
对于线段裁剪,线段被窗口的四条边裁剪的过程要显示出来
用橡皮筋的形式输入剪裁线段
多边形裁剪
内容:用Sutherland-Hodgman算法进行多边形裁剪
要求:
裁剪过程需先输入一多边形,然后用窗口四边裁剪的过程中要显示顶点增删过程。
用橡皮筋的形式输入剪裁线段
第2章总体设计
用Bresenham算法画直线

过各行各列像素中心构造一组虚拟网格线,按直线从起点到终点的顺序计算直线与各垂直网格线的交点,然后确定该列像素中与此交点最近的像素。

Bresenham直线算法是用来描绘由两点所决定的直线的算法,它会算出一条线段在 n 维光栅上最接近的点。这个算法只会用到较为快速的整数加法、减法和位元移位,常用于绘制电脑画面中的直线。是计算机图形学中最先发展出来的算法。
流程图如下:
输入直线的两个端点:(x1,y1)(x2,y2) 假设斜率r 在0^1之间,且x1<x2,y1<y2
dx = x2 –x1,dy = y2 –y1
d = dy * 2 - dx
x != x2 ?
d < 0
绘制完成
d += (dy - dx) * 2
d += dy * 2
画(x,y)对应的点
x++
y++




算法其实只考虑了斜率在 0 ~ 1 之间的直线,也就是与 x 轴夹角在 0 度到 45 度的直线。只要解决了这类直线的画法,其它角度的直线的绘制全部可以通过简单的坐标变换来实现。
用Bresenham算法画圆

与Bresenham 直线算法一样,其基本的方法是利用判别变量来判断选择最近的像素点,判别变量的数值仅仅用一些加、减和移位运算就可以计算出来。为了简便起见,考虑一个圆心在坐标