0

我在画一个圆圈时遇到了一点问题。该函数绘制了一个几乎完整的圆圈,我只是错过了一点点循环。我假设这个问题与自动重绘某些东西有关?

这是功能

for(x = radius; x >= -radius; x -= 0.05)     // draw the plot
{   
    double temp = (radius * radius) - (x * x);
    y = sqrt(temp);
    glVertex2f(x, y);
}
for(x = -radius; x <= radius; x += 0.05)     // draw the plot
{   
    double temp = (radius * radius) - (x * x);
    y = sqrt(temp);
    glVertex2f(x, -y);
}

其他任何代码会有帮助吗?

4

1 回答 1

1

我认为您遇到的只是一个浮点精度问题。您假设您的 x 值在每个循环结束时准确-radius(或radius分别)到达,这可能不是由于所有加法累积的舍入误差。

这没有问题,-radius因为它无论如何都与第二个循环的开始合并,但最后它不会在radius. 尝试使整个事物 aGL_LINE_LOOP而不是 aGL_LINE_STRIP将第一个和最后一个顶点合并成一条线。

于 2012-09-11T15:59:14.493 回答