正在加载图片...
6、试编写可以对一段任意圆弧进行扫描转换的算法 将360度的区域分成8个部分 编写可以对一段任意圆弧进行扫描转换的算法的关键在于,对这段圆弧的起点和终点分别 判定是否在同一区域 如果起点和终点在同一区域,调用中点画圆算法,但要根据实际情况对参数进行修正; 如果起点和终点不在同一区域,则要根据实际情况对圆弧段进行分割,分割的原则是将每 一段的起点和终点放在同一区域,然后分别调用中点画圆算法画圆弧,同样在画的过程中,要 根据实际情况对参数进行修正及算法进行修正; 设圆弧的起点为(x1,y1),终点为(x2,y2),半径为r 如图 D(0-r,y0℃(0,yo) B(x2,y2) 将整个圆弧分为两段,弧AC和弧CB,分别进行扫描转换,转换过程中利用中点画圆方法 进行,代码如下 midpoint(xl, y1, x2, y2, r, color, k) float d d=(x1+1)^2+(y1-0.5)^2-r^2; putpixel(x, y, color while (x<=x2) { d+=2米x+3; d+=2*(x-y)+5;6、试编写可以对一段任意圆弧进行扫描转换的算法 将 360 度的区域分成 8 个部分 3 2 4 1 5 8 6 7 编写可以对一段任意圆弧进行扫描转换的算法的关键在于,对这段圆弧的起点和终点分别 判定是否在同一区域 如果起点和终点在同一区域,调用中点画圆算法,但要根据实际情况对参数进行修正; 如果起点和终点不在同一区域,则要根据实际情况对圆弧段进行分割,分割的原则是将每 一段的起点和终点放在同一区域,然后分别调用中点画圆算法画圆弧,同样在画的过程中,要 根据实际情况对参数进行修正及算法进行修正; 设圆弧的起点为(x1,y1),终点为(x2,y2),半径为 r 如图 A(x1,y1) D(x0-r,y0) C (x0,y0) B(x2,y2) 将整个圆弧分为两段,弧 AC 和弧 CB,分别进行扫描转换,转换过程中利用中点画圆方法 进行,代码如下: midpoint(x1,y1,x2,y2,r,color,k) { int x,y; float d; x=x1; y=y1; d=(x1+1)^2+(y1-0.5)^2-r^2; putpixel(x,y,color); while (x<=x2) { if (d<0) { d+=2*x+3; x++; } else { d+=2*(x-y)+5; x++; y=y+k;
向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有