|
|
最近在看圣2的代码,里面有个画直线的函数Line(), 用的是Bresenham算法,我把函数单独拿出来研究,网上也找了许多关于Bresenham算法的资料,不过不是太明白,主要是几句话。
下面是源程序导读中的函数:
// 在第一象限中
void Line(HDC hdc, int left, int top, int right, int bottom, DWORD color)
{
int delta_x, delta_y;
delta_x = right - left;
delta_y = bottom - top;
for ( int i = 0, error = 0; i < delta_x; i++ )
{
SetPixel(hdc, left, top, color);
/* ------------------------------------------------------
error += delta_y;
if ( error > delta_x )
{
error -= delta_x;
top++;
}
------------------------------------------------------ */
// 这几句不懂, 各位高手能不能给个解释或原理,小弟谢谢先~~~~~~~
left++;
}
} [em7] |
|