заливка
- 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)