解説:10−3

この関数  では、絶対値を求めるプログラムを書く事になる。
Delphiで絶対値を求めるには abs という命令を使う。使い方は、

abs( a ) の絶対値

と使う。絶対値を知らない人はいないと思うが、絶対値とは「数値のを取った数値」と思って良いだろう。

テキストのプログラムは関数  の絵を描いているが、関数  のプログラムはどうだろう。
違うところは、乗されていないところだから、乗をしている function の部分を抜けばいい。

var
Form1: TForm1;

var xc, yc : integer;
   scale : real;

procedure draw_flower_curve( m:integer; n:integer );

implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);

var i : integer;

begin

   scale := 120;
   xc := 200; yc := 200;

   for i := 1 to 10 do begin
     draw_flower_curve( i, 5 );
   end;

   end;

procedure draw_flower_curve( m:integer; n:integer );

var  i, ndiv : integer;
    a, r, pai, angle, th, delta, x1, y1 : real;

begin

   pai := 3.1415;
   a := 1;
   ndiv := 200;
   delta := 360 / ndiv;

   angle := 0;
   for i := 1 to ndiv do begin

      th := pai * ( angle * n ) / 180;
      r := abs( a * sin(th) );

      th := pai * angle / 180;
      x1 := r * cos(th);
      y1 := r * sin(th);

      if i = 1 then Form1.Canvas.MoveTo( xc + round(scale*x1), yc - round(scale*y1) )
      else Form1.Canvas.LineTo( xc + round(scale*x1), yc - round(scale*y1) );

      angle := angle + delta;

   end;

end;

end.

どこが違うかわかっただろうか。このプログラムはnが5の場合で、10の花びらを持っている絵(テキスト左上の絵)となる。