我有一个小问题画一个圆圈。该函数绘制了一个几乎完整的圆,我只是错过了一小部分循环。我假设这个问题与自动重绘某些事情有关吗?
这是函数
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);
}
其他任何代码都有帮助吗?
答案 0 :(得分:1)
我认为您遇到的只是一个浮点精度问题。您假设您的x值在每个循环结束时准确地-radius
(或radius
repsectively),这可能不是由于所有添加的累积舍入错误。
这在-radius
没有问题,因为无论如何它与第二个循环的开始合并,但最后它不会在radius
结束。尝试将整个事件设为GL_LINE_LOOP
而不是GL_LINE_STRIP
,将第一个和最后一个顶点合并为一行。