解説:9−1

このプログラムも難しく考える事はない。
今までの作図は、すべて原点(0,0)(左上端)から作図点や点をすべて求めてそれを繋ぐものであった。
このプログラムは、
例えば、紙にx、y軸を書き多角形を描く。 そしてそれぞれ頂点の座標をその原点(x、y軸の交差する点)から出して格納し、そして最後に先ほどのように左上端からの座標に直し絵を描くというものである。面倒臭く感じるが自分で絵から考えプログラムを描く時にはこちらの方法の方がやりやすくなる。

そこで、ここでは最初にペイントで多角形を描き、それをプログラムで表す方法を示す。

描きたい多角形:

      

ここでの各頂点の座標は、X軸とY軸の原点からの座標である。
この多角形を描くプログラムはこうである。

procedure TForm1.Button1Click(Sender: TObject);

var pnt, pt : array [1..12,1..2] of integer;

   i, xc, yc : integer;

begin

   pnt[1,1] := 150; pnt[1,2] := 50;
   pnt[2,1] := 50; pnt[2,2] := 50;
   pnt[3,1] := 50; pnt[3,2] := 150;
   pnt[4,1] := -50; pnt[4,2] := 150;
   pnt[5,1] := -50; pnt[5,2] := 50;
   pnt[6,1] :=-150; pnt[6,2] := 50;
   pnt[7,1] :=-150; pnt[7,2] := -50;
   pnt[8,1] := -50; pnt[8,2] := -50;
   pnt[9,1] := -50; pnt[9,2] :=-150;
   pnt[10,1] := 50; pnt[10,2] := -150;
   pnt[11,1] := 50; pnt[11,2] := -50;
   pnt[12,1] := 150; pnt[12,2] := -50;

   xc := 200;
   yc := 200;

   for i := 1 to 12 do begin
     pt[i,1] := xc + pnt[i,1];
     pt[i,2] := yc - pnt[i,2];
   end;

   Canvas.Polygon([ Point(pt[1,1],pt[1,2]),
        Point(pt[2,1],pt[2,2]),
        Point(pt[3,1],pt[3,2]),
        Point(pt[4,1],pt[4,2]),
        Point(pt[5,1],pt[5,2]),
        Point(pt[6,1],pt[6,2]),
        Point(pt[7,1],pt[7,2]),
        Point(pt[8,1],pt[8,2]),
        Point(pt[9,1],pt[9,2]),
        Point(pt[10,1],pt[10,2]),
        Point(pt[11,1],pt[11,2]),
        Point(pt[12,1],pt[12,2]) ] );

end;

end.

結果:

       

わかるだろうか?実際に代入されている座標は次の通りである。