计算机图形学第三章

计算机图形学第三章

ID:44996143

大小:226.50 KB

页数:49页

时间:2019-11-07

计算机图形学第三章_第1页
计算机图形学第三章_第2页
计算机图形学第三章_第3页
计算机图形学第三章_第4页
计算机图形学第三章_第5页
资源描述:

《计算机图形学第三章》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、第三章二维图形生成技术本章重点掌握在光栅扫描显示器上绘制最基本的二维图形——线的原理和方法。主要包括:1.直线;2.二次曲线(圆弧、抛物线);3.自由曲线。难点:自由曲线的绘制方法3.1直线图形一.生成直线的DDA算法无论是光栅扫描显示器还是绘图机,都可以看成有一个网格(离散单元组成的矩阵)存在,对显示器来说每一个像素就是一个网格点,对绘图机来说笔每走一步的终点也可以看成是一个网格的结点。在光栅扫描显示器上表示一条直线,就是要用最靠近直线的一些网格点来代表这一直线。这个网格就构成屏幕和绘图机纸张

2、的一个坐标系,相邻两个网点的距离取为1,每个网格点的坐标均取整数。p1p2假设直线的起点坐标为P1(x1,y1),终点坐标为P2(x2,y2)x方向的增量为△x=x2-x1;y方向上增量为△y=y2-y1直线的斜率为k=△y/△x当△x>△y时,让x从x1到x2变化,每步递增1,那么,x的变化可以表示为xi+1=xi+1y的变化可以表示为yi+1=yi+k用上式可求得图中直线P1P2和y方向网格线的交点,但显示时要用象素点(图中的网格结点)耒表示,所以要用舍入的办法耒找到最靠近交点处的象素点,并

3、用其耒表示直线段。这个方法称之为数字微分分析法,简称DDA。算法描述如下:intx1,y1,x2,y2;intx;floatdx,dy,k,y;dx=x2-x1dy=y2-y1k=dy/dxx=x1y=y1for(x=x1;x<=x2;x++){putpixel(x,(int)(y),pixelcolor)y=y+k}该算法仅适用于|k|≤1的情况,而当|k|>1时,则需将x和y的位置交换。二.生成直线的Bresenham算法设k=△y/△x,先讨论0≤k≤1的情况:若以屏幕上x方向的象素点作为

4、横坐标,则有xi+1-xi=1而yi+1=yi+k(xi+1-xi)=yi+k(1)设b点是直线上的点,其坐标是(xi+1,yi+1),显然,该点只能用屏幕上的象素点c或d耒表示。设a为c、d的中点,若b在a的上面则应取d,否则应取c。关键问题:(1)如何判断b是在a的上面还是下面,设置一个标志变量e;(2)如何建立标志变量e的递推公式。xiXi+1Yi'Yi+1Yi+1'bacd设e(xi+1)=yi+1-yi′-0.5(2)若b在a的下面,则有e(xi+1)<0若b在a的上面,则有e(xi+

5、1)>0由图中可知:当e(xi+1)≥0时y′i+1=yi′+1e(xi+1)<0时y′i+1=yi'递推:由(2)、(3)式可得:e(xi+2)=yi+2-y′i+1-0.5=yi+1+k-y′i+1-0.5yi+1-yi′-0.5+k-1e(xi+1)≥0yi+1-yi′-0.5+ke(xi+1)<0e(xi+1)+k-1e(xi+1)≥0e(xi+1)+ke(xi+1)<0==(3)算法描述如下:△x=x2-x1△y=y2-y1k=△y/△xe=k-0.5x=x1y=y1for(i=1;i

6、<=△x;i++){putpixel(x,y,pixelcolor)x=x+1if(e<0)e=e+kelse{y=y+1;e=e+k-1}}讨论:斜率不同时:以上讨论的是0≤k≤1的情况,即0<△y<△x的情况;若是0<△x<△y的情况,则需将x和y的位置交换。方向不同时:若△y<0或△x<0时,要将算法中的y=y+1换成y=y-1、x=x+1换成x=x-1。3.2二次曲线一.Bresenham画圆算法该算法以点(0,r)为起点,按顺时针方向生成圆时,相当于在第一象限内,所以y是x的单调递减函

7、数。从圆上任一点出发,按顺时针方向生成圆时,为了最佳地逼近该圆,对于下一个象素的取法只有三种可能的选择,即右方象素(H)、右下角象素(D)、下方象素(V)。(0,r)yx(xi,yi)(xi,yi)(xi+1,yi)H(xi,yi-1)V(xi+1yi-1)D设△i=(xi+1)2+(yi-1)2-r2若△i<0,则右下角点在圆内,此时只可能取象素点H或D设δ1=|(xi+1)2+(yi)2-r2|-|(xi+1)2+(yi-1)2-r2|若δ1<0取Hδ1>0取Dδ1=0二者距离相等,规定取右

8、方象素H并可将δ1进一步化简成δ1=2(△i+yi)-1若△i>0,则右下角点在圆外,此时只可能取象素点D或V设δ2=|(xi+1)2+(yi-1)2-r2|-|(xi)2+(yi-1)2-r2|若δ2<0取Dδ2>0取Vδ2=0二者距离相等,规定取右下角象素D并可将δ2进一步化简成δ2=2(△i-xi)-1若△i=0,此时圆上点正好是D,即取D。据此,可导出简单增量算法的递推公式:若设当前圆上点所在的象素为第i个象素,下一个新象素为第i+1个象素,则新象素的坐标及△值的递推公式是:新象素为H时

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

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

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