二维图形生成技术ppt培训课件

上传人:aa****6 文档编号:57420703 上传时间:2018-10-21 格式:PPT 页数:49 大小:228.50KB
返回 下载 相关 举报
二维图形生成技术ppt培训课件_第1页
第1页 / 共49页
二维图形生成技术ppt培训课件_第2页
第2页 / 共49页
二维图形生成技术ppt培训课件_第3页
第3页 / 共49页
二维图形生成技术ppt培训课件_第4页
第4页 / 共49页
二维图形生成技术ppt培训课件_第5页
第5页 / 共49页
点击查看更多>>
资源描述

《二维图形生成技术ppt培训课件》由会员分享,可在线阅读,更多相关《二维图形生成技术ppt培训课件(49页珍藏版)》请在金锄头文库上搜索。

1、第四章 二维图形生成技术,4.1 直线图形,y,x,1,2,3,4,n,1,2,3,4,m,p1,p2,一. 生成直线的 DDA 算法假设 直线的起点坐标为P1 (x1,y1),终点坐标为P2 (x2,y2) x方向的增量为 xx2x1 ;y方向上增量为 yy2y1 直线的斜率为 kyx当 xy 时,让 x 从 x1 到 x2 变化,每步递增 1, 那么,x 的变化可以表示为 xi+1xi1 y 的变化可以表示为 yi+1yik用上式可求得图中直线 P1P2 和 y 方向网格线的交点,但显示时要用象素点(图中的网格结点)耒表示,所以要用舍入的办法耒找到最靠近交点处的象素点,并用其耒表示直线段。

2、这个方法称之为数字微分分析法,简称DDA。,算法描述如下:int x1,y1,x2,y2;int x;float dx,dy,k,y;dxx2 x1dyy2 y1kdydxxx1yy1for (xx1;xx2;x) putpixel (x,(int)(y),pixelcolor )yyk该算法仅适用于k1 的情况,而当k1时,则需将 x 和 y 的位置交换。,二. 生成直线的 Bresenham 算法设 kyx , 先讨论 0k1的情况:若以屏幕上x方向的象素点作为横坐标,则有 xi+1xi1而 yi+1yik(xi+1xi)yik (1)设 b 点是直线上的点,其实际坐标是(xi+1,yi+

3、1)。 在屏幕上是用象素点c 还是d 耒表示?设 a 为c、d 的中点,判断。 关键问题:(1) 如何判断 b是在 a 的上面还是下面,设置一个标志变量 e ;(2) 如何建立标志变量 e 的递推公式。,xi,Xi+1,Yi,Yi+1,Yi+1,b,a,c,d,设 e (xi+1)yi+1yi0.5 (2)若b在a的下面,则有 e (xi+1)0由图中可知:当e (xi+1)0时 yi+1yi1e (xi+1) 0时 yi+1yi递推:由(2)、(3)式可得:e (xi+2)yi+2yi+10.5yi+1kyi+10.5yi+1yi0.5k1 e (xi+1)0yi+1yi0.5k e (xi

4、+1) 0e (xi+1)k1 e (xi+1)0e (xi+1)k e (xi+1) 0,=,=,(3),算法描述如下:xx2x1yy2y1kyxe k0.5 (若起始点在象素中心,则e的初始值为0.5)xx1y=y1for ( i1;ix;i)putpixel (x,y,pixelcolor)xx1if (e0) eekelse yy1; eek1 ,讨论: 斜率不同时:以上讨论的是 0 k 1 的情况,即 0yx 的情况;若是 0xy 的情况,则需将 x 和 y 的位置交换。 方向不同时:若y0或x0时,要将算法中的 yy1换成yy1、 xx1换成xx1。,4.2 二次曲线 一、圆的生成

5、算法即是找出逼近圆的一组象素,按扫描线顺序,对这些象素进行写操作。下面仅以圆心在原点的圆为例,讨论圆的生成算法。1. 圆弧扫描算法x2 + y2 = r2,y = Sqrt(r2 - x2) 在一定范围内,每给定一x值,可得一y值。 当x取整数时,y须圆整。 缺点:浮点运算,开方,圆整,不均匀。2. 角度DDA法x = x0 + rcosy = y0 + rsin,dx =- rsinddy = rcosdxn+1 =x n + dxy n+1 =y n + dyxn+1 =x n - (y n - y 0 )dy n+1 =y n + (x n - x 0 )d显然,确定x,y的初值及d值后

6、,即可以增量方式获得圆周上的坐标,然后取整可得象素坐标。但要采用浮点运算、乘法运算。,3. Bresenham画圆算法该算法以点(0,r)为起点,按顺时针 方向生成圆时,相当于在第一象限内, 所以 y 是 x 的单调递减函数。从圆上任一点出发,按顺时针方向 生成圆时,为了最佳地逼近该圆,对于 下一个象素的取法只有三种可能的选择, 即右方象素(H)、右下角象素(D)、下方 象素(V)。,(0,r),y,x,(xi,yi),(xi ,yi),(xi+1 ,yi),H,(xi ,yi-1),V,(xi+1 yi-1),D,设 i(xi+1)2(yi-1)2r2 若i0,则右下角点在圆内,此时只可能取

