сфера не отображается в opengl - PullRequest
0 голосов
/ 31 октября 2011

вот мой метод отображения:

void display()
{
    GLfloat sphere_vertices[3]={0.0,0.0,0.0};

    int theta,phi;
    float x,y,z;
    int off_set;
    off_set=5;

    glClear(GL_COLOR_BUFFER_BIT);
    glBegin(GL_POINTS);

   for (theta=-90; theta<=90-off_set; theta+=off_set) {
      for (phi=0; phi<=360-off_set; phi+=off_set) 
        {
            //calculate X of sphere 
            x= cos(theta + off_set) * sin(phi + off_set);
            //calculate Y of sphere
            y = cos(theta + off_set) * cos(theta + off_set);
            //calculate Z of sphere 
            z = sin(theta + off_set);
            //store vertices
            sphere_vertices[0]=x;
            sphere_vertices[1]=y;
            sphere_vertices[2]=z;
            //plot new point            
            glVertex3fv(sphere_vertices);
            printf("X is %f, Y is %f, Z is %f",  x,y,z);
        }
    }
    glEnd();
    glFlush();

}

Я вычисляю точки на поверхности сферы и затем строю каждую точку. Но я получаю только один пиксель в левом нижнем углу экрана

1 Ответ

0 голосов
/ 31 октября 2011

Похоже, вы пытаетесь визуализировать сферу с радиусом 1.0, состоящую из примерно 180 / off_set кусочков окружностей с 360 / off_set точками.Как вы пришли к своим x, y и z?

Для каждой точки вы можете построить вектор единичной длины, например, на плоскости xy из theta, а затем повернуть его вокруг z-оси по phi и масштабируйте полученный вектор по радиусу сферы.

После просмотра математики убедитесь, что вы указали матрицы вида модели и проекции, и отметьте, используете ли вы стандартную кос/ sin функции, они принимают радианы, а не градусы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...