直线生成算法---对称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.计算过程
对称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 |
相关文章推荐
- 实验二 直线DDA生成算法的GDI实现
- 计算机图形学—DDA直线生成算法
- 直线的DDA生成算法C++实现
- DDA,中点算法生成直线
- 直线生成算法——数值微分法(Digital Differential Analyzer, DDA)
- 直线生成算法---DDA
- 实验二 直线DDA生成算法的GDI实现
- 直线生成算法---简单DDA
- 【OpenGL】直线生成算法DDA+Bresenham
- 直线的生成算法
- 直线生成算法的实现:分别利用DDA算法、中点Bresenham算法和改进的Bresenham算法扫描转换直线段P1P2
- 常用直线图形生成算法(一)
- 直线生成算法——Bresenham画线法
- 基于OpenGL的三种直线生成算法
- 算法系列之十:直线生成算法 .
- 直线扫描转换(DDA画线算法)
- 实验2 直线生成算法实现
- 直线生成算法
- DDA直线算法
- 基于OpenGL的三种直线生成算法