procedure TCluster.Button1Click(Sender: TObject);
var i,j,z,ss,xm,ym,x,y,distanz,dx,dy:integer;
radius,alpha,p:double;
cabbruch:boolean;
teilchen,farben:integer;
breite,hoehe:integer;
farbfeld : array of array of byte;
tempbitmap:tbitmap;
ziel:tcanvas;
Time1, Time2, abbruchtime, frequenz: Int64;
abbruch:boolean;
function getpix(a,b:integer):integer;
begin
if (a>=0) and (a<=breite) and (b>=0) and (b<=hoehe) then getpix:=farbfeld[a,b]
else getpix:=0;
end;
begin
p:=0.0001;
for i:=1 to spinedit1.Value do
p:=2.0*p;
QueryPerformanceFrequency (frequenz); // Frequenz des Zählers
abbruchtime:=frequenz div 2;
abbruch:=false;
breite:=paintbox1.Width;
hoehe:=paintbox1.height;
tempbitmap:=tbitmap.create;
tempbitmap.width:=breite;
tempbitmap.height:=hoehe;
tempbitmap.PixelFormat:=pf32bit;
ziel:=tempbitmap.canvas;
setlength(farbfeld,breite+1,hoehe+1);
for i:=0 to breite do
for j:=0 to hoehe do farbfeld[i,j]:=0;
distanz:=0;
z:=0;
teilchen:=0;
xm:=paintbox1.width div 2;
ym:=paintbox1.height div 2;
ziel.pixels[xm,ym]:=clblue;
farbfeld[xm,ym]:=1;
QueryPerformanceCounter(Time1);
repeat
z:=z+1;
radius:=distanz*(1+random*p);
alpha:=2.0*pi*random;
x:=xm+round(radius*cos(alpha));
y:=ym+round(radius*sin(alpha));
cabbruch:=false;
repeat
case random(4) of
0 : begin
x:=x-1;
if x<=1 then abbruch:=true;
end;
1 : begin
x:=x+1;
if x>=breite-1 then abbruch:=true;
end;
2 : begin
y:=y-1;
if y<=1 then abbruch:=true;
end;
3 : begin
y:=y+1;
if y>=hoehe-1 then abbruch:=true;
end;
end;
ss:=getpix(x-1,y)+getpix(x+1,y)+getpix(x,y-1)+
getpix(x+1,y+1)+getpix(x-1,y-1)+
getpix(x-1,y+1)+getpix(x+1,y-1)+getpix(x,y+1);
if ss>0 then begin
farben:=z mod 128;
ziel.pixels[x,y]:=rgb(farben,farben,255);
farbfeld[x,y]:=1;
inc(teilchen);
dx:=abs(x-xm);
dy:=abs(y-ym);
if distanz<dx then distanz:=dx;
if distanz<dy then distanz:=dy;
cabbruch:=true;
end;
if (abs(x-xm)>distanz+4) or (abs(y-ym)>distanz+4) then cabbruch:=true;
until cabbruch;
QueryPerformanceCounter(Time2);
if time2-time1>abbruchtime then begin
application.processmessages;
paintbox1.canvas.draw(0,0,tempbitmap);
time1:=time2;
end;
until abbruch or (2*distanz>hoehe);
ziel.Font.name:='Verdana';
ziel.textout(breite-100,20,format('Distanz %d ',[distanz]));
ziel.textout(breite-100,36,format('Cluster %d ',[teilchen]));
paintbox1.canvas.draw(0,0,tempbitmap);
setlength(farbfeld,0,0);
tempbitmap.Free;
end;

Draw Cluster Pixel
Abonnieren
Posts (Atom)
Beliebte Posts
-
Windows Key Sniffer 0.82 - Update 08/2024 Der Windows Key Sniffer hat mir im Laufe der Zeit viel Arbeit erspart und unterstützt, viele Wi...
-
Network Source Code Update Source Code Network Update : https://asciigen.blogspot.com/p/network.html Send Message 1.0 Source Server Client ...
-
Windows Defender Bypass Version 0.75 - Update 11/2024 Den Windows 10-eigenen Virenschutz Defender kann man auf mehreren Wegen abschalt...
-
ASCii GIF Animator Update Version 0.68 (32 bit) - 11/2024 Bei dieser überarbeiteten Version ist die Kompatibilität zu den verschiedenen...
-
MD5 Hacker v.0.26 - Update 08.2024 MD5 Hashs sollten eigentlich nicht entschlüsselt werden können. Jedoch gibt es Tools, mit welchen auch ...
-
Dir Sniffer Version 0.11 - Update 02/2025 Dir Sniffer ist ein kleines aber nützliches Tool um herauszufinden, was ihr Programm auf ihrem...
-
Host Editor Version 0.65 - Update 01/2025 Hosts File Editor allows for the easy editing of host files and backup creation. Create your ...
-
Oldskool Font Generator v.0.29 - Update 11/2023 Das Tool stell 508 Bitmap Fonts zu Verfügung. Eigene Fonts können integriert werden, sie...
-
Hard Crypter 0.19 - Update 12/2023 Mit diesem Tool können Sie jede beliebige Datei auf dem Windows-System verschlüsseln. Die Byte-Erse...
Keine Kommentare:
Kommentar veröffentlichen