V powierzchni - algorytm

Fibik
Użytkownik
Użytkownik
Posty: 971
Rejestracja: 27 wrz 2005, o 22:56
Płeć: Mężczyzna
Lokalizacja: Wrocław
Podziękował: 11 razy
Pomógł: 75 razy

V powierzchni - algorytm

Post autor: Fibik »

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;
marsoft
Użytkownik
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

Post autor: marsoft »

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:

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));
ODPOWIEDZ