如何使用此代码作为起点在opengl中绘制一个较小的圆?

das*_*sen 4 c opengl

我正在尝试使用opengl在c中绘制一个圆圈,它比显示的那个小.问题是我似乎无法找到如何减小它的大小...任何人都可以帮助我吗?

#define GLUT_DISABLE_ATEXIT_HACK
#include <GL/gl.h>
#include <GL/glut.h>
#include <stdio.h>

#include <math.h>
#define PI 3.1415926535898
GLint circle_points =100;
 // This is the draw function.
void draw()
{

glClear(GL_COLOR_BUFFER_BIT);
double angle = 2*  PI/circle_points ;
glPolygonMode( GL_FRONT, GL_FILL );
glColor3f(0.2, 0.5, 0.5 );
glBegin(GL_POLYGON);
    double angle1=0.0;
    glVertex2d( cos(0.0) , sin(0.0));
    int i;
    for ( i=0 ; i< circle_points ;i++)
    {
        printf( "angle = %f \n" , angle1);
        glVertex2d(cos(angle1),sin(angle1));
        angle1 += angle ;
    }
glEnd();
glFlush();
}

void init()
{
glClearColor(0.0,0.0,0.0,0.0);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(-1.0,1.0,-1.0,1.0,-1.0,1.0);
}

void keyboard (unsigned char key , int x, int y)
{
exit(0);

}

void main( int argc,char **argv)
 {
     glutInit(&argc,argv);
 glutInitDisplayMode(GLUT_SINGLE |GLUT_RGB);
 glutInitWindowSize(250,250);
 glutInitWindowPosition(100,100);
 glutCreateWindow("ch06");
 init();
 glutKeyboardFunc(keyboard);
 glutDisplayFunc(draw);
        glutMainLoop();
 }
Run Code Online (Sandbox Code Playgroud)

Jac*_*ope 5

你可以改变这一行:

    glVertex2d(cos(angle1),sin(angle1)); 
Run Code Online (Sandbox Code Playgroud)

至:

    glVertex2d(0.25f * cos(angle1),0.25f * sin(angle1)); 
Run Code Online (Sandbox Code Playgroud)

这将绘制一个半径为0.25而不是1的圆.

编辑:正如Dasen发现的那样,您还需要添加0.25f *到该行:

    glVertex2d(cos(0.0),sin(0.0)); 
Run Code Online (Sandbox Code Playgroud)