【发布时间】:2012-12-06 16:52:17
【问题描述】:
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 ?我读过我们这样做是因为重新调整!它对我们有什么帮助?
【问题讨论】:
-
你看过the real algorithm吗?因为你展示的只是部分正确
-
那么为什么维基百科把它放在页面顶部?