Bresenham 的浮点算法中有一些东西让我很恼火。
算法如下:
void line(x0, x1, y0, y1)
{
int deltax = x1 - x0;
int deltay = y1 - y0;
float error = 0;
float deltaerr = Math.abs((float)deltay / (float)deltax);
int y = y0
for(int x=x0;x<=x1;x++)
{
SetPixel(x,y)
error = error + deltaerr
if (error >= 0.5)
{
y = y + 1
error = error - 1.0
}
}
}
假设我们要绘制Y=0.6X。因此,在 x=0 的第一步中:错误将设置为 0.6,我们将运行 if 语句并且 y 会增加。并且错误将设置为-0.4。-0.4 将如何帮助我们下一步?
所以我的问题是这行代码:
error = error - 1.0
为什么我们应该将错误减少 1 ?我读过我们这样做是因为重新调整!它对我们有何帮助?