Ich habe vor einiger Zeit auch mal zwei Sierpinski-Dreieck Programme geschrieben, einmal durch diesen Zufallsalgorithmus (nach Delphi von irgendwo portiert) und einmal eine eigene Fassung, einfach die Dreiecke berechnen.
Da ich bei dem Zufall jedoch keine Ahnung habe, wie es funktioniert, sondern wie gesagt nur portiert habe, kann ich keinen Fehler in deinem Quelltext finden. Hier aber mal mein Code:
Delphi-Quellcode:
var Bit: TBitmap32;
X,Y,n: Double;
i,ii: Integer;
begin
Bit:=TBitmap32.Create;
Bit.SetSize(500,500);
X:=Random;
Y:=Random;
Bit.Clear(clWhite32);
for i:=1 to 100000 do
begin
N:=Random(3);
if N=0 then
begin
X:=0.5*X;
Y:=0.5*Y;
end;
if N=1 then
begin
X:=0.5*(0.5+X);
Y:=0.5*(1+Y);
end;
if N=2 then
begin
X:=0.5*(1+X);
Y:=0.5*Y;
end;
Bit.PixelFS[X*500,500-Y*500]:=clBlack32;
end;
Bit.DrawTo(Paintbox321.Canvas.Handle,0,0);
Bit.Free;
end;
PixelFS nimmt auch Floats an.