我正在寻找一种线条绘制算法,它只绘制每个扫描线/行一个像素,并且只使用整数。
Bresenham线条绘制算法适用于大多数情况,但是当我有一条从P1(40,0)到P2(0,20)的线(Pn(x,y))时,每条扫描线绘制两个像素。
为了记录,我在C中编码一个没有浮点单元的低端微控制器。
谢谢!
答案 0 :(得分:0)
要模拟浮点,你可以缩放整数,所以代替“1”你有“1000”,你可以想象从左边第三个数字后面的浮点。然后在这些缩放值上以整数形式执行Bresenham算法。计算完成后,使用此最大值除以整数除法。你可能想要回合。您必须确定最大x值并相应地选择您的比例。取2的幂,你可以使用shift代替divisision。
为了确保每行只有一个像素,你可以使用一个截止值,其中下面不会绘制像素和上面的像素。像素应绘制为黑色(或白色),但没有渐变(否则您需要两个像素)。
答案 1 :(得分:0)
参见http://en.wikipedia.org/wiki/Bresenham's_line_algorithm:
“ ...这导致算法只使用整数运算。”