[教育学]图形学第3章

[教育学]图形学第3章

ID:36302533

大小:483.00 KB

页数:60页

时间:2019-05-08

[教育学]图形学第3章_第1页
[教育学]图形学第3章_第2页
[教育学]图形学第3章_第3页
[教育学]图形学第3章_第4页
[教育学]图形学第3章_第5页
资源描述:

《[教育学]图形学第3章》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第3章基本图形 生成算法2021/8/5计算机图形学演示稿岳俊华制作(C)2物体的形状和颜色可用象素矩阵或直线线段和多边形填充区域等基本几何结构来描述。点和直线段是最简单的几何成分,其它可供构造图形的输出图元有圆及其它圆锥曲线、二次曲面和多边形填充区域以及字符串等。而二维图形的生成是三维图形生成的基础,研究计算机生成图形需先从二维图形的生成开始。下面将讨论一些基本二维图元生成技术和算法,以光栅图形系统的扫描转换方法为基础。2021/8/5计算机图形学演示稿岳俊华制作(C)3最基本的图形显示方式是直线方式。实际上,无论什么复杂图形,它们无非是由直

2、线段和曲线段组成。而对于曲线及各种复杂的图形,可以将其离散成许多小直线段,连接各直线来逼近欲生成的曲线或其它复杂图形,所以一般图形都可以看成是由直线段组成。因此,直线段生成的质量好坏与速度快慢将直接影响整个图形生成的质量和速度。在光栅显示器上显示图形是将线段上所有象素点亮的过程。如果已知直线段两个端点,可以有很多种不同的数学方法来决定应改变在两端点之间的那些象素的亮度值才能显示出两点间的直线。在绘图仪上绘直线段,主要决定X、Y方向上的位移量,这些算法之间主要区别是判别和生成x、y增量的过程和方法的不同。2021/8/5计算机图形学演示稿岳俊华制

3、作(C)41.点的生成点是图形中最基本的图素,直线、曲线以及其它的图元都是点的集合。在几何学中,一个点既没有大小,也没有维数,点只是表示坐标系统中一个位置。在计算机图形学中,点是用数值坐标来表示的。在直角坐标系中点由(x,y)两个数值组成的坐标表示。在输出设备上输出一个点,就要把应用程序中的坐标信息转换成所用输出设备的相应位置。对于一个CRT监视器来说,输出一个点就是要在指定的屏幕位置上打开电子束,使该位置上的荧光点亮。在PC机中,点亮屏幕上一个点是由BIOS控制完成的,各种程序语言中都有描点语句。例如C语言为putpixel(x,y,colo

4、r)。2021/8/5计算机图形学演示稿岳俊华制作(C)5直线是点的集合,在几何学中直线被定义为两个点之间的最短距离。也就是说一条直线是指所有在它上面的点的集合。直线是一维的,即它们具有长度但没有面积。直线可以向一个方向及其相反的方向无限伸长,这不是计算机图形学中所需要的,在图形学中研究的对象是直线段。已知线段的起点坐标(x1,y1),终点坐标(x2,y2),这两点就确定了一条线段。一般来讲,任何图形输出设备都能准确地画出水平线X和垂直线Y,或对角线,但要画出一条准确斜线不是件容易的事。在光栅系统中,线段通过象素绘制,水平和垂直方向的台阶大小受

5、象素的间隔限制。这就是说,必须在离散位置上对线段取样,并且在每个取样位置上决定距线段最近的象素,画一条直线实际上就计算出来一系列与该线靠近的象素。3.1生成直线的常用算法(0,0)_(5,2)K=0.4(0,0)-(1,0)-(2,1)-(3,1)-(4,2)-(5,2)X=1,y1=y0+k*(x1-x0)=y0+k=0+0.4=0.4Round(y)=round(0.4)=0Y2=y1+k=0.4+0.4=0.8round(y2)=1均假定所画直线的斜率k∈[0,1]。3.1.1DDA画线算法DDA(DigitalDifferentialA

6、nalyzer)画线算法也称数值微分法,是一种增量算法。它的算法实质是用数值方法解微分方程,通过同时对x和y各增加一个小增量,计算下一步的x、y值。已知一条直线段L(P0,P1),其端点坐标为:P0(x0,y0),P1(x1,y1)。可计算出直线的斜率k为:假定端点坐标均为整数,取直线起点P0(x0,y0)作为初始坐标。画线过程从x的左端点x0开始,向x右端点步进,每步x递增1,y递增k(即直线斜率);取像素点(x,round(y))作为当前点的坐标。2021/8/5计算机图形学演示稿岳俊华制作(C)9DDA直线生成算法的伪语言描述如下:beg

7、inifabs(x2﹣x1)≥abs(y2﹣y1)thenlenght﹦abs(x2﹣x1)elselenght﹦abs(y2﹣y1)endif△x﹦(x2﹣x1)/lenght△y﹦(y2﹣y1)/lenghtx﹦x1y﹦y1k﹦1while(k≤lenght)putpixel(x,y)x﹦x﹢△xy﹦y﹢△yk﹦k﹢1endwhileendDDA方法计算象素位置要比直接使用代数方程快。它利用光栅特性消除了代数方程中的乘法,而在X和Y方向使用合适的增量来逐步沿线段的路径计算各象素位置。但浮点增量的连续迭加中取整误差的积累会使长线段所计算的象素

8、位置偏离实际线段,而且算法中的取整操作和浮点运算仍然十分耗时。2021/8/5计算机图形学演示稿岳俊华制作(C)10DDA直线绘制的C++实现void

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。