解答:9−6

解答プログラム:

procedure TForm1.Button1Click(Sender: TObject);

const pai = 3.141592;

var pnt, pt : array [1..6,1..2] of real;

   pt_int : array [1..6, 1..2] of integer;

   i, n, xc, yc : integer;
   angle, th : real;

begin

   pnt[1,1] := 0;   pnt[1,2] := 0;
   pnt[2,1] := 50;  pnt[2,2] := 50;
   pnt[3,1] := 50;  pnt[3,2] := 150;
   pnt[4,1] := 0;   pnt[4,2] := 100;
   pnt[5,1] := -50;  pnt[5,2] := 150;
   pnt[6,1] := -50;  pnt[6,2] := 50;

   xc := 200;
   yc := 200;

   angle := 0;

   for n := 1 to 24 do begin

      th := pai * angle / 180;

      for i := 1 to 6 do begin
        pt[i,1] := pnt[i,1] * cos(th) - pnt[i,2] * sin(th);
        pt[i,2] := pnt[i,1] * sin(th) + pnt[i,2] * cos(th);
      end;

      for i := 1 to 6 do begin
        pt_int[i,1] := xc + round(pt[i,1]);
        pt_int[i,2] := yc - round(pt[i,2]);
      end;

      Canvas.Polygon([ Point(pt_int[1,1],pt_int[1,2]),
                  Point(pt_int[2,1],pt_int[2,2]),
                  Point(pt_int[3,1],pt_int[3,2]),
                  Point(pt_int[4,1],pt_int[4,2]),
                  Point(pt_int[5,1],pt_int[5,2]),
                  Point(pt_int[6,1],pt_int[6,2]) ] );

      angle := angle + 15;

   end;

end;

end.