📄 draw_logo.c
字号:
glEnable(GL_NORMALIZE);
glBegin(GL_TRIANGLE_STRIP);
glNormal3fv(dcp[0]); glVertex3fv(dcp[0]);
glNormal3fv(dcp[0]);
glVertex3fv(dcp[1]);
glNormal3fv(dcp[2]); glVertex3fv(dcp[2]);
glNormal3fv(dcp[2]);
glVertex3fv(dcp[3]);
glNormal3fv(dcp[4]); glVertex3fv(dcp[4]);
glNormal3fv(dcp[4]);
glVertex3fv(dcp[5]);
glNormal3fv(dcp[6]); glVertex3fv(dcp[6]);
glNormal3fv(dcp[6]);
glVertex3fv(dcp[7]);
glNormal3fv(dcp[8]); glVertex3fv(dcp[8]);
glNormal3fv(dcp[8]);
glVertex3fv(dcp[9]);
glNormal3fv(dcp[10]); glVertex3fv(dcp[10]);
glNormal3fv(dcp[10]);
glVertex3fv(dcp[11]);
glNormal3fv(dcp[12]); glVertex3fv(dcp[12]);
glNormal3fv(dcp[12]);
glVertex3fv(dcp[13]);
glNormal3fv(dcp[14]); glVertex3fv(dcp[14]);
glNormal3fv(dcp[14]);
glVertex3fv(dcp[15]);
glNormal3fv(dcp[16]); glVertex3fv(dcp[16]);
glNormal3fv(dcp[16]);
glVertex3fv(dcp[17]);
glEnd();
}
static void draw_elbow(void) {
glBegin(GL_TRIANGLE_STRIP);
glNormal3fv(en[0][0]); glVertex3fv(ep[0][0]);
glNormal3fv(en[1][0]); glVertex3fv(ep[1][0]);
glNormal3fv(en[0][1]); glVertex3fv(ep[0][1]);
glNormal3fv(en[1][1]); glVertex3fv(ep[1][1]);
glNormal3fv(en[0][2]); glVertex3fv(ep[0][2]);
glNormal3fv(en[1][2]); glVertex3fv(ep[1][2]);
glNormal3fv(en[0][3]); glVertex3fv(ep[0][3]);
glNormal3fv(en[1][3]); glVertex3fv(ep[1][3]);
glNormal3fv(en[0][4]); glVertex3fv(ep[0][4]);
glNormal3fv(en[1][4]); glVertex3fv(ep[1][4]);
glNormal3fv(en[0][5]); glVertex3fv(ep[0][5]);
glNormal3fv(en[1][5]); glVertex3fv(ep[1][5]);
glNormal3fv(en[0][6]); glVertex3fv(ep[0][6]);
glNormal3fv(en[1][6]); glVertex3fv(ep[1][6]);
glNormal3fv(en[0][7]); glVertex3fv(ep[0][7]);
glNormal3fv(en[1][7]); glVertex3fv(ep[1][7]);
glNormal3fv(en[0][8]); glVertex3fv(ep[0][8]);
glNormal3fv(en[1][8]); glVertex3fv(ep[1][8]);
glEnd();
glBegin(GL_TRIANGLE_STRIP);
glNormal3fv(en[1][0]); glVertex3fv(ep[1][0]);
glNormal3fv(en[2][0]); glVertex3fv(ep[2][0]);
glNormal3fv(en[1][1]); glVertex3fv(ep[1][1]);
glNormal3fv(en[2][1]); glVertex3fv(ep[2][1]);
glNormal3fv(en[1][2]); glVertex3fv(ep[1][2]);
glNormal3fv(en[2][2]); glVertex3fv(ep[2][2]);
glNormal3fv(en[1][3]); glVertex3fv(ep[1][3]);
glNormal3fv(en[2][3]); glVertex3fv(ep[2][3]);
glNormal3fv(en[1][4]); glVertex3fv(ep[1][4]);
glNormal3fv(en[2][4]); glVertex3fv(ep[2][4]);
glNormal3fv(en[1][5]); glVertex3fv(ep[1][5]);
glNormal3fv(en[2][5]); glVertex3fv(ep[2][5]);
glNormal3fv(en[1][6]); glVertex3fv(ep[1][6]);
glNormal3fv(en[2][6]); glVertex3fv(ep[2][6]);
glNormal3fv(en[1][7]); glVertex3fv(ep[1][7]);
glNormal3fv(en[2][7]); glVertex3fv(ep[2][7]);
glNormal3fv(en[1][8]); glVertex3fv(ep[1][8]);
glNormal3fv(en[2][8]); glVertex3fv(ep[2][8]);
glEnd();
glBegin(GL_TRIANGLE_STRIP);
glNormal3fv(en[2][0]); glVertex3fv(ep[2][0]);
glNormal3fv(en[3][0]); glVertex3fv(ep[3][0]);
glNormal3fv(en[2][1]); glVertex3fv(ep[2][1]);
glNormal3fv(en[3][1]); glVertex3fv(ep[3][1]);
glNormal3fv(en[2][2]); glVertex3fv(ep[2][2]);
glNormal3fv(en[3][2]); glVertex3fv(ep[3][2]);
glNormal3fv(en[2][3]); glVertex3fv(ep[2][3]);
glNormal3fv(en[3][3]); glVertex3fv(ep[3][3]);
glNormal3fv(en[2][4]); glVertex3fv(ep[2][4]);
glNormal3fv(en[3][4]); glVertex3fv(ep[3][4]);
glNormal3fv(en[2][5]); glVertex3fv(ep[2][5]);
glNormal3fv(en[3][5]); glVertex3fv(ep[3][5]);
glNormal3fv(en[2][6]); glVertex3fv(ep[2][6]);
glNormal3fv(en[3][6]); glVertex3fv(ep[3][6]);
glNormal3fv(en[2][7]); glVertex3fv(ep[2][7]);
glNormal3fv(en[3][7]); glVertex3fv(ep[3][7]);
glNormal3fv(en[2][8]); glVertex3fv(ep[2][8]);
glNormal3fv(en[3][8]); glVertex3fv(ep[3][8]);
glEnd();
glBegin(GL_TRIANGLE_STRIP);
glNormal3fv(en[3][0]); glVertex3fv(ep[3][0]);
glNormal3fv(en[4][0]); glVertex3fv(ep[4][0]);
glNormal3fv(en[3][1]); glVertex3fv(ep[3][1]);
glNormal3fv(en[4][1]); glVertex3fv(ep[4][1]);
glNormal3fv(en[3][2]); glVertex3fv(ep[3][2]);
glNormal3fv(en[4][2]); glVertex3fv(ep[4][2]);
glNormal3fv(en[3][3]); glVertex3fv(ep[3][3]);
glNormal3fv(en[4][3]); glVertex3fv(ep[4][3]);
glNormal3fv(en[3][4]); glVertex3fv(ep[3][4]);
glNormal3fv(en[4][4]); glVertex3fv(ep[4][4]);
glNormal3fv(en[3][5]); glVertex3fv(ep[3][5]);
glNormal3fv(en[4][5]); glVertex3fv(ep[4][5]);
glNormal3fv(en[3][6]); glVertex3fv(ep[3][6]);
glNormal3fv(en[4][6]); glVertex3fv(ep[4][6]);
glNormal3fv(en[3][7]); glVertex3fv(ep[3][7]);
glNormal3fv(en[4][7]); glVertex3fv(ep[4][7]);
glNormal3fv(en[3][8]); glVertex3fv(ep[3][8]);
glNormal3fv(en[4][8]); glVertex3fv(ep[4][8]);
glEnd();
glBegin(GL_TRIANGLE_STRIP);
glNormal3fv(en[4][0]); glVertex3fv(ep[4][0]);
glNormal3fv(en[5][0]); glVertex3fv(ep[5][0]);
glNormal3fv(en[4][1]); glVertex3fv(ep[4][1]);
glNormal3fv(en[5][1]); glVertex3fv(ep[5][1]);
glNormal3fv(en[4][2]); glVertex3fv(ep[4][2]);
glNormal3fv(en[5][2]); glVertex3fv(ep[5][2]);
glNormal3fv(en[4][3]); glVertex3fv(ep[4][3]);
glNormal3fv(en[5][3]); glVertex3fv(ep[5][3]);
glNormal3fv(en[4][4]); glVertex3fv(ep[4][4]);
glNormal3fv(en[5][4]); glVertex3fv(ep[5][4]);
glNormal3fv(en[4][5]); glVertex3fv(ep[4][5]);
glNormal3fv(en[5][5]); glVertex3fv(ep[5][5]);
glNormal3fv(en[4][6]); glVertex3fv(ep[4][6]);
glNormal3fv(en[5][6]); glVertex3fv(ep[5][6]);
glNormal3fv(en[4][7]); glVertex3fv(ep[4][7]);
glNormal3fv(en[5][7]); glVertex3fv(ep[5][7]);
glNormal3fv(en[4][8]); glVertex3fv(ep[4][8]);
glNormal3fv(en[5][8]); glVertex3fv(ep[5][8]);
glEnd();
glBegin(GL_TRIANGLE_STRIP);
glNormal3fv(en[5][0]); glVertex3fv(ep[5][0]);
glNormal3fv(en[6][0]); glVertex3fv(ep[6][0]);
glNormal3fv(en[5][1]); glVertex3fv(ep[5][1]);
glNormal3fv(en[6][1]); glVertex3fv(ep[6][1]);
glNormal3fv(en[5][2]); glVertex3fv(ep[5][2]);
glNormal3fv(en[6][2]); glVertex3fv(ep[6][2]);
glNormal3fv(en[5][3]); glVertex3fv(ep[5][3]);
glNormal3fv(en[6][3]); glVertex3fv(ep[6][3]);
glNormal3fv(en[5][4]); glVertex3fv(ep[5][4]);
glNormal3fv(en[6][4]); glVertex3fv(ep[6][4]);
glNormal3fv(en[5][5]); glVertex3fv(ep[5][5]);
glNormal3fv(en[6][5]); glVertex3fv(ep[6][5]);
glNormal3fv(en[5][6]); glVertex3fv(ep[5][6]);
glNormal3fv(en[6][6]); glVertex3fv(ep[6][6]);
glNormal3fv(en[5][7]); glVertex3fv(ep[5][7]);
glNormal3fv(en[6][7]); glVertex3fv(ep[6][7]);
glNormal3fv(en[5][8]); glVertex3fv(ep[5][8]);
glNormal3fv(en[6][8]); glVertex3fv(ep[6][8]);
glEnd();
}
static void bend_forward(void) {
glTranslatef(0.0, 1.000000, 0.0);
glRotatef (0.1 * (900), 1.0, 0.0, 0.0);
glTranslatef(0.0, -1.000000, 0.0);
}
static void bend_left(void) {
glRotatef (0.1 * (-900), 0.0, 0.0, 1.0);
glTranslatef(0.0, 1.000000, 0.0);
glRotatef (0.1 * (900), 1.0, 0.0, 0.0);
glTranslatef(0.0, -1.000000, 0.0);
}
static void bend_right(void) {
glRotatef (0.1 * (900), 0.0, 0.0, 1.0);
glTranslatef(0.0, 1.000000, 0.0);
glRotatef (0.1 * (900), 1.0, 0.0, 0.0);
glTranslatef(0.0, -1.000000, 0.0);
}
void draw_logo(void) {
glCallList( MAT_LOGO);
glTranslatef(5.500000, -3.500000, 4.500000);
glTranslatef(0.0, 0.0, -7.000000);
draw_double_cylinder();
bend_forward();
draw_elbow();
glTranslatef(0.0, 0.0, -7.000000);
draw_double_cylinder();
bend_forward();
draw_elbow();
glTranslatef(0.0, 0.0, -5.000000);
draw_single_cylinder();
bend_right();
draw_elbow();
glTranslatef(0.0, 0.0, -7.000000);
draw_double_cylinder();
bend_forward();
draw_elbow();
glTranslatef(0.0, 0.0, -7.000000);
draw_double_cylinder();
bend_forward();
draw_elbow();
glTranslatef(0.0, 0.0, -5.000000);
draw_single_cylinder();
bend_left();
draw_elbow();
glTranslatef(0.0, 0.0, -7.000000);
draw_double_cylinder();
bend_forward();
draw_elbow();
glTranslatef(0.0, 0.0, -7.000000);
draw_double_cylinder();
bend_forward();
draw_elbow();
glTranslatef(0.0, 0.0, -5.000000);
draw_single_cylinder();
bend_right();
draw_elbow();
glTranslatef(0.0, 0.0, -7.000000);
draw_double_cylinder();
bend_forward();
draw_elbow();
glTranslatef(0.0, 0.0, -7.000000);
draw_double_cylinder();
bend_forward();
draw_elbow();
glTranslatef(0.0, 0.0, -5.000000);
draw_single_cylinder();
bend_left();
draw_elbow();
glTranslatef(0.0, 0.0, -7.000000);
draw_double_cylinder();
bend_forward();
draw_elbow();
glTranslatef(0.0, 0.0, -7.000000);
draw_double_cylinder();
bend_forward();
draw_elbow();
glTranslatef(0.0, 0.0, -5.000000);
draw_single_cylinder();
bend_right();
draw_elbow();
glTranslatef(0.0, 0.0, -7.000000);
draw_double_cylinder();
bend_forward();
draw_elbow();
glTranslatef(0.0, 0.0, -7.000000);
draw_double_cylinder();
bend_forward();
draw_elbow();
glTranslatef(0.0, 0.0, -5.000000);
draw_single_cylinder();
bend_left();
draw_elbow();
glDisable(GL_NORMALIZE);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -