#include #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(); glutSwapBuffers(); } 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 glMatrixMode (GL_MODELVIEW); glLoadIdentity (); 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); //x,y,z oko:), 3 wspolrzedne oka, dokad patrzy 3 parametry, 3 parametry -pion na kliszy 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(); } 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 argc, char** argv) { glutInit(&argc, argv); glutInitDisplayMode(GLUT_RGBA|GLUT_DOUBLE); glutInitWindowSize(600,400); glutInitWindowPosition(100,100); glutCreateWindow("Animacja"); glutDisplayFunc(display); glutReshapeFunc (Reshape); glutIdleFunc(obroty); glutMainLoop(); }