OpenGl隐式圆函数 - 不完整圆

时间:2012-09-11 12:10:17

标签: opengl

我有一个小问题画一个圆圈。该函数绘制了一个几乎完整的圆,我只是错过了一小部分循环。我假设这个问题与自动重绘某些事情有关吗?

这是函数

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);
}

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

1 个答案:

答案 0 :(得分:1)

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

这在-radius没有问题,因为无论如何它与第二个循环的开始合并,但最后它不会在radius结束。尝试将整个事件设为GL_LINE_LOOP而不是GL_LINE_STRIP,将第一个和最后一个顶点合并为一行。