rendered paste body#include <windows.h>
#include <GL/glut.h>
float kat=0;
float kat2=45;
float delta = 1;
float delta2 = 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 noga()
{
glBegin(GL_POLYGON); //sposob laczenia, polygon - po kolei laczy wierzcholki
glColor3f(1, 0.2, 0.0); //kolor wierzch. w rgb,
glVertex3f(-0.2, 0.0, -0.2);
glVertex3f(-0.2, 0.0, 0.2);
glVertex3f(-0.2, 2.0, 0.2);
glVertex3f(-0.2, 2.0, -0.2);
glEnd();
glBegin(GL_POLYGON); //sposob laczenia, polygon - po kolei laczy wierzcholki
glColor3f(1, 0.2, 0.0); //kolor wierzch. w rgb,
glVertex3f(-0.2, 0.0, -0.2);
glVertex3f(0.2, 0.0, -0.2);
glVertex3f(0.2, 2.0, -0.2);
glVertex3f(-0.2, 2.0, -0.2);
glEnd();
glBegin(GL_POLYGON); //sposob laczenia, polygon - po kolei laczy wierzcholki
glColor3f(1, 0.2, 0.0); //kolor wierzch. w rgb,
glVertex3f(0.2, 0.0, -0.2);
glVertex3f(0.2, 0.0, 0.2);
glVertex3f(0.2, 2.0, 0.2);
glVertex3f(0.2, 2.0, -0.2);
glEnd();
glBegin(GL_POLYGON); //sposob laczenia, polygon - po kolei laczy wierzcholki
glColor3f(0.5, 0.2, 0.0); //kolor wierzch. w rgb,
glVertex3f(0.2, 0.0, 0.2);
glVertex3f(-0.2, 0.0, 0.2);
glVertex3f(-0.2, 2.0, 0.2);
glVertex3f(0.2, 2.0, 0.2);
glEnd();
glFlush();
glTranslatef(0.0,2.0,0.0);
glColor3f(0.2, 0.2, 0.2);
glutSolidSphere(0.4,24,24);
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 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();
glColor3f(1.0, 0.0, 0.0);
glPushMatrix();
glRotatef(kat,0.0f,1.0f,0.0f);
noga();
glTranslatef(0.0,0.4,0.0);
glRotatef(kat2,0.0f,0.0f,0.4f);
noga();
glPopMatrix();
glFlush();
glutSwapBuffers(); // zamiana buforów koloru
}
void anim()
{
if (kat>=45) {
delta2 = -2;
}
if (kat<=-45) {
delta2 = 2;
}
kat+=delta2;
if (kat2>=90) {
delta = -5;
}
if (kat2<=-90) {
delta = 5;
}
kat2+=delta;
//kat2 = 0;
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);
glutIdleFunc(anim);
init();
glutMainLoop();
}