计算机图像图形学-中点画线法.ppt_第1页
计算机图像图形学-中点画线法.ppt_第2页
计算机图像图形学-中点画线法.ppt_第3页
计算机图像图形学-中点画线法.ppt_第4页
计算机图像图形学-中点画线法.ppt_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

中点画线法 潘万鹏 3.1.2 中点画线法 这里先讨论直线斜率在0l之间。如图3.2所示,若直线在x方向上增加一 个单位,则在y方向上的增量只能在01之间。假设直线上当前已确定的一个 像素点坐标为(xp,yp),用实心小圆表示。 P=(xp,yp) P2 P1 M Q 图3.2 中点画线法示意图 那么,下一个与直线最近的像 素只能是正右方的P1(xp+1、yp)或右 上方的P2(xp+1、yp+1)两者之一,用 空心小圆表示。 为了方便地确定出下一个像素是P1还是P2,设M为P1与P2的中点,即 M=(xp+1, yp+0.5)。又设Q是理想直线与垂直线 x = xp+l的交点。显然,若M在Q 的上方,则P1离直线近,应取为下一个像素;否则应取P2。这种以中点M作为 判别标志的方法就是中点画线算法。 下面来讨论中点画线法的具体实现。 直线方程为:F (x, y)= ax + by + c 0 假设直线的起点和终点分别为(x1,y1)和(x2,y2),则上述参数:a = y1 - y2,b = x2 - x1,c = x1y2 - x2y1。 对于直线上的点,F(x,y)= 0;对于直线上方的点,F(x,y)0;而对于直线 下方的点,F(x,y)0时,M在直线上方(即在Q的上方),故应取右方的P1作为下一个 像素。而当d0时,M在圆外,这说明P2距离圆弧更近,应取P2作为下一 像素。而当F(M)0;而对于圆内的点, F (x, y)=0,取右下方像素,yi+1= yi-1,则: di+1=2(xi+1+1)2+(yi-1)2+(yi-1-1)2-2r2= di+4(xi-yi)+10 由此,可写出Bresenham画圆算法的C程序: void BresenhamCircle (int xc, int yc, int r, int color) int x =0, y =r, d=3-2*r; while (x 0 说明(x, y)在椭圆边界外 由于椭圆的对称性,我们只要讨论第一象限椭圆弧的生成。在处理这段 椭圆弧时,我们进一步把它分为两部分:上部分和下部分。 以弧上斜率为1的点作为分界,如图3.7(P83)所示。在上部分,在x方向 取单位步长,确定下一像素的位置;在斜率小于1的下部分,在y方向取单位 步长来确定下一像素的位置。 椭圆的斜率可从方程(36)中计算出: dy / dx = 2b2x / 2a2y 在上部分和下部分的交界处, 斜率dy/dx= 1, 则上式变为: 2b2x = 2a2y 因此,从上部分变为下部分的条件是: 2b2x = 2a2y 与中点画圆算法类似,当我们确定一个像素之后,接着在两个候选像素 的中点计算一个判别式的值。并根据判别式符号确定两个候选像素哪个离椭 圆更近。下面讨论算法的具体步骤。先看椭圆弧的上部分。假设当前已确定 的椭圆弧上的像素点为(xp,yp),那么下一对候选像素的中点是(xp+l,yp 0.5) 。 因此判别式为 dp = F(xp+1, yp0.5)= b2(xp+1)2 + a2(yp0.5)2 a2b2 它的符号将决定下一个像素是取正右方的那个,还是右下方的那个。 若dp 0) y ; dy = twoaa; if (d 0 ) d += aa dy

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论