每条扫描线有一个像素的线条绘制算法

时间:2015-04-20 21:50:57

标签: c algorithm drawing line

我正在寻找一种线条绘制算法,它只绘制每个扫描线/行一个像素,并且只使用整数。

Bresenham线条绘制算法适用于大多数情况,但是当我有一条从P1(40,0)到P2(0,20)的线(Pn(x,y))时,每条扫描线绘制两个像素。

为了记录,我在C中编码一个没有浮点单元的低端微控制器。

谢谢!

2 个答案:

答案 0 :(得分:0)

要模拟浮点,你可以缩放整数,所以代替“1”你有“1000”,你可以想象从左边第三个数字后面的浮点。然后在这些缩放值上以整数形式执行Bresenham算法。计算完成后,使用此最大值除以整数除法。你可能想要回合。您必须确定最大x值并相应地选择您的比例。取2的幂,你可以使用shift代替divisision。

为了确保每行只有一个像素,你可以使用一个截止值,其中下面不会绘制像素和上面的像素。像素应绘制为黑色(或白色),但没有渐变(否则您需要两个像素)。

答案 1 :(得分:0)

参见http://en.wikipedia.org/wiki/Bresenham's_line_algorithm:

...这导致算法只使用整数运算。