#include #include float kat=0; float kat2=0; float delta = 1; float delta2 = 0.1; float alfa=0.0; void uklad() { glBegin(GL_LINES); glColor3f(0.0, 1.0, 0.0); //zielona oś X glVertex3f(-5.0, 0.0, 0.0); glVertex3f(5.0, 0.0, 0.0); glColor3f(0.0, 0.0, 1.0); // niebieska oś Y glVertex3f(0.0, -5.0, 0.0); glVertex3f(0.0, 5.0, 0.0); glColor3f(0.0, 0.0, 0.0); // czarna oś Z glVertex3f(0.0, 0.0, -5.0); glVertex3f(0.0, 0.0, 5.0); glEnd(); } void kwadrat() { glBegin(GL_TRIANGLES); //sposob laczenia, polygon - po kolei laczy wierzcholki glColor3f(0, 1.0, 0.0); //kolor wierzch. w rgb, glVertex3f(-0.5, 1.0, -0.5); glVertex3f(-0.5, 1.0, 0.5); glVertex3f(0.0, 1.0, 0.0);; glEnd(); glBegin(GL_TRIANGLES); //sposob laczenia, polygon - po kolei laczy wierzcholki glColor3f(0, 0.9, 0.0); //kolor wierzch. w rgb, glVertex3f(-0.5, 1.0, -0.5); glVertex3f(0.5, 1.0, -0.5); glVertex3f(0.0, 1.0, 0.0);; glEnd(); glBegin(GL_TRIANGLES); //sposob laczenia, polygon - po kolei laczy wierzcholki glColor3f(0, 0.8, 0.0); //kolor wierzch. w rgb, glVertex3f(-0.5, 1.0, 0.5); glVertex3f(0.5, 1.0, 0.5); glVertex3f(0.0, 1.0, 0.0);; glEnd(); glBegin(GL_TRIANGLES); //sposob laczenia, polygon - po kolei laczy wierzcholki glColor3f(0, 0.7, 0.0); //kolor wierzch. w rgb, glVertex3f(0.5, 1.0, -0.5); glVertex3f(0.5, 1.0, 0.5); glVertex3f(0.0, 1.0, 0.0);; glEnd(); glFlush(); } void podloga() { glBegin(GL_POLYGON); //sposob laczenia, polygon - po kolei laczy wierzcholki glColor3f(0.8, 0.8, 0.8); //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(); } void kulka() { glTranslatef(0.0,1.0,0.0); glRotatef(45,0.0f,1.0,0.0f); glTranslatef(kat2,0.0,0.0); glColor3f(0.2, 0.2, 0.2); glutSolidSphere(0.1,24,24); } void init() { glClearColor(1.0,1.0,1.0,1.0); //kolor tła okna glEnable(GL_DEPTH_TEST); // włączenie testu głębokości glMatrixMode(GL_PROJECTION); gluPerspective(45.0, 1.0, 0.1, 20.0); //geometria widzenia, parametry: //szerokokatnosc w pionie alfa, stosunek poziomu do pionu, //odkad rzutowac, dokad rzutowac. gluLookAt(-3.0, 8.0, -8.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0); glMatrixMode(GL_MODELVIEW); // nic więcej na stosie rzutowania // się nie znajdzie } void scena() { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glLoadIdentity();// przed kolejną klatką animacyjną // na stosie modelowania nie mogą // znajdować się żadne macierze z // poprzedniej klatki animacyjnej uklad(); podloga(); kwadrat(); kulka(); glutSwapBuffers(); // zamiana buforów koloru } void anim() { if ( kat2 >= 0.7 ) { delta2 = -0.1; } if ( kat2 <= -0.7 ) { delta2 = 0.1; } kat2+=delta2; glutPostRedisplay(); } void main(int argc, char** argv) { glutInit(&argc, argv); glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH ); glutInitWindowSize(800,800); glutInitWindowPosition(20,20); glutCreateWindow("Scena testowa"); glutDisplayFunc(scena); init(); glutIdleFunc(anim); glutMainLoop(); }