您的位置:首页 > 运维架构

OpenGL绘制有立体感的五边形

2012-05-25 09:21 218 查看
//不知道怎么描述,就是DNA分子模型中那个五边形的东西
//x,y,z为中心位置,r为半径,d为厚度,即前面或后面与中间之间的距离
void drawFivePolygn(GLfloat x, GLfloat y, GLfloat z, GLfloat r, GLfloat d)
{
int i=0; GLfloat frontFive[6][3]; GLfloat middleFive[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; middleFive[i][0] = x+r*(cos(72.0*i*PI/180));
middleFive[i][1] = y+r*(sin(72.0*i*PI/180));
middleFive[i][2] = z;
} //前面的五边形
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(middleFive[i]);
glVertex3fv(middleFive[(i+1)%5]);
glVertex3fv(frontFive[(i+1)%5]);
}
glEnd(); //后面边上的一圈四边形
glBegin(GL_QUADS);
for(i=0; i<=4; i++)
{
glVertex3fv(middleFive[i]);
glVertex3fv(backFive[i]);
glVertex3fv(backFive[(i+1)%5]);
glVertex3fv(middleFive[(i+1)%5]);
}
glEnd();}




内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: