Bresenham算法(一)
一、Bresenham直线算法(1)
基本原理:
Bresenham的直线算法是一种算法,它确定应该选择的n维光栅的点,以便形成两点之间的直线的近似近似。 它通常用于在位图图像中(例如在计算机屏幕上)绘制线基元,因为它仅使用整数加法,减法和位移,所有这些都是标准计算机体系结构中非常便宜的操作。 它是一种增量错误算法。 它是计算机图形学领域最早开发的算法之一
考虑d2与d1的关系:
(1)如果d2>=d1,则直线更接近下方点
(2)如果d2<d1,则直线更接近上方点
二、 Bresenham直线算法(2)
过各行各列象素中心构造一组虚拟网格线。按直线从起点到终点的顺序计算直线与各垂直网格线的交点,然后根据误差项的符号确定该列象素中与此交点最近的象素。
算法:
void Bresenhamline (int x0,int y0,int x1, int y1,int color)
{
int x, y, dx, dy;
float k, e;
dx = x1-x0, dy = y1- y0,k=dy/dx;
e=-0.5, x=x0, y=y0;
for (i=0; i£dx; i++)
{
drawpixel (x, y, color);
x=x+1,e=e+k;
if (e³0)
{
y++, e=e-1;
}
}
}