aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCharles <sircharlesaze@gmail.com>2019-08-27 19:19:59 +0200
committerCharles <sircharlesaze@gmail.com>2019-08-27 19:19:59 +0200
commit003e9e628b3e7b516d3d70d78b6ba97bca69c813 (patch)
treeb775b5a889bee1ef32fa37713a43964fc6bd1d43
parentce5cf1b60dae81540b2db366b1408a961f771dcc (diff)
downloadmandelbrot-003e9e628b3e7b516d3d70d78b6ba97bca69c813.tar.gz
mandelbrot-003e9e628b3e7b516d3d70d78b6ba97bca69c813.tar.bz2
mandelbrot-003e9e628b3e7b516d3d70d78b6ba97bca69c813.zip
Brightness level according to step before excusion
The test to check if something is in the set return -1 else returns the number of steps, then map the step to a brightness of the pixel.
-rw-r--r--graphics.c17
-rw-r--r--header.h6
-rw-r--r--mandelbrot.c6
3 files changed, 16 insertions, 13 deletions
diff --git a/graphics.c b/graphics.c
index 1e7470f..e36fee0 100644
--- a/graphics.c
+++ b/graphics.c
@@ -46,18 +46,21 @@ void graphics_run(GState *state)
static void update(GState *state)
{
- SDL_SetRenderDrawColor(state->renderer, 155, 155, 155, SDL_ALPHA_OPAQUE);
+ SDL_SetRenderDrawColor(state->renderer, 0, 0, 0, SDL_ALPHA_OPAQUE);
SDL_RenderClear(state->renderer);
for (int x = 0; x < WINDOW_W; x++)
{
for (int y = 0; y < WINDOW_H; y++)
{
- if (mandelbrot_in_set(map_range((double)x, 0, WINDOW_W, LO, HI)
- + map_range((double)y, 0, WINDOW_H, LO, HI) * I))
- {
- SDL_SetRenderDrawColor(state->renderer, 0, 0, 0, SDL_ALPHA_OPAQUE);
- SDL_RenderDrawPoint(state->renderer, x, y);
- }
+ double complex mapped_z = map_range((double)x, 0, WINDOW_W, LO, HI)
+ + map_range((double)y, 0, WINDOW_H, LO, HI) * I;
+ int steps = mandelbrot_in_set(mapped_z);
+ if (steps == -1)
+ continue;
+ double brightness = map_range(steps, LO, HI, 0, 20);
+ SDL_SetRenderDrawColor(state->renderer, brightness, brightness,
+ brightness, SDL_ALPHA_OPAQUE);
+ SDL_RenderDrawPoint(state->renderer, x, y);
}
}
SDL_RenderPresent(state->renderer);
diff --git a/header.h b/header.h
index 97e3de6..8873077 100644
--- a/header.h
+++ b/header.h
@@ -13,8 +13,8 @@
# define AXIS_DIV 46.0
# define AXIS_STEP ((HI - LO) / AXIS_DIV)
-# define MAX_ITERATION 50
-# define _INFINITY 15
+# define MAX_ITERATION 30
+# define _INFINITY 4
typedef struct
@@ -31,7 +31,7 @@ typedef struct
} GConf;
// mandelbrot.c
-double mandelbrot_in_set(double _Complex c);
+int mandelbrot_in_set(double _Complex c);
void mandelbrot_print(void);
// graphics.c
diff --git a/mandelbrot.c b/mandelbrot.c
index c5f5148..48d893d 100644
--- a/mandelbrot.c
+++ b/mandelbrot.c
@@ -6,7 +6,7 @@
#define IN_CHAR '*'
#define OUT_CHAR ' '
-double mandelbrot_in_set(double complex c)
+int mandelbrot_in_set(double complex c)
{
int i;
double complex z = 0;
@@ -14,9 +14,9 @@ double mandelbrot_in_set(double complex c)
{
z = cpow(z, 2) + c;
if (cabs(z) > _INFINITY)
- return 0;
+ return i;
}
- return 1;
+ return -1;
}
void mandelbrot_print(void)