我试图用openGL绘制一个球体,但我无法找到我的错误...
只绘制了一半的三角形,如here in the picture。
到目前为止,这是我的算法:
// The angle step used in iteration
float a = (2.0f*M_PI)/8.0;
float c = 0.0f;
for (float theta = 0.0f; theta < 2.0f*M_PI; theta += a, c += a/2.0f)
for (float phi = 0.0f; phi < 2.0f*M_PI; phi += a) {
// Here something is missing...
glBegin(GL_TRIANGLES);
float p_1[3] = {sin(theta)*cos(phi+c),
sin(theta)*sin(phi+c),
cos(theta)};
glVertex3f(p_1[0], p_1[1], p_1[2]);
float p_3[3] = {sin(theta+a)*cos(phi+c+a/2.0f),
sin(theta+a)*sin(phi+c+a/2.0f),
cos(theta+a)};
glVertex3f(p_3[0], p_3[1], p_3[2]);
float p_2[3] = {sin(theta)*cos(phi+c+a),
sin(theta)*sin(phi+c+a),
cos(theta)};
glVertex3f(p_2[0], p_2[1], p_2[2]);
glEnd();
}
答案 0 :(得分:0)
可能是你的三角形有一半的方向错误吗? http://math.hws.edu/graphicsnotes/c3/s2.html
答案 1 :(得分:0)
此代码有几个问题:
c
在做什么。不确定这是否是一个问题,或者我还没有得到它。glBegin
和glEnd
来电置于循环之外。