- 6
- 0
- 约7.05千字
- 约 46页
- 2017-01-16 发布于北京
- 举报
直线DDA算法描述 设(x1,y1)和(x2,y2)分别为所求直线的起点和终点坐标,由直线的微分方程得 可通过计算由x方向的增量△x引起y的改变来生成直线: 也可通过计算由y方向的增量△y引起x的改变来生成直线: 直线DDA算法思想 选定x2-x1和y2-y1中较大者作为步进方向(假设x2-x1较大),取该方向上的增量为一个象素单位(△x=1),然后利用公式计算另一个方向的增量(△y=△x·m=m)。通过递推公式,把每次计算出的(xi+1,yi+1)经取整后送到显示器输出,则得到扫描转换后的直线。 之所以取x2-x1和y2-y1中较大者作为步进方向,是考虑沿着线段分布的象素应均匀,这在下图中可看出。 另外,算法实现中还应注意直线的生成方向,以决定Δx及Δy是取正值还是负值。 直线DDA算法实现 Void DDALine(int x1,int y1,int x2, int y2,int color) { int x; float k,y=y1; k=1.0*(y2-y1)/(x2-x1); for(x=x1;x=x2;x++) { putpixel(x, (int)(y+0.5),color); y=y+k; } } 按照从(x1, y1)到(x2, y2)方向不同,分8个象限。对于方向在第1a象限内的直
原创力文档

文档评论(0)