Advertisement
apexsquirt

[C++ / GrAPic] Circular Squares Fractal

May 18th, 2020
2,403
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.70 KB | None | 0 0
  1. #include <Grapic.h>
  2. #include <math.h>
  3. const int DIMW = 900;
  4. using namespace grapic;
  5. const double rayon = 1.f;
  6. const double range = 0.0000001f;
  7.  
  8. const int depth = 12;
  9. // the higher it is, the more squares there are !
  10.  
  11. struct Point {
  12.     double x;
  13.     double y;
  14. };
  15. struct square {
  16.     Point coord;
  17.     double length;
  18. };
  19. square initsqr () {
  20.     square ret;
  21.     ret.coord.x = 1;
  22.     ret.coord.y = 1;
  23.     return ret;
  24. }
  25. Point coord (double x, double y) {
  26.     Point ret;
  27.     ret.x = x;
  28.     ret.y = y;
  29.     return ret;
  30. }
  31. void solve (square &sq, Point start) {
  32.     sq.coord = start;
  33.     sq.length = 0;
  34.     while ((sq.coord.x)*(sq.coord.x)
  35.           +(sq.coord.y)*(sq.coord.y) > (1+range)*(1+range)) {
  36.         sq.coord.x -= range;
  37.         sq.coord.y -= range;
  38.         sq.length += range;
  39.     }
  40.     color(127,127,127,255);
  41.     rectangleFill(sq.coord.x*(DIMW-10),sq.coord.y*(DIMW-10),
  42.              (sq.coord.x+sq.length)*(DIMW-10),
  43.              (sq.coord.y+sq.length)*(DIMW-10));
  44.     color(255,255,255,255);
  45.     rectangle(sq.coord.x*(DIMW-10),sq.coord.y*(DIMW-10),
  46.              (sq.coord.x+sq.length)*(DIMW-10),
  47.              (sq.coord.y+sq.length)*(DIMW-10));
  48.     winDisplay();
  49. }
  50. void tree (square sq, int d = 0) {
  51.     if (d == depth) printf("");
  52.     else {
  53.         square L = sq, R = sq;
  54.         L.coord.y += sq.length;
  55.         R.coord.x += sq.length;
  56.         solve(L,L.coord);
  57.         solve(R,R.coord);
  58.         tree(L,d+1);
  59.         tree(R,d+1);
  60.     }
  61. }
  62. int main(int, char**) {
  63.     winInit("Bruh",DIMW,DIMW);
  64.     backgroundColor(0,0,0);
  65.     color(0,0,0);
  66.     pressSpace();
  67.     winClear();
  68.     color(255,255,255);
  69.     circle(0,0,DIMW-10);
  70.     line(0,DIMW-10,DIMW-10,DIMW-10);
  71.     line(DIMW-10,0,DIMW-10,DIMW-10);
  72.     square sq = initsqr();
  73.     solve(sq,sq.coord);
  74.     tree(sq);
  75.     pressSpace();
  76.     winQuit();
  77. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement