网站大量收购闲置独家精品文档,联系QQ:2885784924

图形学讲义.ppt

  1. 1、本文档共22页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
图形学讲义

第二章 基本图形生成算法  本章将主要研究在光栅显示器上的直线、圆的生成算法。   一、直线的生成算法  即是找出逼近直线的一组象素,按扫描线顺序,对这些象素进行写操作。 1. 数值微分法(DDA) 假定直线的起点、终点分别为:(X0,Y0), (X1,Y1),且都为整数。  直线的斜率:    k = (Y1-Y0)/(X1-X0) 为讨论方便,假定 |k|=1 直线方程:    Y= k*X+B 设X的增量为Dx=1,可得如下Y的增量方程: Yi+1 = k Xi+1 + B = k (Xi + Dx) + B = kXi + B + k Dx = Yi + k Dx = Yi + k 程序实现: DDALine(X0,Y0,X0,Y0,Color) int X0,Y0,X1,Y1,Color; { int X float dx,dy,k,y dx=x1-x0; dy=y1-y0; k=dy/dx; y=Y0; for(x=X0;x=X1;x++){ drawpixel(x,int(y+0.5),Color); y=y+k; } } 2. 中点画线法 原理: 算法实现: 假设直线的起点、终点分别为:(X0,Y0),(X1,Y1) 该直线方程可表示为: F(x,y)=a*x+b*y+c (1) 其中: a=Y0-Y1, b=X1-X0, c=X0*Y1-X1*Y0 当: F(Xt,Yt) = 0 ++ (Xt,Yt) 在直线上 F(Xt,Yt) 0 ++ (Xt,Yt) 在直线下方 F(Xt,Yt) 0 ++ (Xt,Yt) 在直线上方 因此:将中点M坐标代入(1)式,并判断其符号即可确定象素点的选取。构造如下判别式: d = F(M)=F(Xp+1,Yp+0.5)=a(Xp+1)+b(Yp+0.5)+c 由上式可看出,d是x,y线性函数,可推导d的增量公式。 当d= 0时,取象素P1,此时再下一个象素的判别式为: d’ = F(Xp+2,Yp+0.5)=a(Xp+2)+b(Yp+0.5)+c = a(Xp+1)+b(Yp+0.5)+c +a = d + a; 当d 0 时, 取象素P2,此时再下一个象素的判别式为: d’ = F(Xp+2,Yp+1.5)=a(Xp+2)+b(Yp+1.5)+c = a(Xp+1)+b(Yp+0.5)+c +a +b = d + a + b; d的初始值可按下式计算: d0 = F(X0+1,Y0+0.5) = a(X0+1)+b(Y0+0.5)+c = F(X0,Y0)+a+0.5b = a+0.5b 由于只用d 的符号作判断,为了只包含整数运算, 可取2d 代替 d,这样可得如下中点算法程序: MidpointLine(X0,Y0,X1,Y1,Color) int X0,Y0,X1,Y1,Color; { int a,b,d1,d2,d,x,y; a=Y0-Y1; b=X1-X0; d=a+a+b; d1=a+a; d2=a+b+a+b; x=X0; y=Y0; drawpixle(x,y,Color);

文档评论(0)

xcs88858 + 关注
实名认证
内容提供者

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

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档