#include <GL/glut.h>
#include <math.h>
float PI = 3.141592;
float xroot = 0, yroot = 0;
void SetUpRC() {
glClearColor(1, 1, 1, 1);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(45, 1, 1, 5000);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
gluLookAt(0, 0, 500, 0, 0, 0, 0, 1, 0);
}
void base_1(float height,float radius,float r, float g, float b) {
glColor3f(r, g, b);
glBegin(GL_QUAD_STRIP);
for (float i = 0; i <=2*PI+1; i+=2*PI/100)
{
float x = radius * cos(i);
float z = radius * sin(i);
glVertex3f(x, height, z);
glVertex3f(x, -height, z);
}
glEnd();
glBegin(GL_TRIANGLE_FAN);
glVertex3f(0, height+1, 0);
for (float i = 0; i <= 2 * PI + 1; i += 2 * PI / 100)
{
float x = radius * cos(i);
float z = radius * sin(i);
glVertex3f(x, height, z);
}
glEnd();
glBegin(GL_TRIANGLE_FAN);
glVertex3f(0, -height, 0);
for (float i = 0; i <= 2 * PI + 1; i += 2 * PI / 100)
{
float x = radius * cos(i);
float z = radius * sin(i);
glVertex3f(x, -height, z);
}
glEnd();
}
void ww() {
glColor3f(.2, .3, 0);
glBegin(GL_TRIANGLE_FAN);
glVertex3f(0,41, 0);
for (float i = 0; i <= 2 * PI + 1; i += 2 * PI / 100)
{
float x = 26.4 * cos(i);
float z = 26.4 * sin(i);
glVertex3f(x, 41, z);
}
glEnd();
}
void RenderScene() {
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glEnable(GL_DEPTH_TEST);
glPushMatrix();
glRotated(xroot, 1, 0, 0);
glRotated(yroot, 0, 1, 0);
//------------------Start
glPushMatrix();
glTranslated(0, -30, 0);
base_1(13,30.4,1,0,1);
glPopMatrix();
//------------------END
//-------------------------------------------------------
//------------------Start
glPushMatrix();
base_1(40,30,0,1,0);
glPopMatrix();
//------------------END
//-------------------------------------------------------
//------------------Start
glPushMatrix();
glTranslated(50, 0, 0);
base_1(20, 5, 1, 0.5, 1);
glPopMatrix();
//------------------END
//-------------------------------------------------------
//------------------Start
glPushMatrix();
glTranslated(35, 25, 0);
glRotated(90, 0, 0, 1);
base_1(20, 5, 1, 0.5, 1);
glPopMatrix();
//------------------END
//-------------------------------------------------------
//------------------Start
glPushMatrix();
glTranslated(35, -25, 0);
glRotated(90, 0, 0, 1);
base_1(20, 5, 1, 0.5, 1);
glPopMatrix();
//------------------END
ww();
glPopMatrix();
glutSwapBuffers();
}
void SpecialKey(int key,int x,int y) {
if (key==GLUT_KEY_UP) {
xroot -= 5;
}
if (key == GLUT_KEY_DOWN) {
xroot += 5;
}
if (key == GLUT_KEY_LEFT) {
yroot -= 5;
}
if (key == GLUT_KEY_RIGHT) {
yroot += 5;
}
glutPostRedisplay();
}
int main(int argc , char**argv) {
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH);
glutInitWindowSize(600, 600);
glutCreateWindow("kero");
SetUpRC();
glutDisplayFunc(RenderScene);
glutSpecialFunc(SpecialKey);
glutMainLoop();
return 0;
}
Comments