📄 def_logo.c
字号:
void def_logo(void)
{
def_O();
def_P();
def_El();
def_G();
}
void draw_O(void)
{
int i,j,k;
for (i=0;i<ACC;i++)
{
k = i+1;
if (k>=ACC)
k = 0;
glBegin(GL_QUAD_STRIP);
for (j=0;j<ACC4;j++)
{
glNormal3f(normal_O[j][k][0], normal_O[j][k][1], normal_O[j][k][2]);
glVertex3f(char_O[j][k][0], char_O[j][k][1], char_O[j][k][2]);
glNormal3f(normal_O[j][i][0], normal_O[j][i][1], normal_O[j][i][2]);
glVertex3f(char_O[j][i][0], char_O[j][i][1], char_O[j][i][2]);
}
glNormal3f(normal_O[0][k][0], normal_O[0][k][1], normal_O[0][k][2]);
glVertex3f(char_O[0][k][0], char_O[0][k][1], char_O[0][k][2]);
glNormal3f(normal_O[0][i][0], normal_O[0][i][1], normal_O[0][i][2]);
glVertex3f(char_O[0][i][0], char_O[0][i][1], char_O[0][i][2]);
glEnd();
}
}
void draw_P(void)
{
int i,j,k;
for (i=0;i<ACC;i++)
{
k = i+1;
if (k>=ACC)
k = 0;
glBegin(GL_QUAD_STRIP);
for (j=0;j<ACC2;j++)
{
glNormal3f(normal_P[j][k][0], normal_P[j][k][1], normal_P[j][k][2]);
glVertex3f(char_P[j][k][0], char_P[j][k][1], char_P[j][k][2]);
glNormal3f(normal_P[j][i][0], normal_P[j][i][1], normal_P[j][i][2]);
glVertex3f(char_P[j][i][0], char_P[j][i][1], char_P[j][i][2]);
}
glNormal3f(normal_P[0][k][0], normal_P[0][k][1], normal_P[0][k][2]);
glVertex3f(char_P[0][k][0], char_P[0][k][1], char_P[0][k][2]);
glNormal3f(normal_P[0][i][0], normal_P[0][i][1], normal_P[0][i][2]);
glVertex3f(char_P[0][i][0], char_P[0][i][1], char_P[0][i][2]);
glEnd();
}
j = 0;
glBegin(GL_QUAD_STRIP);
for (i=0;i<ACC;i++)
{
glNormal3f(normal_P[0][i][0], normal_P[0][i][1], normal_P[0][i][2]);
glVertex3f(char_P[0][i][0]-4.3, -1.6, 1.0*char_P[0][i][2]);
glVertex3f(char_P[0][i][0]-4.3, 6.0, 1.0*char_P[0][i][2]);
}
glNormal3f(normal_P[0][0][0], normal_P[0][0][1], normal_P[0][0][2]);
glVertex3f(char_P[0][0][0]-4.3, -1.6, 1.0*char_P[0][0][2]);
glVertex3f(char_P[0][0][0]-4.3, 6.0, 1.0*char_P[0][0][2]);
glEnd();
}
void draw_E(void)
{
int i,j,k;
for (i=0;i<ACC;i++)
{
k = i+1;
if (k>=ACC)
k = 0;
glBegin(GL_QUAD_STRIP);
glNormal3f(normal_P[0][k][0], normal_P[0][k][1], normal_P[0][k][2]);
glVertex3f(char_P[0][k][0], char_P[0][k][1]+0.0, char_P[0][k][2]);
glNormal3f(normal_P[0][i][0], normal_P[0][i][1], normal_P[0][i][2]);
glVertex3f(char_P[0][i][0], char_P[0][i][1]+0.0, char_P[0][i][2]);
for (j=1;j<ACC2;j++)
{
glNormal3f(normal_P[j][k][0], normal_P[j][k][1], normal_P[j][k][2]);
glVertex3f(char_P[j][k][0], char_P[j][k][1], char_P[j][k][2]);
glNormal3f(normal_P[j][i][0], normal_P[j][i][1], normal_P[j][i][2]);
glVertex3f(char_P[j][i][0], char_P[j][i][1], char_P[j][i][2]);
}
glNormal3f(normal_P[0][k][0], normal_P[0][k][1], normal_P[0][k][2]);
glVertex3f(char_P[0][k][0], char_P[0][k][1]-0.4, char_P[0][k][2]);
glNormal3f(normal_P[0][i][0], normal_P[0][i][1], normal_P[0][i][2]);
glVertex3f(char_P[0][i][0], char_P[0][i][1]-0.4, char_P[0][i][2]);
glEnd();
}
glBegin(GL_QUAD_STRIP);
j = ACC2*3/4;
for (i=0;i<ACC;i++)
{
glNormal3f(normal_P[j][i][0], normal_P[j][i][1], normal_P[j][i][2]);
glVertex3f(-2.0, char_P[j][i][1]+2.55, 1.0*char_P[j][i][2]);
glVertex3f(2.0, char_P[j][i][1]+2.55, 1.0*char_P[j][i][2]);
}
glNormal3f(normal_P[j][0][0], normal_P[j][0][1], normal_P[j][0][2]);
glVertex3f(-2.0, char_P[j][0][1]+2.55, 1.0*char_P[j][0][2]);
glVertex3f(2.0, char_P[j][0][1]+2.55, 1.0*char_P[j][0][2]);
glEnd();
}
void draw_El(void)
{
int i,j,k;
for (i=0;i<ACC;i++)
{
k = i+1;
if (k>=ACC)
k = 0;
glBegin(GL_QUAD_STRIP);
for (j=0;j<=ACC3;j++)
{
glNormal3f(normal_El[j][k][0], normal_El[j][k][1], normal_El[j][k][2]);
glVertex3f(char_El[j][k][0], char_El[j][k][1], char_El[j][k][2]);
glNormal3f(normal_El[j][i][0], normal_El[j][i][1], normal_El[j][i][2]);
glVertex3f(char_El[j][i][0], char_El[j][i][1], char_El[j][i][2]);
}
glEnd();
}
}
void draw_N(void)
{
int i,j,k;
for (i=0;i<ACC;i++)
{
k = i+1;
if (k>=ACC)
k = 0;
glBegin(GL_QUAD_STRIP);
for (j=0;j<=ACC2/2;j++)
{
glNormal3f(normal_P[j][k][0], normal_P[j][k][1], normal_P[j][k][2]);
glVertex3f(char_P[j][k][0], char_P[j][k][1], char_P[j][k][2]);
glNormal3f(normal_P[j][i][0], normal_P[j][i][1], normal_P[j][i][2]);
glVertex3f(char_P[j][i][0], char_P[j][i][1], char_P[j][i][2]);
}
glEnd();
}
j = 0;
glBegin(GL_QUAD_STRIP);
for (i=0;i<ACC;i++)
{
glNormal3f(normal_P[0][i][0], normal_P[0][i][1], normal_P[0][i][2]);
glVertex3f(char_P[0][i][0]-4.3, 0.2, 1.0*char_P[0][i][2]);
glVertex3f(char_P[0][i][0]-4.3, 6.0, 1.0*char_P[0][i][2]);
}
glNormal3f(normal_P[0][0][0], normal_P[0][0][1], normal_P[0][0][2]);
glVertex3f(char_P[0][0][0]-4.3, 0.2, 1.0*char_P[0][0][2]);
glVertex3f(char_P[0][0][0]-4.3, 6.0, 1.0*char_P[0][0][2]);
glEnd();
j = 0;
glBegin(GL_QUAD_STRIP);
for (i=0;i<ACC;i++)
{
glNormal3f(normal_P[0][i][0], normal_P[0][i][1], normal_P[0][i][2]);
glVertex3f(char_P[0][i][0], 0.2, 1.0*char_P[0][i][2]);
glVertex3f(char_P[0][i][0], 3.4, 1.0*char_P[0][i][2]);
}
glNormal3f(normal_P[0][0][0], normal_P[0][0][1], normal_P[0][0][2]);
glVertex3f(char_P[0][0][0], 0.2, 1.0*char_P[0][0][2]);
glVertex3f(char_P[0][0][0], 3.4, 1.0*char_P[0][0][2]);
glEnd();
}
void draw_G(void)
{
int i,j,k;
for (i=0;i<ACC;i++)
{
k = i+1;
if (k>=ACC)
k = 0;
glBegin(GL_QUAD_STRIP);
glNormal3f(normal_G[0][k][0], normal_G[0][k][1], normal_G[0][k][2]);
glVertex3f(char_G[0][k][0], char_G[0][k][1]+1.2, char_G[0][k][2]);
glNormal3f(normal_G[0][i][0], normal_G[0][i][1], normal_G[0][i][2]);
glVertex3f(char_G[0][i][0], char_G[0][i][1]+1.2, char_G[0][i][2]);
for (j=1;j<ACC4;j++)
{
glNormal3f(normal_G[j][k][0], normal_G[j][k][1], normal_G[j][k][2]);
glVertex3f(char_G[j][k][0], char_G[j][k][1], char_G[j][k][2]);
glNormal3f(normal_G[j][i][0], normal_G[j][i][1], normal_G[j][i][2]);
glVertex3f(char_G[j][i][0], char_G[j][i][1], char_G[j][i][2]);
}
glEnd();
}
glBegin(GL_QUAD_STRIP);
j = ACC4*3/4;
for (i=0;i<ACC;i++)
{
glNormal3f(accSIN[i], 0.0, accCOS[i] );
glVertex3f(4.0+0.9*accSIN[i], 4.0+0.9*accSIN[i], 0.9*accCOS[i] );
glVertex3f(4.0+0.9*accSIN[i], 0.0, 0.9*accCOS[i]);
}
glNormal3f(accSIN[0], 0.0, accCOS[0] );
glVertex3f(4.0+0.9*accSIN[0], 4.0+0.9*accSIN[0], 0.9*accCOS[0] );
glVertex3f(4.0+0.9*accSIN[0], 0.0, 0.9*accCOS[0]);
glEnd();
glBegin(GL_QUAD_STRIP);
j = ACC4*3/4;
for (i=0;i<ACC;i++)
{
glNormal3f(0.0, accSIN[i], accCOS[i] );
glVertex3f(4.0-0.9*accSIN[i], 4.0-0.9*accSIN[i], 0.9*accCOS[i] );
glVertex3f(0.0, 4.0-0.9*accSIN[i], 0.9*accCOS[i]);
}
glNormal3f(0.0, accSIN[0], accCOS[0] );
glVertex3f(4.0-0.9*accSIN[0], 4.0-0.9*accSIN[0], 0.9*accCOS[0] );
glVertex3f(0.0, 4.0-0.9*accSIN[0], 0.9*accCOS[0]);
glEnd();
j = ACC4*3/4;
glBegin(GL_TRIANGLE_FAN);
glNormal3f(-1.0, 0.0, 0.0);
glVertex3f(0.0, 4.0, 0.0);
for (i=0;i<ACC;i++)
glVertex3f(0.0, 4.0+0.9*accSIN[i], 0.9*accCOS[i]);
glVertex3f(0.0, 4.0+0.9*accSIN[0], 0.9*accCOS[0]);
glEnd();
}
void draw_L(void)
{
int i;
glBegin(GL_QUAD_STRIP);
for (i=0;i<ACC;i++)
{
glNormal3f(accSIN[i], 0.0, accCOS[i] );
glVertex3f(0.9*accSIN[i], 9.6, 0.9*accCOS[i]);
glVertex3f(0.9*accSIN[i], 0.9+0.9*accSIN[i], 0.9*accCOS[i] );
}
glNormal3f(accSIN[0], 0.0, accCOS[0] );
glVertex3f(0.9*accSIN[0], 9.6, 0.9*accCOS[0]);
glVertex3f(0.9*accSIN[0], 0.9+0.9*accSIN[0], 0.9*accCOS[0] );
glEnd();
glBegin(GL_QUAD_STRIP);
for (i=0;i<ACC;i++)
{
glNormal3f(0.0, accSIN[i], accCOS[i] );
glVertex3f(0.9*accSIN[i], 0.9+0.9*accSIN[i], 0.9*accCOS[i] );
glVertex3f(5.6, 0.9+0.9*accSIN[i], 0.9*accCOS[i]);
}
glNormal3f(0.0, accSIN[0], accCOS[0] );
glVertex3f(0.9*accSIN[0], 0.9+0.9*accSIN[0], 0.9*accCOS[0] );
glVertex3f(5.6, 0.9+0.9*accSIN[0], 0.9*accCOS[0]);
glEnd();
glBegin(GL_TRIANGLE_FAN);
glNormal3f(1.0, 0.0, 0.0);
glVertex3f(5.6, 0.9, 0.0);
for (i=ACC-1;i>=0;i--)
glVertex3f(5.6, 0.9+0.9*accSIN[i], 0.9*accCOS[i]);
glVertex3f(5.6, 0.9+0.9*accSIN[ACC-1], 0.9*accCOS[ACC-1]);
glEnd();
}
void draw_part(int i)
{
glPushMatrix();
glTranslatef(TRANS[i][0]*progress, TRANS[i][1]*progress, TRANS[i][2]*progress);
glRotatef(ROT[i]*progress, ROTAXIS[i][0], ROTAXIS[i][1], ROTAXIS[i][2]);
switch(i)
{
case 0: draw_El(); break;
case 1: draw_O(); break;
case 2: draw_P(); break;
case 3: draw_E(); break;
case 4: draw_N(); break;
case 5: draw_G(); break;
case 6: draw_L(); break;
}
glPopMatrix();
}
void draw_logo(void)
{
groen_texture();
glEnable(GL_CULL_FACE);
glTranslatef(-2.8, 0.0, 0.0);
draw_part(0);
glTranslatef(-12.0, 4.3, 0.0);
draw_part(1);
glTranslatef(7.3, 0.0, 0.0);
draw_part(2);
glTranslatef(5.4, 0.0, 0.0);
draw_part(3);
glTranslatef(5.4, 0.0, 0.0);
draw_part(4);
glTranslatef(7.4, 0.0, 0.0);
draw_part(5);
glTranslatef(6.8, 0.0, 0.0);
draw_part(6);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -