Hallo alle Miteinander!
Ich versuche gerade mir die Pixelwerte in einem Graustufenbild anzeigen zu lassen und zwar nur diejenigen die von einem Kreis umschlossen sind. An die Werte zu bekommen ist ja mittels Scanline kein Problem, doch wie mache ich Delphi jetzt klar, dass ich nur die Werte aus dem Kreis will? Ich habe da mal ein bischen in der Mathematik geschnüffelt und folgendes gefunden:
Delphi-Quellcode:
procedure tkreis.kreisroi;
var help,help2,i,j,yobererhalbkreis,yuntererhalbkreis: integer;
begin
setlength(xywerte,breite,hoehe);
for i:=0 to breite-1 do
for j:=0 to hoehe-1 do
xywerte[i,j]:=true;
for i:=0 to breite-1 do
begin
help:= sqr(rd)-sqr(i-x);
if help>0 then
begin
help2:=round(sqrt(help));
yobererhalbkreis:=y+help2;
yuntererhalbkreis:=y-help2;
for j:=0 to hoehe-1 do
begin
if j<=yobererhalbkreis then
if j>=yobererhalbkreis then
xywerte[i,j]:=false;
end;
end;
end;
for i:=0 to breite-1 do
for j:=0 to hoehe-1 do
if xywerte[i,j]=true then
begin
zahler:= zahler+pixelwerte[i,j];
end;
end;
Das stammt alles von der Formel y=y0 +- sqrt(r²-(x-x0)²)! XYWerte ist ein Array vom Typ wordbool und der Array pixelwerte vom Typ integer gefüllt mit den Werten der einzelnen Pixel.
Ich bekomme als Ergebniss aber immer nur Null. Freue mich über jeden Tip oder Alternativen, die mich davon abhalten meinen Computer zu verhackstücken.
gruß Brandtson