M Makefile => Makefile +1 -1
@@ 1,7 1,7 @@
CC = gcc
CFLAGS = -Wall -Wextra -Werror -g3 -I include/
-SRC = src/main.c
+SRC = src/main.c src/color.c src/math.c
OBJ = $(SRC:.c=.o)
OUT = mandelbrot
A include/mandelbrot.h => include/mandelbrot.h +12 -0
@@ 0,0 1,12 @@
+#ifndef MANDELBROT_H
+#define MANDELBROT_H
+
+// math.c
+int mandelbrot_iterations(double cr, double ci, int max_iter);
+
+// color.c
+// TODO: color struct or something
+void get_color(int iter, int max_iter, int* r, int* g, int* b);
+
+
+#endif
A src/color.c => src/color.c +9 -0
@@ 0,0 1,9 @@
+void get_color(int iter, int max_iter, int* r, int* g, int* b) {
+ if (iter == max_iter) {
+ *r = *g = *b = 0; // black inside the set
+ return;
+ }
+ double t = (double)iter / max_iter;
+ int gray = (int)((1.0 - t) * 255); // whiter the furthest it was
+ *r = *g = *b = gray;
+}
M src/main.c => src/main.c +1 -44
@@ 1,49 1,6 @@
+#include "mandelbrot.h"
#include <stdio.h>
-// the mandelbrot set, basically, is a set of points on the complex plane -
-// those points are found using the following equation:
-//
-// z = z^2 + c
-//
-// c is an initial point on this complex plane. if the value of z is bigger than
-// 2 (which means that it's distance from the origin is larger than 2), it means
-// the value is out of the set.
-//
-// but what's going on with all the shapes and colors? this is a recursive
-// function.
-//
-// we start with z as 0, and then with the equation we get a new z, and then put
-// that new z onto the equation and we do that over and over. if z doesn't grow
-// over 2, then c is part of the set. if it does pass 2, we know for how many
-// iterations we have checked and we color based on that
-
-int mandelbrot_iterations(double cr, double ci, int max_iter) {
- double zr = 0.0, zi = 0.0;
- int iter = 0;
- while (iter < max_iter) {
- double zr2 = zr * zr;
- double zi2 = zi * zi;
- // avoids checking for sqrt
- if (zr2 + zi2 > 4.0) {
- break;
- }
- zi = 2.0 * zr * zi + ci;
- zr = zr2 - zi2 + cr;
- iter++;
- }
- return iter;
-}
-
-void get_color(int iter, int max_iter, int* r, int* g, int* b) {
- if (iter == max_iter) {
- *r = *g = *b = 0; // black inside the set
- return;
- }
- double t = (double)iter / max_iter;
- int gray = (int)((1.0 - t) * 255); // whiter the furthest it was
- *r = *g = *b = gray;
-}
-
int main() {
int width = 800;
int height = 600;
A src/math.c => src/math.c +33 -0
@@ 0,0 1,33 @@
+// the mandelbrot set, basically, is a set of points on the complex plane -
+// those points are found using the following equation:
+//
+// z = z^2 + c
+//
+// c is an initial point on this complex plane. if the value of z is bigger than
+// 2 (which means that it's distance from the origin is larger than 2), it means
+// the value is out of the set.
+//
+// but what's going on with all the shapes and colors? this is a recursive
+// function.
+//
+// we start with z as 0, and then with the equation we get a new z, and then put
+// that new z onto the equation and we do that over and over. if z doesn't grow
+// over 2, then c is part of the set. if it does pass 2, we know for how many
+// iterations we have checked and we color based on that
+
+int mandelbrot_iterations(double cr, double ci, int max_iter) {
+ double zr = 0.0, zi = 0.0;
+ int iter = 0;
+ while (iter < max_iter) {
+ double zr2 = zr * zr;
+ double zi2 = zi * zi;
+ // avoids checking for sqrt
+ if (zr2 + zi2 > 4.0) {
+ break;
+ }
+ zi = 2.0 * zr * zi + ci;
+ zr = zr2 - zi2 + cr;
+ iter++;
+ }
+ return iter;
+}