All pastes #536995 Raw Edit

koch

public text v1 · immutable
·published 2007-06-04 16:12 UTC
rendered paste body
#include <allegro.h>
#include <alleggl.h>
#include <math.h>
#include <time.h>
#include <cstdlib>
int r,g,b;
void rysuj(float x1, float y1, float x2, float y2, float x3, float y3) ;

void wywolaj(float x1, float y1, float x2, float y2, float x3, float y3, int limit)
{

float a_x, a_y, b_x, b_y, c_x, x_y, c_y ;
a_x=(float) (x1+x2)/2 ;
a_y=(float) (y1+y2)/2 ;
b_x=(float) (x1+x3)/2 ;
b_y=(float) (y1+y3)/2 ;
c_x=(float) (x2+x3)/2 ;
c_y=(float) (y2+y3)/2 ;   
  
if(limit==0) {
rysuj(x1,y1,x2,y2,x3,y3);
}     
else {
wywolaj(x1,y1,a_x,a_y,b_x,b_y,limit-1) ;
wywolaj(x2,y2,a_x,a_y,c_x,c_y,limit-1) ;
wywolaj(x3,y3,c_x,c_y,b_x,b_y,limit-1) ;
};
return ;
}


void rysuj(float x1, float y1, float x2, float y2, float x3, float y3) {
     float z=-5;
        glBegin(GL_TRIANGLES);
        glColor3ub(r,g,b);
        glVertex3f( x1,  y1, z);
        glColor3ub(g,r,b);
        glVertex3f( x2,  y2, z);
        glColor3ub(b,g,r);
       glVertex3f( x3,  y3, z);
        glEnd();
    
}
int main() {
   
    /* Inicjalizacja Allegro oraz AllegroGL */
    allegro_init();
    install_allegro_gl();
   
    /* Inicjalizacja obs&#322;ugi klawiatury */
    install_keyboard();

    /* OpenGL - sugerowany tryb ekranu */
    allegro_gl_set(AGL_Z_DEPTH, 8);
    allegro_gl_set(AGL_COLOR_DEPTH, 16);
    allegro_gl_set(AGL_SUGGEST, AGL_Z_DEPTH | AGL_COLOR_DEPTH);

    /* Ustawienie trybu graficznego */
    set_gfx_mode(GFX_OPENGL_WINDOWED, 800, 600, 0, 0);
   
    /* Czyszczenie ekranu */
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

    /* Nie wiem co, ale bez tego nie dzia&#322;a :) - by&#322;o domy?lnie projekcie AllegroGL w devie*/
    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();
    glFrustum(-1.0, 1.0, -1.0, 1.0, 1, 60.0);
   int nico=0;
   
    float x1=-3 , y1=-2 , z1=-5,
          x2=3  , y2=-2 , z2=-5,
          x3=0  , y3=4, z3=-5,
          x=0   , y=0  , z=-5 ,
          angle1=0.05 , angle2=0.005 , angle3=0.005;
int i=0 ;
    while
(!key[KEY_SPACE])
    {

         glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);     
        
         wywolaj(x1,y1,x2,y2,x3,y3,7) ;

       allegro_gl_flip();

      
       r = abs(sin(x1)*255);
       g = abs(cos(y2)*255);
       b = abs(sin(y1)*255);

        x1 = x + (x1  - x) * cos(angle3) + (y1  - y) * sin(angle3);
        y1 = y - (x1  - x) * sin(angle3) + (y1  - y) * cos(angle3);

        x2 = x + (x2  - x) * cos(angle3) + (y2  - y) * sin(angle3);
        y2 = y - (x2  - x) * sin(angle3) + (y2  - y) * cos(angle3);
       
        x3 = x + (x3  - x) * cos(angle3) + (y3  - y) * sin(angle3);
        y3 = y - (x3  - x) * sin(angle3) + (y3  - y) * cos(angle3);

    }
   
    /* Wstrzymanie do naci?ni&#281;cia przycisku */
    readkey();
   
    /* Koniec. */
    return 0;
}
END_OF_MAIN();