计算机图形学常用算法及代码大全.pdfVIP

  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文档。上传文档
查看更多
2.1.1 生成直线的 DDA 算法 数值微分法即 DDA 法 (Digital Differential Analyzer) ,是一种基于直线的微分方程来生成直 线的方法。 一、直线 DDA 算法描述: 设 (x 1,y 1 )和 (x 2 ,y2 )分别为所求直线的起点和终点坐标,由直线的微分方程得 = m = 直线的斜率 (2 - 1) △ 可通过计算由 x 方向的增量 x 引起 y 的改变来生成直线: △ (2 -2) x i+1 =x i+ x △ △ · (2 -3) y i+1 =y i+ y=y i + x m 也可通过计算由 y 方向的增量 △y 引起 x 的改变来生成直线: △ (2 -4) y i+1 =y i+ y x i+1 =x i+ △x=x i + △y/m (2 -5) 式 (2 -2) 至 (2 -5) 是递推的。 二、直线 DDA 算法思想: 选定 x2 -x1 和 y2 -y 1 中较大者作为步进方向 ( 假设 x 2 -x 1 较大 ) ,取该方向上的增量为一个 △ △ △ · 象素单位 ( x=1) ,然后利用式 (2 - 1) 计算另一个方向的增量 ( y= x m=m) 。通过递推公式 (2 - 2) 至 (2 -5) ,把每次计算出的 (x i+1 ,y i+1 )经取整后送到显示器输出,则得到扫描转换后的直线。 之所以取 x 2 -x 1 和 y2 -y1 中较大者作为步进方向,是考虑沿着线段分布的象素应均匀,这 在下图中可看出。 Δ Δ 另外,算法实现中还应注意直线的生成方向,以决定 x 及 y 是取正值还是负值。 三、直线 DDA 算法实现: 1 、已知直线的两端点坐标: (x1 ,y1) ,(x2 ,y2) 2 、已知画线的颜色: color 3 、计算两个方向的变化量: dx=x2 -x1 dy=y2 -y1 4 、求出两个方向最大变化量的绝对值: steps=max(|dx| ,|dy|) 5 、计算两个方向的增量 (考虑了生成方向 ) : xin=dx/steps 精品文库 yin=dy/steps 6 、设置初始象素坐标: x=x1,y=y1 7 、用循环实现直线的绘制: for(i=1 ;i=steps ;i++) { putpixe

文档评论(0)

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

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

1亿VIP精品文档

相关文档