代码
program Kouch;
uses
Graphics;
//Fractal曲线,mc为画布,p1、p2起点终点,k为级数
procedure draw(mc:Tmetafilecanvas;X1,Y1,X2,Y2:INTEGER;k:integer);
var
x,y:real;
MX1,MY1,MX2,MY2,MX3,MY3:INTEGER;
begin
if k=0 then
begin
mc.MoveTo(X1,Y1);
mc.LineTo(X2,Y2);
exit;
end
else
begin
x:
=(X2-X1)/3;
y:
=(Y2-Y1)/3;
MX1:
=round(x+X1);
MY1:
=round(y+Y1);
MX2:
=round(x*2+X1);
MY2:
=round(y*2+Y1);
MX3:
=round(x*cos(pi/3)+y*sin(pi/3)+MX1);
MY3:
=round(y*cos(pi/3)-x*sin(pi/3)+MY1);
DRAW(MC,X1,Y1,MX1,MY1,K
-1);
DRAW(MC,MX1,MY1,MX3,MY3,K
-1);
DRAW(MC,MX3,MY3,MX2,MY2,K
-1);
DRAW(MC,MX2,MY2,X2,Y2,K
-1);
end;
end;

var
m:tmetafile;
mc:tmetafilecanvas;
k:integer;
begin
k:
=7;
m:
=tmetafile.Create;
m.Width:
=60000;
m.Height:
=50000;
mc:
=tmetafilecanvas.Create(m,0);
draw(mc,
10000,15000,50000,15000,k);
draw(mc,
50000,15000,30000,43100,k);
draw(mc,
30000,43100,10000,15000,k);
mc.Free;
m.SaveToFile(
'Fractal.emf');
m.Free;
end.

 



posted on 2011-01-05 16:41  chinyeh  阅读(349)  评论(0编辑  收藏  举报