#include #include float kat = 0; float kat2 = 0; void uklad() { glBegin (GL_LINES); glColor3f(0.7, 0.7, 0.7); glVertex3f (0.0, 0.0, -10.0); glVertex3f (0.0, 0.0, 10.0); glColor3f(0.3, 0.3, 0.3); glVertex3f (-10.0, 0.0, 0.0); glVertex3f (10.0, 0.0, 0.0); glVertex3f (0.0, -10.0, 0.0); glVertex3f (0.0, 10.0, 0.0); glEnd(); glFlush(); } void kostka() { glColor3f(1.0, 0.0, 0.0); //glTranslatef(0.0,top,0.0); // przesuniecie glRotatef(kat,0.0f,1.0f,0.0f); //obrot glBegin(GL_POLYGON); //sposob laczenia, polygon - po kolei laczy wierzcholki glColor3f(0.2, 0.2, 0.2); //kolor wierzch. w rgb, glVertex3f(0.2, 1.0, -0.2); //wierzcholki x y z w (3f - 3 wierzcholki float) glVertex3f(-0.2, 1.0, -0.2); glVertex3f(-0.2, 1.0, 0.2); glVertex3f(0.2, 1.0, 0.2); glEnd(); glBegin(GL_POLYGON); //sposob laczenia, polygon - po kolei laczy wierzcholki glColor3f(0.2, 0.2, 0.2); //kolor wierzch. w rgb, glVertex3f(0.2, 1.0, -0.2); //wierzcholki x y z w (3f - 3 wierzcholki float) glVertex3f(0.2, 1.0, 0.2); glVertex3f(0.2, 1.4, 0.2); glVertex3f(0.2, 1.4, -0.2); glEnd(); glBegin(GL_POLYGON); //sposob laczenia, polygon - po kolei laczy wierzcholki glColor3f(0.2, 0.2, 0.2); //kolor wierzch. w rgb, glVertex3f(0.2, 1.0, 0.2); //wierzcholki x y z w (3f - 3 wierzcholki float) glVertex3f(-0.2, 1.0, 0.2); glVertex3f(-0.2, 1.4, 0.2); glVertex3f(0.2, 1.4, 0.2); glEnd(); glBegin(GL_POLYGON); //sposob laczenia, polygon - po kolei laczy wierzcholki glColor3f(0.2, 0.2, 0.2); //kolor wierzch. w rgb, glVertex3f(-0.2, 1.0, 0.2); //wierzcholki x y z w (3f - 3 wierzcholki float) glVertex3f(-0.2, 1.0, -0.2); glVertex3f(-0.2, 1.4, -0.2); glVertex3f(-0.2, 1.4, 0.2); glEnd(); glBegin(GL_POLYGON); //sposob laczenia, polygon - po kolei laczy wierzcholki glColor3f(0.2, 0.2, 0.2); //kolor wierzch. w rgb, glVertex3f(-0.2, 1.0, -0.2); //wierzcholki x y z w (3f - 3 wierzcholki float) glVertex3f(0.2, 1.0, -0.2); glVertex3f(0.2, 1.4, -0.2); glVertex3f(-0.2, 1.4, -0.2); glEnd(); glFlush(); } void display() { glClearColor(1.0,1.0,1.0,1.0); //kolor tla RGB od 0 do 1 glClear(GL_COLOR_BUFFER_BIT); //wypelnienie bufora koloru wartosciami clearcolor gluPerspective(45.0, 1.0, 0.1, 20.0); //geometria widzenia, parametry: gluLookAt(-2.0, 5.0, -5.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0); glMatrixMode (GL_MODELVIEW); glLoadIdentity (); glBegin(GL_POLYGON); //sposob laczenia, polygon - po kolei laczy wierzcholki glColor3f(0.9, 0.9, 0.9); //kolor wierzch. w rgb, glVertex3f(3.0, 0.0, -3.0); //wierzcholki x y z w (3f - 3 wierzcholki float) glVertex3f(-3.0, 0.0, -3.0); glVertex3f(-3.0, 0.0, 3.0); glVertex3f(3.0, 0.0, 3.0); glEnd(); glFlush(); uklad(); //rysowanie ukladu glRotatef(kat2,0.0f,1.0f,0.0f); //obrot glPushMatrix(); glRotatef(18,0.0f,1.0f,0.0f); glTranslatef(2.0,0.0,0.0); // przesuniecie kostka(); glPopMatrix(); glPushMatrix(); glRotatef(36,0.0f,1.0f,0.0f); glTranslatef(2.0,0.0,0.0); // przesuniecie kostka(); glPopMatrix(); glPushMatrix(); glRotatef(54,0.0f,1.0f,0.0f); glTranslatef(2.0,0.0,0.0); // przesuniecie kostka(); glPopMatrix(); glPushMatrix(); glRotatef(72,0.0f,1.0f,0.0f); glTranslatef(2.0,0.0,0.0); // przesuniecie kostka(); glPopMatrix(); glPushMatrix(); glRotatef(90,0.0f,1.0f,0.0f); glTranslatef(2.0,0.0,0.0); // przesuniecie kostka(); glPopMatrix(); glPushMatrix(); glRotatef(108,0.0f,1.0f,0.0f); glTranslatef(2.0,0.0,0.0); // przesuniecie kostka(); glPopMatrix(); glPushMatrix(); glRotatef(126,0.0f,1.0f,0.0f); glTranslatef(2.0,0.0,0.0); // przesuniecie kostka(); glPopMatrix(); glPushMatrix(); glRotatef(142,0.0f,1.0f,0.0f); glTranslatef(2.0,0.0,0.0); // przesuniecie kostka(); glPopMatrix(); glPushMatrix(); glRotatef(160,0.0f,1.0f,0.0f); glTranslatef(2.0,0.0,0.0); // przesuniecie kostka(); glPopMatrix(); glPushMatrix(); glRotatef(188,0.0f,1.0f,0.0f); glTranslatef(2.0,0.0,0.0); // przesuniecie kostka(); glPopMatrix(); glPushMatrix(); glRotatef(206,0.0f,1.0f,0.0f); glTranslatef(2.0,0.0,0.0); // przesuniecie kostka(); glPopMatrix(); glPushMatrix(); glRotatef(224,0.0f,1.0f,0.0f); glTranslatef(2.0,0.0,0.0); // przesuniecie kostka(); glPopMatrix(); glPushMatrix(); glRotatef(242,0.0f,1.0f,0.0f); glTranslatef(2.0,0.0,0.0); // przesuniecie kostka(); glPopMatrix(); glPushMatrix(); glRotatef(260,0.0f,1.0f,0.0f); glTranslatef(2.0,0.0,0.0); // przesuniecie kostka(); glPopMatrix(); glPushMatrix(); glRotatef(288,0.0f,1.0f,0.0f); glTranslatef(2.0,0.0,0.0); // przesuniecie kostka(); glPopMatrix(); glPushMatrix(); glRotatef(306,0.0f,1.0f,0.0f); glTranslatef(2.0,0.0,0.0); // przesuniecie kostka(); glPopMatrix(); glPushMatrix(); glRotatef(324,0.0f,1.0f,0.0f); glTranslatef(2.0,0.0,0.0); // przesuniecie kostka(); glPopMatrix(); glPushMatrix(); glRotatef(342,0.0f,1.0f,0.0f); glTranslatef(2.0,0.0,0.0); // przesuniecie kostka(); glPopMatrix(); glPushMatrix(); glRotatef(360,0.0f,1.0f,0.0f); glTranslatef(2.0,0.0,0.0); // przesuniecie kostka(); glPopMatrix(); glFlush(); glutSwapBuffers(); // zamiana buforów koloru } void Reshape (int width, int height) { glViewport (0,0,width,height); glMatrixMode (GL_PROJECTION); glLoadIdentity (); display (); } void obroty(void) { if (kat==360) kat=0; kat+=2; if (kat2==360) kat2=0; kat2+=1; glutPostRedisplay(); } void main(int argil, char *argtab[]) { glutInit(&argil,argtab); glutInitDisplayMode( GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH ); glutInitWindowSize(600,400); glutInitWindowPosition(100,100); glutCreateWindow("Animacja"); glutDisplayFunc(display); glutReshapeFunc (Reshape); glutIdleFunc(obroty); glutMainLoop(); }