Qt OpenGL使用glVertex3f绘制球体
我需要在OpenGL上绘制球体,而无需使用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);
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、 那么横向是切片,纵向是堆叠?