#include <GL/gl.h>
#include <GL/glu.h>
#include "aux.h"
#define GRAD 360
static int year = 0, day = 0, mond1 =0, mond2=0;
void dayAdd (void) { day = (day + 10) % GRAD; }
void daySubtract (void) { day = (day - 10) % GRAD; }
void yearAdd (void) { year = (year + 5) % GRAD; }
void yearSubtract (void) { year = (year - 5) % GRAD; }
void display(void)
{
glClear(GL_COLOR_BUFFER_BIT);
glColor3f (1.0, 1.0, 1.0);
glPushMatrix();
/* draw sun */
auxWireSphere(1.0);
/* draw smaller planet */
glRotatef ((GLfloat) year, 0.0, 1.0, 0.0);
glTranslatef (2.0, 0.0, 0.0);
glRotatef ((GLfloat) day, 0.0, 1.0, 0.0);
auxWireSphere(0.2);
glPushMatrix();
glRotatef ((GLfloat) mond1, 0.0, 1.0, 0.0);
glTranslatef (0.8, 0.0, 0.0);
auxWireSphere(0.03);
glPopMatrix();
glPushMatrix();
glRotatef ((GLfloat) mond2, 1.0, 0.0, 0.0);
glTranslatef (0.0, 0.4, 0.0);
auxWireSphere(0.02);
glPopMatrix();
glPopMatrix();
glFlush();
}
void monde(void) { mond1=(mond1+5)%GRAD; mond2=(mond2+4)%GRAD; display(); }
void myinit (void) { glShadeModel (GL_FLAT); }
void myReshape(int w, int h)
{
glViewport(0, 0, w, h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(60.0, (GLfloat) w/(GLfloat) h, 1.0, 20.0);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glTranslatef (0.0, 0.0, -5.0);
}
int main(int argc, char** argv)
{
auxInitDisplayMode (AUX_SINGLE | AUX_RGB);
auxInitPosition (0, 0, 500, 500);
auxInitWindow (argv[0]);
myinit ();
auxKeyFunc (AUX_LEFT, yearSubtract);
auxKeyFunc (AUX_RIGHT, yearAdd);
auxKeyFunc (AUX_UP, dayAdd);
auxKeyFunc (AUX_DOWN, daySubtract);
auxIdleFunc ( monde);
auxReshapeFunc (myReshape);
auxMainLoop(monde);
}