#include <GL/glut.h>
static int day = 200;
void display()
{
glEnable(GL_DEPTH_TEST);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(75,1,1,400000);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
gluLookAt(0,-200000,200000, 0,0,0, 0,0,1);
glColor3f(1,0,0);
glutSolidSphere(69600,20,20);
glColor3f(0,0,1);
glRotatef(day,0,0,-1);
glTranslatef(150000,0,0);
glutSolidSphere(15945,20,20);
glColor3f(1,1,0);
glRotatef(day/30.0*360 - day, 0,0,-1);
glTranslatef(38000,0,0);
glutSolidSphere(4345,20,20);
glutSwapBuffers();
}
void timer(int p)
{
day ++;
if(day >360)day = 0;
glutTimerFunc(50,timer,0);
glutPostRedisplay();
}
int main(int argc,char **argv)
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE);
glutCreateWindow("earth,moon,sun");
glutInitWindowSize(400,400);
glutDisplayFunc(display);
glutTimerFunc(50,timer,0);
glutMainLoop();
return 0;
}