7、象素点 H 或 D 设1(xi+1)2(yi)2r2(xi+1)2(yi-1)2r2若 10 取H10 取D10 二者距离相等,规定取右方象素 H并可将1进一步化简成 12(iyi)1 若i0,则右下角点在圆外,此时只可能取象素点 D 或 V 设2(xi+1)2(yi-1)2r2(xi)2(yi-1)2r2若20 取D20 取V20 二者距离相等,规定取右下角象素D并可将2进一步化简成 22(ixi)1 若i0,此时圆上点正好是 D,即取 D。,导出简单增量算法的递推公式:若设当前圆上点所在的象素为第i个象素,下一个新象素为第i+1个象素,则新象素的坐标及值的递推公式是:新象素为H时:xi+1

8、xi1yi+1yii+1 i2xi+11新象素为D时:xi+1xi1yi+1yi1i+1 i2xi+12yi+12新象素为V时:xi+1xiyi+1yi1i+1 i2yi+11,算法描述如下: x0; yr;delta2*(1r); while(y0) putpixel(x,y,pixelco1or); if(delta0) delta12*(deltay)1,if(deltal=0) direction1;else direction2;else if(delta0) delta22*(delta一x)1;if(delta20) direction2;else direction3;else

9、direction 2;,switch(direction) case1: x; 取Hdelta2x1;break:case2: x; 取Dy;delta2*(xy1);break;case3: y; 取Vdelta(2*y1);break; * switch * whi1e *,二. 抛物线的参数拟合方法 抛物线的参数向量方程:Q(t)=at2 + bt + c (0 t 1) 对应的参数方程:x(t)=axt2 + bxt + cxy(t)=ayt2 + byt + cy 抛物线的参数方程的系数:cx = x0cy = y0bx = 2(x1 x0)by = 2(y1 y0)ax = x2

10、 2x1 + x0ay = y2 2y1 + y0,(0 t 1),抛物线的重要性质:1. 曲线在 t = 1/2 处的切线平行于 P0P2。2. Pm点为 P1C 直线的中点。 采用P0、Pm、P2三点构造抛物线时的参数方程的系数:cx= x0cy= y0bx= 4xm x2 3x0by= 4ym y2 3y0ax= 2(x2 2xm+x0)ay= 2(y2 2ym+y0) 结论:P0 、 P1 、 P2与P0 、 Pm 、 P2所构成的抛物线是等价的,二者确定参数方程系数的公式不同,后者产生的曲线通过给定的三点。,4.3 自由曲线 一.概述曲线:规则曲线可用曲线方程式表示的曲线。不规则曲线

11、不能确切给出描述整个曲线的方程,而是由从实际测量中得到的一系列离散数据点采用曲线拟合的方法来逼近的。这类曲线也称之为自由曲线。曲线的表示方法:1. 直角坐标曲线 显式 y = f(x) 隐式 f(x,y) = 0 2. 极坐标曲线 =()3. 参数坐标曲线 x = x(t) ; y = y(t) 参变量的规格化曲线的绘制方法:离散,用小直线段来逼近曲线。,型值点:是指通过测量或计算得到的曲线上少量描述曲线 几何形状的数据点。控制点:是指用来控制或调整曲线形状的特殊点,曲线本 身不一定通过控制点。插值和逼近:这是曲线设计中的两种不同方法。插值设计 方法要求建立的曲线数学模型,严格通过已知的每一个

12、型值点。 而逼近设计方法建立的曲线数学模型只是近似地接近已知的型 值点(控制点)。拟合:是指在曲线的设计过程中,用插值或逼近的方法使 生成的曲线达到某些设计要求。,连续性:C0连续(0阶参数连续)前一段曲线的终点与后一段 曲线的起点相同。C1连续(一阶参数连续) 两相邻曲线段的连接点处 有相同的一阶导数。C2连续(二阶参数连续) 两相邻曲线段的连接点处 有相同的一阶导数和二阶导数。,二 . 抛物线参数样条曲线这是根据给定的型值点列,以抛物线作为基本曲线拟合生 成的自由曲线。特点:采用插值方法生成,曲线通过每个型值点。给定型值点列 Pi( i= 1, 2, , n ),按抛物线的参数拟合方法,

13、每经过相邻三点可作一段抛物线,共可作出 n2 条。,一般情况下,每两段曲线之间的搭接区间,两段抛物线是 不可能重合的。,但对于拟合曲线来说,整个型值点列必须用一条光滑的曲 线连接起来。解决的办法:将两段曲线之间的搭接区间采用加权合成的 方法合成一条曲线。也就是说,由 Pi 、 Pi+1 、 Pi +2 、 Pi+3 这 四个型值点采用加权合成的方法可以确定 Pi+1和 Pi+2 之间的一 段曲线。,结论:对于给定的型值点列 Pi( i= 1, 2, , n ), 从 P1 开始依次每取 四个型值点即可画出一段曲线,直到 Pn 为止。按这样的方法,在Pi( i= 1, 2, , n )个型值点列

14、中只能得到 n3 段曲线,但 n 个型值点列之间应有 n1 个区段。如何得到首、末两个区段的曲线?,解决的办法:添加“端点条件”(也称“边界条件”)。其中最简单的一种称为“自由端条件”,即在首、末两端 各添加一个辅助点P0 和Pn+1 ,并使 P0=P1, Pn+1=Pn 。.这种方法适用于对曲线的两端没有什么特殊要求的情况。,P1,P2,P3,Pi,Pn,P0,Pn+1,三. Bezier曲线Bezier曲线的参数方程:nQ(t) Pi Bi,n (t) (0t1)i=0式中:Pi ( i = 0, 1, 2,., n )是空间给定的 n1个点的位置向量,也称控制点,它们构成了控制Bezier曲线形状的特征多边形。Bi,n (t) 为 Bernstain 基函数。n!i !(n - i) !,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 大杂烩/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号