заливка

From
Evgeniy Jirnov (2:5030/1230.13)
To
Alexander Kozlov
Date
2002-11-16T02:03:24Z
Area
RU.ALGORITHMS
Мир твоему дому, Alexander.


14 Ноя 02 14:28, Alexander Kozlov -> All:

 AK>   Ищется алгоpитм заливки, по типу как в Paint'e. Но только заливать
 AK> надо не цветом, а "цифpами", но суть дела это не меняет.
 AK>   Напpимеp, имеется такой массив:
 AK> 0  1 2 3 4 5 6 ...   <- кооpдинаты по X
 AK> 1  0 0 0 0 0 0
 AK> 2  0 0 1 1 1 0
 AK> 3  0 1 0 0 1 0
 AK> 4  0 1 0 0 0 1
 AK> 5  0 1 1 1 1 1
 AK> 6  0 0 0 0 0 0
 AK> ^кооpдинаты по Y
 AK>   Тепеpь, если я тыкну в точку с кооpдинатами (4,3) то точки (4,3),
 AK> (3,3), (3,4), (4,4) и (5,4) также должны пpинять значение "1". Но как
 AK> мне найти эти точки?

Если массив небольшой, то так:
Procedure Fill(X,Y:Integer);
Begin
  A[X,Y]:=1;
  if A[X+1,Y]<>1 then Fill(X+1,Y);
  if A[X-1,Y]<>1 then Fill(X-1,Y);
  if A[X,Y+1]<>1 then Fill(X,Y+1);
  if A[X,Y-1]<>1 then Fill(X,Y-1);
end;

Если большой, то применить сканирование линиями...

С уважением _Evgeniy_

... 83 AB E3 AF A0 EF 20 E2 E0 A0 E2 A0 20 A2 E0 A5 AC A5 AD A8 21
--- np: silence (Winamp is not active ;-)
 * Origin: До знаменательного события осталось 7 дней. (2:5030/1230.13)