第3章 基本图形的生成与计算.pptVIP

  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文档。上传文档
查看更多
XAUT.DOM—Computer Graphics XAUT.DOM—Computer Graphics 3.1 基本绘图元素 计算机所产生的图形和生活中见到的图片和照片一样,根据它们实际所在的空间,可分为二维图形和三维图形。二维图形又称平面图形,三维图形又称立体图形。 一副图最简单的几何成分是点和直线,所以无论是处理二维图形还是三维图形,画好点与直线是最基础的。 人们根据大量实际工作经验,总结出几种基本图形元素为:点、直线、曲线、字符和其他基本的图形元素。用他们作为构造复杂图形的基础。 1.在几何学中,一个点即没有大小,也没有维数,点只是表示坐标系统中的一个位置。 2.在计算机图形学中,点是用数值坐标来表示的。在直角坐标系中点由(x,y)两个数值组成的坐标表示,在三维坐标系中点由(x,y,z)三个数值组成的坐标表示,如下图: 在数学上,理想的直线是没有宽度的,由无数个在它上面的点构成的集合。直线可以向一个方向及其相反的方向无限延长。 在图形学中研究的对象是直线段,它是一条具有一个Pixel或多个Pixel宽的直线段。 图形显示器是由一个个排列有序的像素构成,划分的像素点越多分辨率就越高。例如VGA卡640X480的显示器,分成640X480个网格,网格单元称为像素,一条线段就是由一些连续可见的像素所组成,如下图所示: 3.2 直线段的生成算法 画一条从(x1,y1)到(x2,y2)的直线,实质上是确定最佳逼近直线的像素序列,并填入色彩数据的过程。 当我们对直线进行光栅化时,只能在显示器所给定的有限个象素组成的矩阵中,确定最佳逼近于该直线的一组象素,并且按扫描线顺序,对这些象素进行写操作,这就是通常所说的用显示器绘制直线或直线的扫描转换。 直线段是最基本的图形,因此直线段生成的质量好坏与速度快慢将直接影响整个图形生成的质量和速度。 例如:一个较复杂的曲面,它可能是由上万条很短的直线组成,则生成该曲面就需要考虑设计的直线段生成算法的质量和速度。 数值微分法即DDA法, DDA是数字微分分析式(Digital Differential Analyzer)的缩写。这是一种基于直线的微分方程来生成直线的方法。 1. 【算法思想】 设直线之起点为(x1,y1),终点为(x2,y2),则斜率k为: 本算法的基本思想:从直线的起点开始,选定 和 中较大者为步进方向,不妨假设 较大,即让x从起点到终点变化,每步递增1(即一个像素单位),然后利用递推式 计算相应的y值,取像素点 作为当前点坐标输出到显示器上,则得到光栅化的直线。 注: 表示对 进行四舍五入,即: 2. 【应用举例】例如用DDA方法扫描转换连接两点P0(0,0)和P1(5,2)的直线段。 注:上述分析可知,1.当 ,在这种情况下,利用递推式 ,x每增加1,y最多增加1。 2. 当 时,必须把x,y地位互换,即利用递推式 ,y每增加1,x相应增加 。 所以取 和 中较大者为步进方向,如下图自然明白。 3. 【参考程序】 该算法的优点是绘制实数直线效果好,误差小。缺点是实现较复杂,不利于硬件实现。 该算法涉及到实数乘除法运算,y与k必须用浮点数表示,而且每一步都要对y进行四舍五入后取整。 DDA画线算法参考程序 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=x1; y=y1; for (k=1; k=steps; k++) { putpixel((int)(x+0.5), (int)(y+0.5), c); x+=delta_x; y+=delta_y;} } 1. 【算法思想】 假定:从 画直线,直线方为 ,其中 直线斜率k在0、1之间。 基本思想: 假定X坐标为 的各像素点中,与 再以M表示P1与P2的中点,即 又设Q是理想直线与垂直线 的交点 。 如右图所示:

文档评论(0)

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

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

1亿VIP精品文档

相关文档