Ejemplo n.º 1
0
void drawScene()
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    // Reset transformations
    glLoadIdentity();

    // look at the origin spot (0,0,0) from camera position, moved by mouse
    gluLookAt(	startX+deltaX, startY+deltaY, startZ+deltaZ, //camera pos
                0.0, 0.0,   0.0, //looking at
                0.0, 1.0,   0.0); //up orientation

    // draw model elements (stars and planet)
    drawStar(&universe);
    drawStar(&sun);
    drawPlanet(&p1);
    drawPlanet(&p2);
    drawPlanet(&p3);
    drawPlanet(&p4);
    drawPlanet(&p5);
    drawPlanet(&p6);
    drawPlanet(&p7);
    drawPlanet(&p8);

    // draw time
    char time[10000];
    int int_hours = (int)(hours);
    int int_days = int_hours/24;
    int int_years = int_days/365;
    sprintf(time, "Time:\tY-%d\tD-%d\tH-%d", int_years, int_days%365, int_hours%24);
    draw2DText(1.0,GLUT_WINDOW_HEIGHT*1.89, time);

    // draw legend
    char legend[10000];
    sprintf(legend, "\"ESC\" for exit, \"t\" for planet label, \"s\" for step animation, \"r\" for running animation, Mouse moves camera (wheel or ctrl | shift | alt for zoom) ");
    draw2DText(1.0, 1.0, legend);

    glFlush();
    glutSwapBuffers();
}
Ejemplo n.º 2
0
void GLWidget::drawCoordinateCross(void)
{
    GLint   viewport[4];

    glMatrixMode (GL_PROJECTION);
    glPushMatrix();
    glLoadIdentity();

    glMatrixMode (GL_MODELVIEW);
    glPushMatrix();
    glLoadIdentity();

    glGetIntegerv (GL_VIEWPORT, viewport);

    glTranslatef (-1, -1, 0.0);
    glScalef (40.0 / viewport[2], 40.0 / viewport[3], 1);
    glTranslatef (1.25, 1.25, 0.0);

    glRotatef(xRot / 16.0, 1.0, 0.0, 0.0);
    glRotatef(yRot / 16.0, 0.0, 1.0, 0.0);
    glRotatef(zRot / 16.0, 0.0, 0.0, 1.0);

    glEnable (GL_COLOR_MATERIAL);
    glDisable (GL_LIGHTING);

    glLineWidth (1.0f);

    glBegin(GL_LINES);
    glColor3f(1,0,0);
    glVertex3f (0.0f, 0.0f, 0.0f);
    glVertex3f (0.9, 0.0f, 0.0f);
    glColor3f(0,1,0);
    glVertex3f (0.0f, 0.0f, 0.0f);
    glVertex3f (0.0f, 0.9, 0.0f);
    glColor3f(0,0,1);
    glVertex3f (0.0f, 0.0f, 0.0f);
    glVertex3f (0.0f, 0.0f, 0.9);
    glEnd ();

    glColor3f(1,0,0);
    glPushMatrix();
    glTranslatef(0.5,0,0);
    glRotatef(90,0,1,0);
    gluCylinder(row,0.1,0,0.4,10,10);
    glPopMatrix();

    glColor3f(0,1,0);
    glPushMatrix();
    glTranslatef(0,0.5,0);
    glRotatef(-90,1,0,0);
    gluCylinder(row,0.1,0,0.4,10,10);
    glPopMatrix();

    glColor3f(0,0,1);
    glPushMatrix();
    glTranslatef(0,0,0.5);
    gluCylinder(row,0.1,0,0.4,10,10);
    glPopMatrix();

    glColor3f(1,0,0);
    draw2DText(1.1, 0.0, 0.0, (char*)"X");

    glColor3f(0,1,0);
    draw2DText(0.1, 1.0, 0.0, (char*)"Y");

    glColor3f(0,0,1);
    draw2DText(0.1, 0.0, 1.0, (char*)"Z");

    glEnable(GL_LIGHTING);
    glDisable (GL_COLOR_MATERIAL);

    glMatrixMode(GL_PROJECTION);
    glPopMatrix();
    glMatrixMode(GL_MODELVIEW);
    glPopMatrix();
}