解説:10−3
この関数 では、絶対値を求めるプログラムを書く事になる。
Delphiで絶対値を求めるには abs という命令を使う。使い方は、
abs( a ) ⇒ a の絶対値
と使う。絶対値を知らない人はいないと思うが、絶対値とは「数値の+と−を取った数値」と思って良いだろう。
テキストのプログラムは関数 の絵を描いているが、関数
のプログラムはどうだろう。
違うところは、m乗されていないところだから、m乗をしている 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枚の花びらを持っている絵(テキスト左上の絵)となる。