欢迎来到天天文库
浏览记录
ID:35618499
大小:420.89 KB
页数:19页
时间:2019-04-02
《计算机图形学课程设计--图形学基础图形处理实现》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、计算机图形学课程设计课程名称:计算机图形学院部名称:计算机学院专业班级:软件工程0802姓名:夏钦锋学号:0120810680226指导老师:岑丽2010年05月18图形学基础图形处理实现1.引言:1.1需要实现的内容:1)给出系统框架。2)调用画点的函数,分别用DDA、中点Bresenham算法和改进Bresenham算法绘制直线和中点算法绘制直线、用不同的算法绘制圆和椭圆,并各自比较算法精度与效率的差别。3)实现二维图形的变换。(包括平移,放缩,旋转,错切以及复合变换)4)运用所学的区域填充算法实现区域填充。5)运用所学算法实现线段裁剪以及多边形裁剪(多边形裁剪为可选)。
2、6)自己实现其它附加以及需要完善的功能。1.2设计目的:灵活运用客商所学的内容,掌握画点函数,实现二维图形的变换,区域填充等。了解图形系统的框架及其涉及的软件和硬件技术;了解图形学的基本问题,掌握图形学的基本概念,方法与算法;对与图形相关的应用以及当前的研究热点有一个初步认识;具有一定实践体会和相关的编程能力.2.正文2.1图形学概述计算机图形学(ComputerGraphics)是研究怎样用数字计算机生成、处理和显示图形的一门学科。图形的具体应用范围很广,但是从基本的处理技术看只有两类,一类是线条,如工程图、地图、曲线图表等;另一类是明暗图,与照片相似。为了生成图形,首先要
3、有原始数据或数学模型,如工程人员构思的草图,地形航测的判读数据,飞机的总体方案模型,企业经营的月统计资料等等。这些数字化的输入经过计算机处理后变成图形输出。下面是几个图形学中的基本概念:计算机图形:用计算机生成、处理和显示图形的学科;由几何数据和几何模型,利用计算机进行显示并存储,并可以进行修改、完善以及有关操作的过程;18图象处理:将客观世界中原来存在的物体影象处理成新的数字化图象的相关技术;如CT扫描、X射线探伤等;模式识别:对所输入的图象进行分析和识别,找出其中蕴涵的内在联系或抽象模型;如邮政分检设备、地形地貌识别等;计算几何:研究几何模型和数据处理的学科,讨论几何形体
4、的计算机表示、分析和综合,研究如何方便灵活、有效地建立几何形体的数学模型以及在计算机中更好地存贮和管理这些模型数据;2.2开发运行环境和语言:开发环境:visualbasic开发语言:VB3编程原理3.1画点函数3.1.1DDA算法:假定直线的起点、终点分别为:(x0,y0),(x1,y1),且都为整数。(Xi+1,Yi+k)(Xi,Int(Yi+0.5))(Xi,Yi)。。。。基本思想(1)已知过端点P0(x0,y0),P1(x1,y1)的直线段L:y=kx+b(2)直线斜率为:k=(y1-y0)/(x1-x0)(3)Xi+1=Xi+ε*ΔX18Yi+1=Yi+ε*ΔY其中
5、,ε=1/max(
6、ΔX
7、,
8、ΔY
9、)max(
10、ΔX
11、,
12、ΔY
13、)=
14、ΔX
15、(
16、k
17、<=1)
18、ΔY
19、(
20、k
21、>1)(4)
22、k
23、<=1时:Xi+1=Xi+(或-)1Yi+1=Yi+(或-)k
24、k
25、>1时:Xi+1=Xi+(或-)1/kYi+1=Yi+(或-)1这种方法直观,但效率太低,因为每一步需要一次浮点乘法和一次舍入运算。3.1.2中点Bresenham算法Bresenham直线算法是用来描绘由两点所决定的直线的算法,它会算出一条线段在n维光栅上最接近的点。这个算法只会用到较为快速的整数加法、减法和位元移位,常用于绘制电脑画面中的直线。是计算机图形学中最先发展出来的算法。经
26、过少量的延伸之后,原本用来画直线的算法也可用来画圆。且同样可用较简单的算术运算来完成,避免了计算二次方程式或三角函数,或递归地分解为较简单的步骤。Bresenham直线算法描绘的直线。假设我们需要由(x0,y0)这一点,绘画一直线至右下角的另一点(x1,y1),x,y分别代表其水平及垂直座标。在此我们使用电脑系统常用的座标系,即x座标值沿x轴向右增长,y座标值沿y轴向下增长。 因此x及y之值分别向右及向下增加,而两点之水平距离为x1−x0且垂直距离为y1-y0。由此得之,该线的斜率必定介乎于1至0之间。而此算法之目的,就是找出在x0与x1之间,第x行相对应的第y列,从而得出
27、一像素点,使得该像素点的位置最接近原本的线。 对于由(x0,y0)及(x1,y1)两点所组成之直线,公式如下: 因此,对于每一点的x,其y的值是18 因为x及y皆为整数,但并非每一点x所对应的y皆为整数,故此没有必要去计算每一点x所对应之y值。反之由于此线之斜率介乎于1至0之间,故此我们只需要找出当x到达那一个数值时,会使y上升1,若x尚未到此值,则y不变。至于如何找出相关的x值,则需依靠斜率。斜率之计算方法为m=(y1−y0)/(x1−x0)。由于此值不变,故可于运算前预先计算,减少运算次数。3
此文档下载收益归作者所有