static void draw_dodeca( void ) { GLuint list; #define TAU ((SQRT5+1)/2) list = glGenLists( 1 ); glNewList( list, GL_COMPILE ); PENTAGON(1,seno,edgedivisions,sqr(TAU) * sqrt((TAU+2)/5) / 2); glEndList(); glPushMatrix(); glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialColor[0]); glCallList(list); glRotatef(180,0,0,1); glPushMatrix(); glRotatef(-dodecaangle,1,0,0); glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialColor[1]); glCallList(list); glPopMatrix(); glPushMatrix(); glRotatef(-dodecaangle,cos72,sin72,0); glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialColor[2]); glCallList(list); glPopMatrix(); glPushMatrix(); glRotatef(-dodecaangle,cos72,-sin72,0); glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialColor[3]); glCallList(list); glPopMatrix(); glPushMatrix(); glRotatef(dodecaangle,cos36,-sin36,0); glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialColor[4]); glCallList(list); glPopMatrix(); glRotatef(dodecaangle,cos36,sin36,0); glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialColor[5]); glCallList(list); glPopMatrix(); glRotatef(180,1,0,0); glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialColor[6]); glCallList(list); glRotatef(180,0,0,1); glPushMatrix(); glRotatef(-dodecaangle,1,0,0); glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialColor[7]); glCallList(list); glPopMatrix(); glPushMatrix(); glRotatef(-dodecaangle,cos72,sin72,0); glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialColor[8]); glCallList(list); glPopMatrix(); glPushMatrix(); glRotatef(-dodecaangle,cos72,-sin72,0); glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialColor[9]); glCallList(list); glPopMatrix(); glPushMatrix(); glRotatef(dodecaangle,cos36,-sin36,0); glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialColor[10]); glCallList(list); glPopMatrix(); glRotatef(dodecaangle,cos36,sin36,0); glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialColor[11]); glCallList(list); glDeleteLists(list,1); }
static void draw_dodeca(ModeInfo * mi) { morph3dstruct *mp = &morph3d[MI_SCREEN(mi)]; #define TAU ((SQRT5+1)/2) glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, mp->MaterialColor[0]); PENTAGON(1, mp->seno, mp->edgedivisions, sqr(TAU) * sqrt((TAU + 2) / 5) / 2, mp->VisibleSpikes); glPushMatrix(); glRotatef(180, 0, 0, 1); glPushMatrix(); glRotatef(-dodecaangle, 1, 0, 0); glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, mp->MaterialColor[1]); PENTAGON(1, mp->seno, mp->edgedivisions, sqr(TAU) * sqrt((TAU + 2) / 5) / 2, mp->VisibleSpikes); glPopMatrix(); glPushMatrix(); glRotatef(-dodecaangle, cos72, sin72, 0); glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, mp->MaterialColor[2]); PENTAGON(1, mp->seno, mp->edgedivisions, sqr(TAU) * sqrt((TAU + 2) / 5) / 2, mp->VisibleSpikes); glPopMatrix(); glPushMatrix(); glRotatef(-dodecaangle, cos72, -sin72, 0); glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, mp->MaterialColor[3]); PENTAGON(1, mp->seno, mp->edgedivisions, sqr(TAU) * sqrt((TAU + 2) / 5) / 2, mp->VisibleSpikes); glPopMatrix(); glPushMatrix(); glRotatef(dodecaangle, cos36, -sin36, 0); glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, mp->MaterialColor[4]); PENTAGON(1, mp->seno, mp->edgedivisions, sqr(TAU) * sqrt((TAU + 2) / 5) / 2, mp->VisibleSpikes); glPopMatrix(); glRotatef(dodecaangle, cos36, sin36, 0); glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, mp->MaterialColor[5]); PENTAGON(1, mp->seno, mp->edgedivisions, sqr(TAU) * sqrt((TAU + 2) / 5) / 2, mp->VisibleSpikes); glPopMatrix(); glRotatef(180, 1, 0, 0); glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, mp->MaterialColor[6]); PENTAGON(1, mp->seno, mp->edgedivisions, sqr(TAU) * sqrt((TAU + 2) / 5) / 2, mp->VisibleSpikes); glRotatef(180, 0, 0, 1); glPushMatrix(); glRotatef(-dodecaangle, 1, 0, 0); glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, mp->MaterialColor[7]); PENTAGON(1, mp->seno, mp->edgedivisions, sqr(TAU) * sqrt((TAU + 2) / 5) / 2, mp->VisibleSpikes); glPopMatrix(); glPushMatrix(); glRotatef(-dodecaangle, cos72, sin72, 0); glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, mp->MaterialColor[8]); PENTAGON(1, mp->seno, mp->edgedivisions, sqr(TAU) * sqrt((TAU + 2) / 5) / 2, mp->VisibleSpikes); glPopMatrix(); glPushMatrix(); glRotatef(-dodecaangle, cos72, -sin72, 0); glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, mp->MaterialColor[9]); PENTAGON(1, mp->seno, mp->edgedivisions, sqr(TAU) * sqrt((TAU + 2) / 5) / 2, mp->VisibleSpikes); glPopMatrix(); glPushMatrix(); glRotatef(dodecaangle, cos36, -sin36, 0); glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, mp->MaterialColor[10]); PENTAGON(1, mp->seno, mp->edgedivisions, sqr(TAU) * sqrt((TAU + 2) / 5) / 2, mp->VisibleSpikes); glPopMatrix(); glRotatef(dodecaangle, cos36, sin36, 0); glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, mp->MaterialColor[11]); PENTAGON(1, mp->seno, mp->edgedivisions, sqr(TAU) * sqrt((TAU + 2) / 5) / 2, mp->VisibleSpikes); }