我使用GL_TRIANGLE_FAN
创建了一个圆锥体。
// draw the upper part of the cone
glBegin(GL_TRIANGLE_FAN);
glVertex3f(0, 0, height);
for (int angle = 0; angle < 360; angle++) {
glVertex3f(sin(angle) * radius, cos(angle) * radius, 0);
}
glEnd();
// draw the base of the cone
glBegin(GL_TRIANGLE_FAN);
glVertex3f(0, 0, 0);
for (int angle = 0; angle < 360; angle++) {
// normal is just pointing down
glNormal3f(0, -1, 0);
glVertex3f(sin(angle) * radius, cos(angle) * radius, 0);
}
glEnd();
我该如何获取表面法线?对于底部,我可以说法线只是指向下方的吗?
更新:我尝试使用
for (int angle = 0; angle < 360; angle++) {
glNormal3f(sin(angle), cos(angle), 0);
glVertex3f(sin(angle) * radius, cos(angle) * radius, 0);
}
但在某些角度看起来很奇怪... 第二幅图像看起来只是一个实色?
(sin, 0, cos)
作为“向上”的部分(Y坐标)不变。然而,Y坐标(以及其他两个坐标)取决于锥体斜率的角度,因此更像是(cos(slopeAngle)* sin(angle),sin(slopeAngle),cos(slopeAngle)* cos(angle))
。 - Nobody moving away from SE