您的位置:首页 > 其它

直线生成算法---对称DDA

2013-06-19 22:26 1011 查看
对称DDA算法实现:

对称DDA直线生成算法是在DDA算法的基础上,引入N变量,

直线方程表示为:dx/dn=△x/△N,

       dy/dn=△y/△N

  其解为: 

             x0=xa+0.5      xn=xn-1+△x/△N   其中   △x=xb-xa,

             y0=ya+0.5      yn=yn-1+△y/△N             △y=yb-ya 。

    基本思想是通过移位来实现坐标点的计算。

问题是如何选择N,使直线生成的速度和质量最好?

要求1/2<Max(△x/N,△y/N)≤1

令:N=2INT(log2Max(△x,△y))+1

因为:2log2Max(△x,△y)<N=2INT(log2Max(△x,△y))+1≤2log2Max(△x,△y)+1

        Max(△x,△y)<N<2Max(△x,△y)

所以:1/2≤max(△x/N,△y/N)<1

对称DDA算法特点:

优点:算法简单,尤其适用实现,因为它无乘除,只有移位操作

缺点:在同一坐标上可能连续停留两次,但不可能连续停留三次
 
对称DDA实例:
     用对称DDA算法在起为A(2,1),终点B(12,7)之间生成一段直线。

    1. 求解得△x=10,△y=6, N=16

    

    2.计算过程

index计算坐标显示坐标
0(2+0.5,1+0.5)(2,1)
1(3.125,1.875)(3,1)
2(3.75,2.25)(3,2)
3(4.375,2.625)(4,2)
4(5.0,3.0)(5,3)
5(5.625,3.375)(5,3)
6(6.25,3.75)(6,3)
7(6.875,4.125)(6,4)
8(7.5,4.5)(7,4)
9(8.125,4.875)(8,4)
10(8.75,5.25)(8,5)
11(9.375,5.625)(9,5)
12(10,6)(10,6)
13(10.625,6.375)(10,6)
14(11.25,6.75)(11,6)
15(11.875,7.125)(11,7)
16(12.5,7.5)(12,7)
17  
18  
 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: