版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第三章 二维图形生成技术,3.1 直线图形 一. 生成直线的 DDA 算法 无论是光栅扫描显示器还是绘图机,都可以看成有一个网格(离散单元组成的矩阵)存在,对显示器来说每一个像素就是一个网格点,对绘图机来说笔每走一步的终点也可以看成是一个网格的结点。 在光栅扫描显示器上表示一条 直线,就是要用最靠近直线的一 些网格点来代表这一直线。 这个网格就构成屏幕和绘图机 纸张的一个坐标系,相邻两个网 点的距离取为1,每个网格点的坐 标均取整数。,p1,p2,假设 直线的起点坐标为P1 (x1,y1),终点坐标为P2 (x2,y2) x方向的增量为 xx2x1 ;y方向上增量为 yy2y1 直线的斜率为
2、kyx 当 xy 时,让 x 从 x1 到 x2 变化,每步递增 1, 那么,x 的变化可以表示为 xi+1xi1 y 的变化可以表示为 yi+1yik 用上式可求得图中直线 P1P2 和 y 方向网格线的交点,但显示时要用象素点(图中的网格结点)来表示,所以要用舍入的办法耒找到最靠近交点处的象素点,并用其来表示直线段。 这个方法称之为数字微分分析法,简称DDA。,算法描述如下: int x1,y1,x2,y2; int x; float dx,dy,k,y; dxx2 x1 ; dyy2 y1 ; kdydx ; xx1 ; yy1 ; for (xx1;xx2;x) putpixel (x
3、,(int)y,pixelcolor ) ; yyk ; 该算法仅适用于k1 的情况,而当k1时,则需将 x 和 y 的位置交换。,void dda_line(int xa,int ya,int xb,int yb,int c) float delta_x,delta_y,x,y; int dx,dy,steps,k; dx=xb-xa; dy=yb-ya; if(abs(dx)abs(dy) steps=abs(dx); else steps=abs(dy); delta_x=float(dx)/float(steps); delta_y=float(dy)/float(steps); x=
4、xa;y=ya; putpixel(x,y,c); for(k=1;k=steps;k+) x=x+delta_x; y=y+delta_y; putpixel(x,y,c); ,二. 生成直线的 Bresenham 算法,基本原理,二. 生成直线的 Bresenham 算法 设 kyx , 先讨论 0k1的情况: 若以屏幕上x方向的象素点作为横坐标,则有 xi+1xi1 而 yi+1yik(xi+1xi)yik (1) 设 b 点是直线上的点,其坐标是(xi+1,yi+1),显然,该点只能用屏幕上的象素点c 或 d 来表示。 设 a 为c、d 的中点,若 b 在 a 的上面则应取 d,否则应
5、取 c。 关键问题: (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+1yi1 e (xi+1) 0时 yi+1yi 递推: 由(2)、(3)式可得: e (xi+2)yi+2yi+10.5yi+1kyi+10.5 yi+1yi0.5k1 e (xi+1)0 yi+1yi0.5k e (xi+1) 0 e (xi+1)k1 e (xi+1
6、)0 e (xi+1)k e (xi+1) 0,=,=,(3),算法描述如下: xx2x1 yy2y1 kyx e k0.5 (若起始点在象素中心,则e的初始值为0.5) xx1 y=y1 for ( i1;ix;i) putpixel (x,y,pixelcolor) xx1 if (e0) eek else yy1; eek1 ,讨论: 斜率不同时: 以上讨论的是 0 k 1 的情况,即 0yx 的情况; 若是 0 xy 的情况,则需将 x 和 y 的位置交换。 方向不同时: 若y0或x0时,要将算法中的 yy1换成yy1、 xx1换成xx1。,3.2 二次曲线 一.Bresenham画圆
7、算法 该算法以点(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,则右下角点在圆内,此时只可能取象素点 H 或 D 设1(xi+1)2(yi)2r2(xi+1)2(yi-1)2r2 若 10 取H 10 取
8、D 10 二者距离相等,规定取右方象素 H 并可将1进一步化简成 12(iyi)1 若i0,则右下角点在圆外,此时只可能取象素点 D 或 V 设2(xi+1)2(yi-1)2r2(xi)2(yi-1)2r2 若20 取D 20 取V 20 二者距离相等,规定取右下角象素D 并可将2进一步化简成 22(ixi)1 若i0,此时圆上点正好是 D,即取 D。,据此,可导出简单增量算法的递推公式: 若设当前圆上点所在的象素为第i个象素,下一个新象素为第i+1个象素,则新象素的坐标及值的递推公式是: 新象素为H时:xi+1xi1 yi+1yi i+1 i2xi+11 新象素为D时:xi+1xi1 yi+
9、1yi1 i+1 i2xi+12yi+12 新象素为V时:xi+1xi yi+1yi1 i+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 direction 2;,switch(direc
10、tion) case1: x; 取H delta2x1; break: case2: x; 取D y; delta2*(xy1); break; case3: y; 取V delta(2*y1); break; * switch * * whi1e *,二. 抛物线的参数拟合方法 抛物线的参数向量方程: Q(t)=at2 + bt + c (0 t 1) 对应的参数方程: x(t)=axt2 + bxt + cx y(t)=ayt2 + byt + cy 抛物线的参数方程的系数: cx = x0 cy = y0 bx = 2(x1 x0) by = 2(y1 y0) ax = x2 2x1 +
11、 x0 ay = y2 2y1 + y0,(0 t 1),抛物线的重要性质: 1. 曲线在 t = 1/2 处的切线平行于 P0P2。 2. Pm点为 P1C 直线的中点。 采用P0、Pm、P2三点构造抛物线时的参数方程的系数: cx= x0 cy= y0 bx= 4xm x2 3x0 by= 4ym y2 3y0 ax= 2(x2 2xm+x0) ay= 2(y2 2ym+y0) 结论: P0 、 P1 、 P2与P0 、 Pm 、 P2所构成的抛物线是等价的,二者确定参数方程系数的公式不同,后者产生的曲线通过给定的三点。,3.3 自由曲线 一.概述 曲线:规则曲线可用曲线方程式表示的曲线。
12、 不规则曲线不能确切给出描述整个曲线的方程,而是由从实际测量中得到的一系列离散数据点采用曲线拟合的方法来逼近的。这类曲线也称之为自由曲线。 曲线的表示方法: 1. 直角坐标曲线 显式 y = f(x) 隐式 f(x,y) = 0 2. 极坐标曲线 =() 3. 参数坐标曲线 x = x(t) ; y = y(t) 参变量的规范化 曲线的绘制方法:用很多短直线段来逼近曲线。曲线上点的数量取多少,直线段取多长,取决于绘制曲线的精度要求和图形输出设备的精度。,型值点:是指通过测量或计算得到的曲线上少量描述曲线 几何形状的数据点。 控制点:是指用来控制或调整曲线形状的特殊点,曲线本 身不一定通过控制点
13、。 插值和逼近:这是曲线设计中的两种不同方法。插值设计 方法要求建立的曲线数学模型,严格通过已知的每一个型值点。 而逼近设计方法建立的曲线数学模型只是近似地接近已知的型 值点。 拟合:是指在曲线的设计过程中,用插值或逼近的方法使 生成的曲线达到某些设计要求。,连续性: C0连续(0阶参数连续)前一段曲线的终点与后一段 曲线的起点相同。 C1连续(一阶参数连续) 两相邻曲线段的连接点处 有相同的一阶导数。 C2连续(二阶参数连续) 两相邻曲线段的连接点处 有相同的一阶导数和二阶导数。,二 . 抛物线参数样条曲线 这是根据给定的型值点列,以抛物线作为基本曲线拟合生 成的自由曲线。 特点:采用插值方
14、法生成,曲线通过每个型值点。 给定型值点列 Pi( i= 1, 2, ., n ),按抛物线的参数拟合方法, 每经过相邻三点可作一段抛物线,共可作出 n2 条。,一般情况下,每两段曲线之间的搭接区间,两段抛物线是 不可能重合的。,但对于拟合曲线来说,整个型值点列必须用一条光滑的曲 线连接起来。 解决的办法:将两段曲线之间的搭接区间采用加权合成的 方法合成一条曲线。也就是说,由 Pi 、 Pi+1 、 Pi +2 、 Pi+3 这 四个型值点采用加权合成的方法可以确定 Pi+1和 Pi+2 之间的一 段曲线。,结论: 对于给定的型值点列 Pi( i= 1, 2, ., n ), 从 P1 开始依
15、次每取 四个型值点即可画出一段曲线,直到 Pn 为止。 按这样的方法,在Pi( i= 1, 2, ., n )个型值点列中只能得到 n3 段曲线,但 n 个型值点列之间应有 n1 个区段。 解决的办法:添加“端点条件”。其中最简单的一种称为“自由 端条件”,即在首、末两端各添加一个点,并使 P0=P1, Pn+1=Pn .,三. Hermite 曲线 一条 三次参数曲线的代数形式是: x(t) = axt3 + bxt2 + cxt + dx y(t) = ayt3 + byt2 + cyt + dy ( 0 t 1) z(t) = azt3 + bzt2 + czt + dz,上式写成矢量形
16、式是: Q(t) = at3 + bt2 + ct + d (0 t 1) 其中Q(t)表示曲线上任意一点的位置矢量,其分量对应于直 角坐标系中该点的坐标; a 、 b 、 c 、 d是代数系数矢量。,上式写成矢量形式是: a b c d 其 x 方向上的分量可表示为: a b c d x 令: T = t3 t2 t 1 Cx = a b c d xT 则: x(t) = T Cx 且: x(t) = 3t2 2t 1 0 Cx,Q(t) = t3 t2 t 1,x(t) = t3 t2 t 1,Hermite曲线是给定曲线段的两个端点坐标P0 、 P1以及两端 点处的切线矢量R0 、 R1
17、来描述曲线的。即: x(0) = P0 x , x(1) = P1x , x(0) = R0 x , x(1) = R1x 将上述边界条件代入前式,得: P0 x = 0 0 0 1 Cx P1x = 1 1 1 1 Cx R0 x = 0 0 1 0 Cx R1x = 3 2 1 0 Cx 并可用矩阵形式表示为: p0 0 0 0 1 P1 1 1 1 1 R0 0 0 1 0 R1 x 3 2 1 0,=, Cx,将上式的两端分别乘以一个44矩阵的逆阵,可得: 2 2 1 1 P0 3 3 2 1 P1 0 0 1 0 R0 1 0 0 0 R1 x 令: 2 2 1 1 3 3 2 1
18、为Hermite矩阵,常数 0 0 1 0 1 0 0 0 Gh = P0 P1 R0 R1 T 为Hermite几何矢量 则: Cx = Mh Ghx 式 x(t) = T Cx 可改写为: x(t) = T Mh Ghx 三次参数曲线的矢量形式可改写为: Q(t) = T Mh Gh (0 t 1),Cx =,Mh =,上式中的 T Mh 称为调和函数。 若令其为 Fh(t), 则各分量可表示为: Fh1(t) = 2t3 3t2 + 1 Fh2(t) = 2t3 + 3t2 Fh3(t) = t3 2t2 + t Fh4(t) = t3 t2 这样 ,当给定初始条件Gh后 , Hermi
19、te曲线可表示成: Q(t) = Fh1(t)P0 + Fh2(t) P1 + Fh3(t) R0 + Fh4(t) R1 式中P0 和P1为曲线两端点的位置矢量, R0和R1为曲线两端点处的切线矢量。 利用上式,便可绘制出一段Hermite曲线。,四. 三次参数样条曲线 Hermite曲线要求给出端点处的切线矢量,给使用带来不便,但它是三次参数样条曲线的基础。 若有一组离散点列P1,P2,.,Pi-1,Pi,Pi+1,.,Pn ,要求用一系列 Hermite曲线段,通过这些点列,构成一条三次参数样条曲线。 n 个点可绘制出 n 1 段Hermite曲线,其中第 i 段曲线的 起点和终点分别为
20、 Pi 和 Pi+1 ;第 i+1 段曲线为Pi+1和Pi+2 。 若要求两曲线连接处达到C2,通过推导,可得如下关系式: Pi+ 4Pi+1+ Pi+2 = 3( Pi+2 Pi ) 同样,对于第 i +1和 i+2 段曲线,可得关系式: Pi+1+ 4Pi+2+ Pi+3 = 3( Pi+3 Pi+1 ) 依此类推,对于n 个点,可以得到 n 2 个类似的方程。,但这组联立方程中有 n 个未知数,为求解,必须再给出两个 边界条件。常用的边界条件有自由端、夹持端和抛物端等。 以自由端为例,这种情况下,两端点处的二阶导数为零, 即 P1 = Pn = 0 自由端三次参数样条曲线的矩阵表示式为:
21、 2 1 0 0 0 P1 3( P2 P1 ) 1 4 1 0 0 P2 3( P3 P1 ) 0 1 4 1 0 0 P3 3( P4 P2 ) . . = . . . . 0 0 1 4 1 Pn-1 3( Pn Pn-2 ) 0 0 0 1 2 Pn 3( Pn Pn-1 ) 解方程组,可得各型值点处的切线向量 Pi (1 i n),五. Bezier曲线 Bezier曲线的参数方程: n Q(t) Pi Bi,n (t) (0t1) i=0 式中: Pi ( i = 0, 1, 2,., n )是空间给定的 n1个点的位置向量,也称控制点,它们构成了控制Bezier曲线形状的特征多边
22、形。 Bi,n (t) 为 Bernstain 基函数。 1. 二次Bezier曲线 当n2时,上式即为二次Bezier曲线表达式。二次Bezier曲线有三个控制点,它是一条经过P0和P2两个控制点的抛物线。 它的矩阵表示形式如下:,1 2 1 P0 Q(t)t2 t 1 2 2 0 P1 (0t1) 1 0 0 P2 若将上式中的向量 P0、P1、P2分解为二维平面上的 x 及 y 方向分量,就可得到二次 Bezier 曲线的参数式: x (t) axt2 bxt cx y (t) ayt2 byt cy 式中系数分别为: axx22x1x0 , bx2(x1x0), cx x0 ayy22
23、y1y0 , by2(y1y0), cy y0 二段二次Bezier曲线在满足一定 条件的情况下可以达刭C1连续。 P2 = P3 , P4 应在 P1P2 的延长线上。,( 0t1 ),P0,P1,P3,P2,P4,P5,2. 三次Bezier曲线 三次Bezier曲线的矩阵表示形式如下: 1 3 3 1 P0 3 6 3 0 P1 3 3 0 0 P2 1 0 0 0 P3 分解后的参数式为: x (t) axt3 bxt2 cxt dx y (t) ayt3 byt2 cyt dy 式中系数分别为: axx03x13x2x3 ayy03y13y2y3 bx3x06x13x2 by3y06
24、y13y2 cx3x03x1 cy3y03y1 dxx0 dyy0,Q(t) = t3 t2 t 1,(0t1),(0t1),P0,P1,P2,P3,P0,P1,P2,P3(R0),R1,R2,R3,三次Bezier曲线的端点特性: 曲线经过首、末两个控制点, 且与特征多边形的首、末两条边相切。 三次Bezier曲线段的连续性: 要使两段三次Bezier曲线达到 C1连续的充要条件是: P2 、 P3=R0 、 R1 三点共线 要使两段三次Bezier曲线达到 C2连续的充要条件是,要在C1连续的前提下再增加两个条件: 1。在连接处两曲线的密切平面重合。 2。在连接处两曲线的曲率相等。,六.
25、B样条曲线 B样条曲线是Bezier曲线的拓广,它是用B样条基函数代替了Bezier曲线表达式中的Bernstain基函数。 在空间给定n1个点的位置向量Pi (i=0,1,2,-n , n=k),则称参数曲线 n P(t) Pi Ni,k (t) (0t1) i=0 为k阶(或k1次)的B样条曲线。其中Ni,k (t)为B样条基函数。给定的n1个点为B样条曲线的控制顶点,由其构成的多边折线称B特征多边形。,1. 二次B样条曲线 二次B样条曲线的端点特性与Bezier曲线不同,它是以二次B特征多边形的二边上的中点为其起点和终点,并在端点处与二边相切。 二次B样条曲线的矩阵表示形式如下: 1 2 1 P0 Q(t)t2 t 1 2 2 0 P1 1 1 0 P2 分解后的参数式为: x (t) axt2 bxt cx
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2030年激光照排片行业市场营销创新战略制定与实施分析研究报告
- 2026年西安理工大学辅导员招聘笔试备考题库及答案解析
- 企业定制化库存管理系统
- 2026年嵩山少林武术职业学院教师招聘考试备考题库及答案解析
- 木材压缩成型设备选型方案
- 纺织印染厂废水回收制度
- 企业财务预测模型开发方案
- 城中村供水安全监测技术方案
- 小学语文人教部编版六年级上册《第三课古诗三首第二课时》教材教案
- 2026年老规培影像考试试题及答案解析
- 雨课堂学堂在线学堂云《大学英语听力进阶(西北工大 )》单元测试考核答案
- JJG646-2006移液器检定规程
- 雨课堂学堂在线学堂云《The Principle of Auditing( 西财)》单元测试考核答案
- 2025年朱元璋传-课件
- 五一假前安全教育课件
- 成人手术后疼痛评估与护理团标解读
- 部门年度绩效考核责任书模板
- 17.1 勾股定理 说课稿 2024-2025学年人教版八年级数学下册
- AIGC技术在动画电影创作中的应用与效果分析
- 污水处理站安全培训课件
- 2025年贵州省中考化学真题卷含答案解析
评论
0/150
提交评论