Advertisement
Janilabo

Untitled

Nov 4th, 2013
49
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 1.51 KB | None | 0 0
  1. procedure TPADilation(var TPA: TPointArray; times: Integer);
  2. var
  3.   w, h, l, i, j, c, s, g, n, t: Integer;
  4.   b: TBox;
  5.   p: TPoint;
  6.   m: T2DIntegerArray;
  7.   o, d: TIntegerArray;
  8.   se: TStructuringElement;
  9. begin
  10.   if (times > 0) then
  11.   begin
  12.     l := Length(TPA);
  13.     if (l > 0) then
  14.     begin
  15.       b := pp_TPABounds(TPA);
  16.       pp_BoxResize(b, (times + 1));
  17.       pp_BoxDimensions(b, w, h);
  18.       m := pp_Create(0, w, h);
  19.       se := pp_SE_Cross(1, 1, -1, 1, 1);
  20.       g := 3;
  21.       c := 0;
  22.       for i := 0 to (l - 1) do
  23.         if not (m[(TPA[i].X - b.X1)][(TPA[i].Y - b.Y1)] = 1) then
  24.         begin
  25.           m[(TPA[i].X - b.X1)][(TPA[i].Y - b.Y1)] := 1;
  26.           TPA[c] := TPA[i];
  27.           c := (c + 1);
  28.         end;
  29.       l := (l - (c - 1));
  30.       s := (l - 1);
  31.       if (c > 0) then
  32.         SetLength(TPA, l);
  33.       d := pp_TIAByRange(0, (w * h));
  34.       t := 0;
  35.       repeat
  36.         n := 0;
  37.         o := pp_Clone(d);
  38.         for i := 0 to s do
  39.           for j := 0 to g do
  40.           begin
  41.             p.X := (TPA[o[i]].X + se[j].pixel.X);
  42.             p.Y := (TPA[o[i]].Y + se[j].pixel.Y);
  43.             if (m[(p.X - b.X1)][(p.Y - b.Y1)] = 0) then
  44.             begin
  45.               SetLength(TPA, (l + 1));
  46.               TPA[l] := p;
  47.               m[(p.X - b.X1)][(p.Y - b.Y1)] := 1;
  48.               d[n] := (l + i);
  49.               n := (n + 1);
  50.               l := (l + 1);
  51.             end;
  52.           end;
  53.         s := (n - 1);
  54.         t := (t + 1);
  55.       until (t >= times);
  56.     end;
  57.   end;
  58. end;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement