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ł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ła :) - był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ęcia przycisku */
readkey();
/* Koniec. */
return 0;
}
END_OF_MAIN();