Y.E*_*E.P 5 algorithm graphics line-drawing dda
我读过有关DDA的文章.但我刚刚遇到了对称DDA这个术语.它是什么 ?它与DDA有何不同?
DDA(数字微分分析仪)算法用于找出任意给定两点之间的插值点,即线性(即直线).现在,由于这是在数字计算机上完成的 - 速度是一个重要因素.
直线方程由m =Δx/Δyeq(i)给出,其中Δx= x(2)-x(1)&Δy= y(2)-y(1),
现在使用这个方程我们可以计算位于线上的连续点.但是这是光栅图形的离散世界 - 所以我们需要积分坐标.
在简单的DDA中,eq(i)被转换为m =eΔx/eΔy,其中e,称为增量因子,是正实数.因为在分子和分母中放入相同的数字不会改变任何东西 - 但如果适当选择 - 它可以帮助我们生成离散点,从而减少必须舍入结果点的过载.
基本上我们需要做的是:从起始点开始,将坐标增加一个固定的小量,每次我们有一个新的点朝着终点前进.
在简单DDA中,e被选择为1/max(|Δx|,|Δy|),使得一个坐标是整数,并且只有另一个坐标必须被舍入.即P(i + 1)= P(i)+(1,Round(e*Δy))这里一个坐标增加1而另一个坐标增加e*Δy
在对称DDA中,选择e,使得尽管两个坐标的坐标都必须四舍五入,但是可以非常有效地快速完成.
具体地,e被选择为1/2 ^ n,其中2 ^(n-1)<= max(|Δx|,|Δy|)<2 ^ n.换句话说,线的长度被取为2 ^ n对齐.两个坐标的增量是e*Δx和e*Δy.通过适当选择起始坐标的初始分数部分:这使得点作为混合分数生成,其分数部分是循环序列,即它们在小长度上重复.因此,可以基于两个固定长度的查找表容易地舍入所得到的坐标,每个坐标对应一个查找表.
有关示例,请参阅http://w3.msi.vxu.se/~gsu/DAB726-Ht06/Symm-DDA.pdf.
注意结果坐标的小数部分中的循环重复.