- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
3.2圆的生成算法
当d20时,中点M在椭圆内,下一像素点应点亮Pr,即x方向上走一步;当d20时,中点M在椭圆外,下一像素点应点亮Pl,即x方向上不走步;当d2=0时,中点M在椭圆上,Pl、Pr和椭圆的距离相等,点亮Pl或Pr均可,约定取Pl,如图3-15所示。 因此, (3-22) 3.3.5 下半部分Ⅱ的递推公式 P(xi,yi) M(x i+0.5,y i-1) M(x i+1.5,y i-2) d20 ⑴当d20时,下一步的中点坐标为:M(x i+1.5,y i-2)。所以下一步中点偏差判别式为: ⑵当d2≥0时,下一步的中点坐标为:M(x i+0.5,y i-2)。所以下一步中点偏差判别式为: (3-24) P(xi,yi) M(x i+0.5,y i-1) M(x i+0.5,y i-2) d2≥0 y向分量为: 则对于上半部分椭圆上一点任意P(xi,yi) 如果在其当前中点M(xi+1,yi-0.5)处,满足x向分量小于y 向分量: 2.中点偏差判别式d2的初值 在上半部分Ⅰ,法矢量的x向分量小于y向分量;在C点,法矢量的x向分量等于y向分量;在下半部分Ⅱ,法矢量的x向分量大于y向分量。x向分量为: (3-25) P(xi,yi) Pu(xi+1,yi) Pl(xi,yi-1) MⅠ(xi+1,yi-0.5) Pd(xi+1,yi-1)= Pr(xi+1,yi-1) 图3-17 下半部分的初值 假定图3-17中P(xi,yi)点是椭圆上半部分Ⅰ的最后一个像素,MⅠ(xi+1,yi-0.5)是用于判断点亮Pu和Pd像素的中点。 由于下一像素转入了下半部分Ⅱ,所以其中点改为判断Pl和Pr的中点MⅡ(xi+0.5,yi-1),所以下半部分的初值d20为: 算法步骤: 1.输入椭圆的长半轴a和短半轴b。 2.计算初始值d=b2+a2(-b+0.25)、x=0、y=b。 3.绘制点(x,y)及其在四分象限上的另外三个对称点。 4.判断d的符号。若d≤0,则先将d更新为d+b2(2x+3),再将(x,y)更新为(x+1,y);否则先将d更新为d+b2(2x+3)+a2(-2y+2),再将(x,y)更新为(x+1,y-1)。 5.当b2(x+1)a2(y-0.5)时,重复步骤3和4。否则转到步骤6。 6.用上半部分计算的最后点(x,y)来计算下半部分中d的初值: 7.绘制点(x,y)及其在四分象限上的另外三个对称点。 8.判断d的符号。若d≤0,则先将d更新为b2(2xi+2)+a2(-2yi+3),再将(x,y)更新为(x+1,y-1);否则先将d更新为d+a2(-2yi+3),再将(x,y)更新为(x,y-1)。 9.当y0时,重复步骤7和8。否则结束。 演示 * 西安工程大学计算机图形学 * 程序:MidpointEllipe(a,b, color) int a,b,color; { int x,y; float d1,d2; x = 0; y = b; d1 = b*b +a*a*(-b+0.25); putpixel(x,y,color); while( b*b*(x+1) a*a*(y-0.5)) { { if (d10) d1 +=b*b*(2*x+3); x++; } else { d1 +=(b*b*(2*x+3)+a*a*(-2*y+2)) x++; y--; } putpixel(x,y,color); }//上部分 d2 = sqr(b*(x+0.5)) +sqr(a*(y-1)) – sqr(a*b); while(y 0) { if (d2 0) { d2 +=b*b*(2*x+2)+a*a*(-2*y+3); x++; y--;} else {d2 += a*a*(-2*y+3); y--; } putpixel(x,y,color); } } 西安工程大学计算机图形学 下一张 西安工程大学计算机图形学 3.2 圆的扫描转换 3.2.1 算法原理 3.2.2 构造中点偏差判别式 3.3 椭圆的扫描转换 圆的扫描转换算法 下面仅以圆心在原点、半径R为整数的圆为例,讨论圆的 生成算法。 假设圆的方程为: X2 + Y2 = R2 3.2.1 中点Bresenham算法原理 算法原理: 此时最大位移方向为x,每次x方向上走一步,而y方向上或减1,或减
文档评论(0)