Witam serdecznie, na wstępie zaznaczę, że kod nie jest mojego autorstwa, jednakże zostałem poproszony o przerobienie go przez samego autora. Nie jestem tak zaawansowany w programowaniu w delphi jak ten człowiek, jednakże posiadam jakieś umiejętności a on nie ma czasu i poprosił mnie, dlatego nie chce udostępniać za dużo kodu jeśli nie jest to konieczne ;) Praca nie ma charakteru komercyjnego.
Mam napisaną taką pętlę (a raczej dwie pętle):
for i:=-300 to 300 do
begin
for k:=-200 to 200 do
begin
Przed nią jest kilka różnych deklaracji zmiennych, kilka warunków itp., nie są one raczej istotne.
dr2:=abs(0.0175*((1/sin(2*(arctan(sqrt(((p2-ra2)*(p2-rb2))/(p2*(p2-d2)))))))*(sqrt(sqr((ra2)*(da1))+sqr((rb2)*(db1))))));
W zależności od pewnych wartości wyliczonych z w/w wzoru rysuje mi się obszar o danym kolorze, ograniczony tymi wartościami, są to kształty różnego rodzaju, w zależności od kilku innych warunków. Przykładowym kształtem jest np. lekko zdeformowana (spłaszczona) "8".
Do rysowania wykorzystuje metodę pixels:
if (dr2>20) and (dr2<50) then
obraz.Canvas.pixels[poczx+i,poczy-k]:=clpurple;
Gdzie poczx i poczy to po prostu początek canvasu wygenerowanego przy wywoływaniu rysowania tych obszarów. Działanie jest dosyć trywialne, metoda ta rysuje piksel o danym kolorze w konkretnym miejscu. Moje pytanie brzmi, czy jest możliwość aby nie rysowało tych pikseli wszędzie a jedynie w miejscu gdzie jest granica tych obszarów.
Oto przykład co chce uzyskać (po prawej) oraz jak jest (po lewej):
Z góry dziękuję za wszelkie wskazówki, pomoc itp.
Pozdrawiam