直线是最基本的图形,一些复杂的图形往往由很短的直线组成,因此直线生成算法在图形软件设计中起着重要的作用,生成直线的质量好坏与速度将直接影响整个图形的质量和速度.几何学上的一条直线由两点决定,它在数学上可以有各种表示方法,而在计算机图形学中,直线 是由逼近理想直线段的离散像素点组成的.
直线生成算法的主要研究内容是将直线光栅化,并减少直线显示时的阶梯效应。对计算机生成直线的一般要求是:逼近程度好,线段端点的位置要准确,线上各点的亮度要均匀,线段生成的速度要快.
在光栅扫描显示器上生成直线一般采用数值微分法.
Dx=x2-x1
Dy=y2-y1
因此,DDA法的工作原理是使x和y 同时以很小的步长向前增长,两个方向上每次的增量分别与Δx和Δy成正比,这样,在精度为理想的显示器上可以将x和y递增ε ·Δx和ε ·Δy来产生直线(ε是一个小量),即递推公式为.
x2=x1+ε*dx
y2=y1+ε*dy
当ε取值不同时,便形成对称DDA法和简单DDA法
在对称DDA法中,选择ε=2-n ,n 由下式来确定.
2的(n-1)次方<<max(dx,dy)<<2的(n)次方.n为正整数.
对于显示器来说,所产生的坐标必须是整数才能显示,以采用算术溢出方法来实现.
示例:
已知起点A(3,1)和终点B(13,8),用对称DDA法在A和B之间生成一段直线?
解:
(1) 计算初值:Δx=13-3=10, Δy=8-1=7,则n=4, ε=0.0625
因此,增量分别为ε ·Δx=0.625,ε ·Δy=0.4375
(2)按递推公式循环计算点的坐标,并取整显示
I | 计算坐标X | 计算坐标Y | 显示坐标X | 显示坐标X |
0 | 3.5 | 1.5 | 3 | 1 |
1 | 4.125 | 1.9375 | 4 | 1 |
类推 | 类推 | 类推 | 类推 | 类推 |
以上就是对称DDA的算法
Add 1 teaspoon of the salt and the pepper
weight loss tips and that of the ghd IV styler
quick weight lossSummer 2010 Fashion Trends For Women