//x,y,z为中心位置,r为半径,d为厚度,即前面或后面与中间之间的距离
//跟上一个版本有区别:前面和后面之间有一道楞,宽度为k
void drawFivePolygn2(GLfloat x, GLfloat y, GLfloat z, GLfloat r, GLfloat d, GLfloat k)
{
int i=0;
GLfloat frontFive[6][3];
GLfloat middleFivefront[6][3];
GLfloat middleFiveback[6][3];
GLfloat backFive[6][3];
for(i=0; i<6; i++)
{
frontFive[i][0] = x+r*2/3*(cos(72.0*i*PI/180));
frontFive[i][1] = y+r*2/3*(sin(72.0*i*PI/180));
frontFive[i][2] = z+d;
backFive[i][0] = x+r*2/3*(cos(72.0*i*PI/180));
backFive[i][1] = y+r*2/3*(sin(72.0*i*PI/180));
backFive[i][2] = z-d;
middleFivefront[i][0] = x+r*(cos(72.0*i*PI/180));
middleFivefront[i][1] = y+r*(sin(72.0*i*PI/180));
middleFivefront[i][2] = z+k;
middleFiveback[i][0] = x+r*(cos(72.0*i*PI/180));
middleFiveback[i][1] = y+r*(sin(72.0*i*PI/180));
middleFiveback[i][2] = z-k;
}
//前面的五边形
glBegin(GL_POLYGON);
for(i=0; i<=5; i++)
{
glVertex3fv(frontFive[i]);
}
glEnd();
//后面的五边形
glBegin(GL_POLYGON);
for(i=0; i<=5; i++)
{
glVertex3fv(backFive[i]);
}
glEnd();
glColor3f(1.0,0.0,0.0);
//前面边上的一圈四边形
glBegin(GL_QUADS);
for(i=0; i<=4; i++)
{
glVertex3fv(frontFive[i]);
glVertex3fv(middleFivefront[i]);
glVertex3fv(middleFivefront[(i+1)%5]);
glVertex3fv(frontFive[(i+1)%5]);
}
glEnd();
glColor3f(0.0,0.0,1.0);
//后面边上的一圈四边形
glBegin(GL_QUADS);
for(i=0; i<=4; i++)
{
glVertex3fv(middleFiveback[i]);
glVertex3fv(backFive[i]);
glVertex3fv(backFive[(i+1)%5]);
glVertex3fv(middleFiveback[(i+1)%5]);
}
glEnd();
glColor3f(0.0,0.0,0.0);
//中间一圈
glBegin(GL_QUADS);
for(i=0; i<=4; i++)
{
glVertex3fv(middleFiveback[i]);
glVertex3fv(middleFivefront[i]);
glVertex3fv(middleFivefront[(i+1)%5]);
glVertex3fv(middleFiveback[(i+1)%5]);
}
glEnd();