joar, ScannLines könnte es schon etwas beschleunigen
aber ich wollt's jetzt nicht übertreiben
das Mask sollte eigentlich einen ausgemalten Kreis enthalten
und weil ich grad irgendwie mit Sinus und Cosinus 'ne Denkblokade hab, ist da nur ein "sinnloses" Quadrat drinnen
[edit]
ähhhhh ... ok, ich glaub Potenz und Wurzeln waren da eh besser, als Sinus
[edit2]
wie gesagt, irgendwie denk ich grad nicht richtig
hier kommt irgendwie kein richtiger Kreis raus ... eher irgendwie verdreht
Delphi-Quellcode:
for x := 0 to Size - 1 do
for y := 0 to Size - 1 do
Mask[x, y] := Sqrt(Sqr(x - Size div 2) * Sqr(y - Size div 2)) < Size div 2;
Code:
----------X---------
---------XXX--------
---------XXX--------
---------XXX--------
---------XXX--------
---------XXX--------
--------XXXXX-------
-------XXXXXXX------
------XXXXXXXXX-----
-XXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXX
-XXXXXXXXXXXXXXXXXXX
------XXXXXXXXX-----
-------XXXXXXX------
--------XXXXX-------
---------XXX--------
---------XXX--------
---------XXX--------
---------XXX--------
---------XXX--------
nja, immerhin sieht es so jetzt eher nach Kreis aus (siehe Anhang, auch wenn die "Berechnung" bestimmt einfacher ginge)
Delphi-Quellcode:
for x := 0 to Size - 1 do
for y := 0 to Size - 1 do
Mask[(x + Size div 2) mod Size, (y + Size div 2) mod Size] :=
Sqrt(Sqr(x - Size div 2) * Sqr(y - Size div 2)) >= Size div 2;