All pastes #568542 Raw Edit

Miscellany

public text v1 · immutable
·published 2007-06-15 16:13 UTC
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&#347; X
    glVertex3f(-5.0, 0.0, 0.0);
    glVertex3f(5.0, 0.0, 0.0); 

    glColor3f(0.0, 0.0, 1.0); // niebieska o&#347; Y
	glVertex3f(0.0, -5.0, 0.0);
	glVertex3f(0.0,  5.0, 0.0);
	
	glColor3f(0.0,  0.0, 0.0); // czarna o&#347; 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&#322;a okna
  glEnable(GL_DEPTH_TEST); // w&#322;&#261;czenie testu g&#322;&#281;boko&#347;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&#281;cej na stosie rzutowania
                              // si&#281; nie znajdzie   
}

void scena()
{
  glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

  glLoadIdentity();// przed kolejn&#261; klatk&#261; animacyjn&#261;
                   // na stosie modelowania nie mog&#261;
                   // znajdowa&#263; si&#281; &#380;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();
}