1. Odległość punktu od okręgu liczysz jednym strzałem.
2. Punkty wymazane pomijasz, a wymazujesz koła: pixele[x,y] = 0, dla x^2+y^2 1 ) ...
//else nic;
V powierzchni - algorytm
-
- Użytkownik
- Posty: 64
- Rejestracja: 17 kwie 2005, o 10:51
- Płeć: Mężczyzna
- Lokalizacja: Rzeszów
- Podziękował: 3 razy
V powierzchni - algorytm
kurde....pisze i pisze i cos mi nie wychodzi.
Punkty kontur juz mam w tablicy TabKontury[]: TPoint;
Do Tablicy także umieściłem wszystkie TabPixele[]: TPoint tego wycinka
Nie moge sobie poradzić z dalszą częścią tz wychodzi coś ale te wyniki mi coś się wydają nie dobre. Pokażę kawałek kodu:
Punkty kontur juz mam w tablicy TabKontury[]: TPoint;
Do Tablicy także umieściłem wszystkie TabPixele[]: TPoint tego wycinka
Nie moge sobie poradzić z dalszą częścią tz wychodzi coś ale te wyniki mi coś się wydają nie dobre. Pokażę kawałek kodu:
Kod: Zaznacz cały
//OBJETOSC V------------------
//1. Tworzenie dla pkt mozliwe r dla danego pixela
for i:=0 to TabPixeleLength-1 do //wielkośc tablicy pixeli pola
begin
r:=0;
rPrev:=0;
rTemp:=0;
xp:=TabPixele[i].x;
yp:=TabPixele[i].y;
for j:=0 to TabKonturyLength-1 do // wielkość tablicy pkt kontur
begin
xk:=TabKontury[j].x;
yk:=TabKontury[j].y;
//obliczanie dlugosci r dla danego pkt
rTemp:=Sqrt((xk-xp)*(xk-xp)+(yk-yp)*(yk-yp)); // wzór na odległośc dwóch pkt tj pixela od pkt kontury. Pętla sprawdza dla każdego pkt pola każdy pixel kontury - jej odległosć
//zabezpiecznie przed pierwszym najmniejszym
if r=0 then r:=rTemp;
if rTemp<rPrev then r:=rTemp;
rPrev:=rTemp;
end;
//zapis r do talicy
TabRLength:=TabRLength+1;
SetLength(TabR, TabRLength);
TabR[i]:=r;
if i=0 then rMax:=TabR[0];
if r>rMax then rMax:=r;
end;
Memo2.Lines.Add(FloatToStr(rmax));