如何在 OpenGL C++ 中只绘制一个圆的 1/4

1 opengl

我试图只画一个圆的一个扇区/一部分,但目前我总是得到一个完整的圆。

我用它来画一个圆圈:

glColor3f (0.25, 1.0, 0.25);
GLfloat angle, raioX=0.3f, raioY=0.3f;
GLfloat circle_points = 100.0f;

glBegin(GL_LINE_LOOP);
for (int i = 0; i < circle_points; i++) {
    angle = 2*PI*i/circle_points;
    glVertex2f(0.5+cos(angle)*raioX, 0.5+sin(angle)*raioY);        
}
glEnd();
Run Code Online (Sandbox Code Playgroud)

And*_*man 5

假设您想要一个如下图所示的扇区:

  在此处输入图片说明

您将需要以这种方式重新编写代码:

    glBegin    (GL_LINE_LOOP);
    glVertex2f (0.5f, 0.5f);
    for (int i = 0; i < circle_points; i++) {
        angle = 2*PI*i/circle_points;
        glVertex2f (0.5+cos(angle)*raioX, 0.5+sin(angle)*raioY);

    }
    glEnd ();
Run Code Online (Sandbox Code Playgroud)

我唯一改变的是在0.5,0.5你的圆圈中心添加了一个点。没有这一点,您最终会绘制一个线段而不是一个扇区。


正如 BDL 指出的那样,您的原始代码画了一个完整的圆圈。圆的 1/4 的角度应该是 Pi/2 而不是 2*Pi。所以至少,你还需要重写这一行:

angle = PI * 0.5f * i / circle_points;
Run Code Online (Sandbox Code Playgroud)

BDL 的回答显示了一种更有效的方法。尽管它绘制了一条弧线,这可能是您想要的,也可能不是。无论哪种方式,您现在都有足够的代码来绘制上图中的所有三个内容。