// This program draws 50 squares inside each other.

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <error.h>
#include <errno.h>

#include "grsys.h"

int main(int argc, char **argv) {
  float64 q = 0.05; // q = lambda (see discussion below)
  float64 p = 1 - q;
  grsys_InitGr("");

  float64 r = 0.95 * grsys_RMax;
  float64 xA = grsys_XCenter - r;
  float64 yA = grsys_YCenter - r;
  float64 xB = grsys_XCenter + r;
  float64 yB = yA;
  float64 xC = xB;
  float64 yC = grsys_YCenter + r;
  float64 xD = xA;
  float64 yD = yC;

  for (int i = 0; i < 50; i++ ) {
    grsys_Move(xA, yA);
    grsys_Draw(xB, yB);
    grsys_Draw(xC, yC);
    grsys_Draw(xD, yD);
    grsys_Draw(xA, yA);

    float64 xT = xA;
    float64 yT = yA;

    xA = p*xA + q*xB;
    yA = p*yA + q*yB;
    xB = p*xB + q*xC;
    yB = p*yB + q*yC;
    xC = p*xC + q*xD;
    yC = p*yC + q*yD;
    xD = p*xD + q*xT;
    yD = p*yD + q*yT;
  }

  grsys_EndGr();
  exit(EXIT_SUCCESS);
  return EXIT_FAILURE;
}
