All pastes #568638 Raw Edit

Someone

public text v1 · immutable
·published 2007-06-15 17:04 UTC
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&#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 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&#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();
  


  //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();
}