rendered paste body#include <windows.h>
#include <GL/glut.h>
float kat=0;
float kat2=0;
float kat3=0;
float kat4=0;
float delta = 1;
float delta2 = 0.1;
float delta3 = 0.1;
float delta4 = 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,kat3,0.0);
glRotatef(45,0.0f,1.0,0.0f);
glTranslatef(0.7,0.0,0.0);
glColor3f(0.2, 0.2, 0.2);
glutSolidSphere(0.1,24,24);
}
void kulka2()
{
glTranslatef(0.0,kat3,0.0);
glRotatef(45,0.0f,1.0,0.0f);
glTranslatef(-0.7,0.0,0.0);
glColor3f(0.2, 0.2, 0.2);
glutSolidSphere(0.1,24,24);
}
void kulka3()
{
glTranslatef(0.0,kat4,0.0);
glRotatef(135,0.0f,1.0,0.0f);
glTranslatef(0.7,0.0,0.0);
glColor3f(0.2, 0.2, 0.2);
glutSolidSphere(0.1,24,24);
}
void kulka4()
{
glTranslatef(0.0,kat4,0.0);
glRotatef(135,0.0f,1.0,0.0f);
glTranslatef(-0.7,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();
//glRotatef(kat,0.0f,1.0f,0.0f);
kwadrat();
glPushMatrix();
kulka();
glPopMatrix();
glPushMatrix();
kulka2();
glPopMatrix();
glPushMatrix();
kulka3();
glPopMatrix();
glPushMatrix();
kulka4();
glPopMatrix();
glutSwapBuffers(); // zamiana buforów koloru
}
void anim()
{
if ( kat2 >= 0.7 ) { delta2 = -0.05; }
if ( kat2 <= -0.7 ) { delta2 = 0.05; }
kat2+=delta2;
if ( kat3 >= 1 ) { delta3 = -0.01; }
if ( kat3 <= 0 ) { delta3 = 0.01; }
kat3+=delta3;
if ( kat4 >= 1 ) { delta4 = -0.02; }
if ( kat4 <= 0 ) { delta4 = 0.02; }
kat4+=delta4;
if ( kat == 360 ) { kat = 0; }
kat+=1;
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();
}