Qt OpenGL使用glVertex3f绘制球体

Qt OpenGL使用glVertex3f绘制球体,qt,opengl,geometry,trigonometry,Qt,Opengl,Geometry,Trigonometry,我需要在OpenGL上绘制球体,而无需使用gluSphere()函数。我在某个地方找到了这个函数: void drawSphere(double r, int lats, int longs) { int i, j; for(i = 0; i <= lats; i++) { double lat0 = M_PI * (-0.5 + (double) (i - 1) / lats); double z0 = sin(lat0);

我需要在OpenGL上绘制球体,而无需使用
gluSphere()
函数。我在某个地方找到了这个函数:

    void drawSphere(double r, int lats, int longs) {
    int i, j;
    for(i = 0; i <= lats; i++) {
        double lat0 = M_PI * (-0.5 + (double) (i - 1) / lats);
       double z0  = sin(lat0);
       double zr0 =  cos(lat0);

       double lat1 = M_PI * (-0.5 + (double) i / lats);
       double z1 = sin(lat1);
       double zr1 = cos(lat1);

       glBegin(GL_QUAD_STRIP);
       for(j = 0; j <= longs; j++) {
           double lng = 2 * M_PI * (double) (j - 1) / longs;
           double x = cos(lng);
           double y = sin(lng);

           glNormal3f(x * zr0, y * zr0, z0);
           glVertex3f(x * zr0, y * zr0, z0);
           glNormal3f(x * zr1, y * zr1, z1);
           glVertex3f(x * zr1, y * zr1, z1);
       }
       glEnd();
   }
 }
void drawSphere(双r、整数lats、整数longs){
int i,j;

对于(i=0;i您的理解基本正确。您是否使用过极坐标?这是类似的。您可以将纬度视为穿过球体的一部分,就像在地球的球体上一样。对于给定的纬度,您需要在该纬度的圆周围生成点。这就是您所看到的正弦和余弦s、 那么横向是切片,纵向是堆叠?