void draw_fractal(int num) { switch (num) { case 0: glRectf(-1, -1, -0.6, 1); glRectf(-1, -1, 1, -0.6); break; case 10: current = 0; glutPostRedisplay(); break; default: glPushMatrix(); if (num == current) glColor3f(1.0, 0.0, 0.0); glTranslatef(-0.5, 0.5, 0); glScalef(-0.5, 0.5, 1); draw_fractal(num - 1); glPopMatrix(); glPushMatrix(); if (num == current) glColor3f(0.0, 1.0, 0.0); glTranslatef(0.75, 0.75, 0); glRotatef(180, 0, 0, 1); glScalef(0.25, 0.25, 1); draw_fractal(num - 1); glPopMatrix(); glPushMatrix(); if (num == current) glColor3f(0.0, 0.0, 1.0); glTranslatef(0.5, -0.5, 0); glRotatef(90, 0, 0, -1); glScalef(-0.5, 0.5, 0); draw_fractal(num - 1); glPopMatrix(); glPushMatrix(); if (num == current) glColor3f(1.0, 1.0, 1.0); glTranslatef(-0.5, -0.5, 0); glScalef(0.5, 0.5, 1); draw_fractal(num - 1); glPopMatrix(); break; } }
void draw_fractal(int n, int x, int y) { int pos = pow(3,n-2), i; if ( n==1 ) { fractal[x][y] = 'X'; return; } draw_fractal(n-1, x, y); draw_fractal(n-1, x-pos, y-pos); draw_fractal(n-1, x-pos, y+pos); draw_fractal(n-1, x+pos, y-pos); draw_fractal(n-1, x+pos, y+pos); }
void draw() { glClear(GL_COLOR_BUFFER_BIT); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); draw_fractal(current); glutSwapBuffers(); }
main(int argc, char **argv) { draw_fractal ("fractal.gif", /* Good values */ atoi(argv[1]), /* Width = 300 */ atoi(argv[2]), /* Height = 300 */ atof(argv[3]), /* Origin.r = -1.4 */ atof(argv[4]), /* Origin.i = 1.0 */ atof(argv[5]), /* Range = 2.0 */ atof(argv[6])); /* Max Iterations = 1.0 */ }
int motion_hook(int x, int y, t_env *env) { if (x >= 0 && x <= WIDTH && y >= 0 && y <= HEIGHT) { if ((env->fractal == JULIA && env->julia_static == 0) || (env->fractal == JULIA_BURNING && env->julia_static == 0) || (env->fractal == BIOMORPH && env->julia_static == 0) || (env->fractal == JULIA_BIRD && env->julia_static == 0)) { env->c_julia.reel = (x + env->offset_x) / (double)env->zoom + env->x1; env->c_julia.img = (y + env->offset_y) / (double)env->zoom + env->y1; draw_fractal(env); } env->c_point.reel = x; env->c_point.img = y; } return (1); }
int main() { int size, i, j, pos; while ( scanf("%d",&size), size != -1 ) { for ( i=0 ; i<pow(3,size-1) ; i++ ) for ( j=0 ; j<pow(3,size-1) ; j++ ) fractal[i][j] = ' '; pos = pow(3,size-1); draw_fractal(size, pos/2, pos/2); for ( i=0 ; i<pos ; i++ ) { for ( j=0 ; j<pos ; j++ ) printf("%c",fractal[i][j]); printf("\n"); } printf("-\n"); } }
void init_env(t_env *env) { env->mlx = mlx_init(); if (env->mlx == NULL) { ft_putendl_fd("Fatal error : mlx cannot initialize", 2); exit(-1); } env->zoom = ZOOM; env->win = mlx_new_window(env->mlx, WIDTH, HEIGHT, "Fract'ol"); if (env->win == NULL) { ft_putendl_fd("Fatal error : mlx cannot create window", 2); exit(-1); } init_img(env); env->color = 0; env->menu = 0; draw_fractal(env); }
int key_hook(int keycode, t_env *env) { if (keycode == KEYCODE_ESC) { mlx_destroy_image(env->mlx, env->img); exit(0); } if (keycode == KEYCODE_H) env->menu = (env->menu + 1) % 2; else { move(keycode, env); zoom(keycode, env); change_fractal(keycode, env); change_color(keycode, env); } mlx_destroy_image(env->mlx, env->img); init_img(env); draw_fractal(env); return (keycode); }