diff --git a/inc/fractol.h b/inc/fractol.h index 8e7b694..90dc81b 100644 --- a/inc/fractol.h +++ b/inc/fractol.h @@ -136,6 +136,8 @@ void parallel_fractal(t_fractol *fr); void zoom_in(t_fractol *frm, int x, int y); void zoom_out(t_fractol *fr); +void zoom_in_key(t_fractol *fr); +void zoom_out_key(t_fractol *fr); void move_left(t_fractol *fr); void move_right(t_fractol *fr); void move_up(t_fractol *fr); @@ -147,4 +149,7 @@ int change_real(t_fractol *fr, int x, int *start_x); int change_imagianry(t_fractol *fr, int x, int *start_x); void gradient_hook(t_fractol *fr); +void julia_samples(t_fractol *fr, double real, double img); +void mandelbrot_samples(t_fractol *fr, double x, double y); + #endif diff --git a/src/fractal_samples.c b/src/fractal_samples.c new file mode 100644 index 0000000..c332060 --- /dev/null +++ b/src/fractal_samples.c @@ -0,0 +1,31 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* fractal_samples.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: gtertysh +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2017/03/25 14:52:57 by gtertysh #+# #+# */ +/* Updated: 2017/03/25 14:52:58 by gtertysh ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "fractol.h" + +void julia_samples(t_fractol *fr, double real, double img) +{ + complex_equal(real, img, &fr->frac->com_const); + new_and_clear_image(fr); + parallel_fractal(fr); + mlx_put_image_to_window(fr->mlx, fr->win, fr->img->ptr, 0, 0); +} + +void mandelbrot_samples(t_fractol *fr, double x, double y) +{ + fr->frac->mov.x = x; + fr->frac->mov.y = y; + fr->frac->mov.z = 1; + new_and_clear_image(fr); + parallel_fractal(fr); + mlx_put_image_to_window(fr->mlx, fr->win, fr->img->ptr, 0, 0); +} diff --git a/src/hooks.c b/src/hooks.c index 753d15a..a99ec2d 100644 --- a/src/hooks.c +++ b/src/hooks.c @@ -6,30 +6,52 @@ /* By: gtertysh +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/03/16 18:59:03 by gtertysh #+# #+# */ -/* Updated: 2017/03/24 14:02:46 by gtertysh ### ########.fr */ +/* Updated: 2017/03/25 14:59:09 by gtertysh ### ########.fr */ /* */ /* ************************************************************************** */ #include "fractol.h" +void sample(t_fractol *fr, int key) +{ + if (fr->frac->frac_type == 0 && key == 18) + julia_samples(fr, -1.037, 0.17); + if (fr->frac->frac_type == 0 && key == 19) + julia_samples(fr, -0.1, 0.651); + if (fr->frac->frac_type == 0 && key == 20) + julia_samples(fr, 0.285, 0.01); + if (fr->frac->frac_type == 1 && key == 18) + mandelbrot_samples(fr, -1.30000000000002603931, 0); + if (fr->frac->frac_type == 1 && key == 19) + mandelbrot_samples(fr, 0.0297908120967462314188, -0.458060975296945872); + if (fr->frac->frac_type == 1 && key == 20) + mandelbrot_samples(fr, 0.471844506346038136365, -1.1151425080399373598); +} + int key_hook(int keycode, void *fr) { if (keycode == 53) quit(fr); + if (keycode == 24) + zoom_in_key(fr); + if (keycode == 27) + zoom_out_key(fr); if (keycode == 49) gradient_hook(fr); - if (keycode == 124) - move_left(fr); if (keycode == 123) + move_left(fr); + if (keycode == 124) move_right(fr); - if (keycode == 125) - move_up(fr); if (keycode == 126) + move_up(fr); + if (keycode == 125) move_down(fr); if (keycode == 69) change_limit_up(fr); if (keycode == 78) change_limit_down(fr); + if (keycode == 18 || keycode == 19 || keycode == 20) + sample(fr, keycode); return (0); } diff --git a/src/hooks_funcs.c b/src/hooks_funcs.c index 40dde3e..d00feb7 100644 --- a/src/hooks_funcs.c +++ b/src/hooks_funcs.c @@ -6,7 +6,7 @@ /* By: gtertysh +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/03/24 19:21:45 by gtertysh #+# #+# */ -/* Updated: 2017/03/24 21:12:49 by gtertysh ### ########.fr */ +/* Updated: 2017/03/25 14:53:26 by gtertysh ### ########.fr */ /* */ /* ************************************************************************** */ @@ -29,7 +29,7 @@ int change_imagianry(t_fractol *fr, int x, int *start_x) { if (fr->frac->com_const.im < 3) { - fr->frac->com_const.im += 0.05; + fr->frac->com_const.im += 0.01; to_render = 1; } *start_x = x; @@ -38,7 +38,7 @@ int change_imagianry(t_fractol *fr, int x, int *start_x) { if (fr->frac->com_const.im > -4) { - fr->frac->com_const.im -= 0.05; + fr->frac->com_const.im -= 0.1; to_render = 1; } *start_x = x; @@ -55,7 +55,7 @@ int change_real(t_fractol *fr, int x, int *start_x) { if (fr->frac->com_const.rl < 3) { - fr->frac->com_const.rl += 0.05; + fr->frac->com_const.rl += 0.1; to_render = 1; } *start_x = x; @@ -64,10 +64,26 @@ int change_real(t_fractol *fr, int x, int *start_x) { if (fr->frac->com_const.rl > -4) { - fr->frac->com_const.rl -= 0.05; + fr->frac->com_const.rl -= 0.1; to_render = 1; } *start_x = x; } return (to_render); } + +void zoom_in_key(t_fractol *fr) +{ + fr->frac->mov.z *= 1.5; + new_and_clear_image(fr); + parallel_fractal(fr); + mlx_put_image_to_window(fr->mlx, fr->win, fr->img->ptr, 0, 0); +} + +void zoom_out_key(t_fractol *fr) +{ + fr->frac->mov.z /= 1.5; + new_and_clear_image(fr); + parallel_fractal(fr); + mlx_put_image_to_window(fr->mlx, fr->win, fr->img->ptr, 0, 0); +}