program quadratrotation;{siehe lienierot.pas}
{Dreht Quadrat, ergibt interessante Figur, beachte Graphikverzeichnis in Zeile 29}
uses crt, graph;

var gd, gm, x1, y1, x2, y2 : integer;
    farbe                  : byte;
    durch                  : word;
    wr, wl, radius, laenge : real;

procedure figurz(x1, y1, x2, y2: integer);
  begin
    moveto(x1, y1);
    lineto(x2, y1);
    lineto(x2, y2);
    lineto(x1, y2);
    lineto(x1, y1);
  end;

procedure berechnen(radius, laenge: real;
            var x1, y1, x2, y2: integer; var wr, wl: real);
  begin
    wr:=wr+(Pi/90); wl:=wl+(Pi/90);
    x2:=320+round(radius*cos(wr));    y2:=240-round(radius*sin(wr));
    x1:=round(x2-laenge*cos(wl)); y1:=round(y2-laenge*sin(wl));
  end;

begin
  gd:=9; gm:=2;
  initgraph(gd, gm, 'd:\tp\bgi');
  farbe:=0;
  durch:=0;
  repeat
    if durch mod 180= 0 then
      begin
        farbe:=farbe+1;
        if (farbe mod 16 = 0) then
          begin
            farbe:=farbe+1;
            delay(1000);
            readln;
            cleardevice;
          end;
        durch:=0;
        x1:=200; y1:=240-(farbe*15); x2:=440; y2:=y1;
        radius:=sqrt(abs(sqr(abs(320-x2))+sqr(abs(240-y2))));
        laenge:=sqrt(abs(sqr(abs(x1-x2))+sqr(abs(y1-y2))));
        wl:=Pi;
        wr:=(-1)*arctan((y2-240)/(x2-320));
      end;
    setcolor(farbe);
    berechnen(radius, laenge, x1, y1, x2, y2, wr, wl);
    figurz(x1, y1, x2, y2);
    delay(20);
    durch:=durch+1;
    {setcolor(0);
    figurz(x1, y1, x2, y2);}
  until keypressed;
  readln;
  closegraph;
  writeln(wr*180/Pi:2:4);
end.
