计算机图形学教材第二章光栅图形学(希赛教育基础学院)计算机图形学教材第二章光栅图形学(希赛教育基础学院).docVIP

计算机图形学教材第二章光栅图形学(希赛教育基础学院)计算机图形学教材第二章光栅图形学(希赛教育基础学院).doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
计算机图形学教材第二章光栅图形学(希赛教育基础学院)计算机图形学教材第二章光栅图形学(希赛教育基础学院)

★ 第二章 光栅图形学  【课前思考】   计算机是如何在屏幕上画一条直线或一个圆的?   在计算机屏幕上画直线时,经常出现锯齿,这是为什么?如何解决?   【学习目标】   了解光栅图形学的特点;   掌握直线、圆弧和椭圆的光栅显示方法;   学习反走样的几种算法,并能够编程实现。   【学习指南】   在数控插补技术中也有关于直线、圆弧和椭圆的NC插补的更多算法,可以参考有关的数控编程的书或资料;   某些图象处理方法对学习和掌握反走样技术会有帮助。   【难重点】   Bresenham画直线和画圆算法;   直线的反走样。   【知识点】   Bresenham画直线算法;   Bresenham画圆算法;   多边形区域填充;   直线反走样;   离散区域反走样算法。 ◇第一节 画线算法 光栅图形显示器可以看成是由许多可发光的离散点(即像素)组成的矩阵,它需要专门的算法来生成直线、圆弧和曲线等等图形。本章将介绍生成光栅图形的相关算法。这些算法对于开发图形设备驱动程序是必需的。不过,在Windows、Unix或Linux操作系统上开发计算机图形时,现在都有支持OpenGL的图形硬件和软件开发工具可供使用,而OpenGL程序库本身都提供了光栅图形显示的驱动程序,这为图形软件开发人员提供了便利。 2.1画线算法    。一旦di+1≥1,就把它减去1,这样保证di+1在0~1之间。当d i+1≥0.5时,直线 与x=xi+1的垂线的交点最接近于当前像素(xi,yi)的右上方像素(xi+1,yi+1);而当d i+10.5时,其交点更接近于(xi,yi)右边的像素(xi+1,yi)。为方便计算,令e0=-0.5,e i+1=di+1-0.5,增量为k。当ei+1≥0时,取当前像素(xi,yi)的右上方像素(xi+1, yi+1);而当e i+10时,更接近于右方像素(xi+1,yi)。 直线的基本要求因此,算法2.1可以改进如:图2.1 Bresenham画线算法    。   考虑到xy平面上各种八分和四分区域的对称性,Bresenham画线算法的原理对任意斜率的直线都有其通用性。例如,对于斜率k1的直线,只要在上述算法中交换x和y之间的规则即可。 算法2.1 画斜率0≤k≤1的直线的改进的Bresenham画线算法:void BresenhamLine (int x0, int y0, int x1, int y1, long color)  {   int x, y, dx, dy;   float k, e;   dx = x1-x0;   dy = y1- y0;   e=-dx;   x = x0;   y = y0;   if (dx = = 0)   {    for (i=0;i≤dy;i++)    {     DrawPixel (x, y+i, color);//画像素(x,y+i)    }    return;   }   for (i=0;i≤dx;i++)   {    DrawPixel (x, y, color);//画像素(x,y)    x++;    e += e+2*dy;    if (e≥0)    {     y++;     e -= 2*dx;    }   }  } 2.2??? 画圆   Bresenham算法。   不失一般性,假设圆的圆心位于坐标原点(如果圆心不在原点,可以通过坐标平移使其与原点重合),半径为R。以原点为圆心的圆C有四条对称轴:x=0,y=0,x=y和x=-y。若已知圆弧上一点P1=C(x, y),利用其对称性便可以得到关于四条对称轴的其它7个点,即:   P2C(x,-y),   P3C(-x, y),   P4C(-x,-y),   P5C(y,x),   P6C(-y,x),   P7C(y,-x),   P8C(-y,-x)。 这种性质称为八对称性。因此,只要扫描转换八分之一圆弧,就可以通过圆弧的八对称性得到整个圆。   为了方便起见,考虑位于第一象限的四分之一圆弧。如果以点(0,R)为起点按顺时针方向生成圆,则在第一象限内y是x的单调递减函数。假设圆心和起点均精确地落在像素中心上。   如果已经知道圆弧上的一点(x,y),下一像素的选取有三种可能:正右方像素,右下角像素和正下方像素,分别用H,D和V表示,如图2.2所示。这三个像素的偏差的平方为:     令    。 如果 ,说明圆弧到D向像素的距离大于到H向像素的距离,因此,下一个像素应当取H向的像素(xi+1,yi);反之,下一个像素应当取D向的像素(xi+1,yi-1)。经过更进一步地分析后,可以得到:   如 公式(2-2-1) 我们可以按以下规则选取下一个

您可能关注的文档

文档评论(0)

tazhiq2 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档