Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - .NET

Страница: 1 | 2 |

 

  Вопрос: алгоритм заливки Добавлено: 06.02.09 11:36  

Автор вопроса:  

Ответить

  Ответы Всего ответов: 24  

Номер ответа: 16
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #16
Добавлено: 14.02.09 16:28
либо круговой перебор пикселов с рекурсией

Наверно, ты имел ввиду BFS, частный случай которого называется волновым алгоритмом.

Ответить

Номер ответа: 17
Автор ответа:
 EROS



Вопросов: 58
Ответов: 4255
 Профиль | | #17 Добавлено: 14.02.09 16:39
да, именно о волновом алгоритме я и говорил

Ответить

Номер ответа: 18
Автор ответа:
 EROS



Вопросов: 58
Ответов: 4255
 Профиль | | #18 Добавлено: 15.02.09 02:22
вот,кстати, разжованная реализация нескольких вариантов этого алгоритма
http://student.kuleuven.be/~m0216922/CG/floodfill.html

Ответить

Номер ответа: 19
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #19 Добавлено: 15.02.09 05:57
EROS, жаль что ты не привел нам свой пример алгоритма с рекурсией, я хотел посмотреть как у тебя это реализовано

Ответить

Номер ответа: 20
Автор ответа:
 AgentFire



ICQ: 192496851 

Вопросов: 75
Ответов: 3178
 Профиль | | #20 Добавлено: 16.02.09 13:19
Без рекурсии.. ибо может случиться непоправимое :)
Тем не менее, я не предлагаю юзать готовый алгоритм поиска пути, я лишь даю его за основу, чтобы дать направление подумать.

Ответить

Номер ответа: 21
Автор ответа:
 EROS



Вопросов: 58
Ответов: 4255
 Профиль | | #21 Добавлено: 16.02.09 13:24
Без рекурсии.. ибо может случиться непоправимое

разумеется, на больших картинках это не прокатит.. StackOverflowException обеспечен.

Ответить

Номер ответа: 22
Автор ответа:
 AgentFire



ICQ: 192496851 

Вопросов: 75
Ответов: 3178
 Профиль | | #22 Добавлено: 16.02.09 17:27
О да. именно поэтому я ну очень не люблю заставлять программу входить саму в себя :)

А то, что я имел ввиду, довольно просто -

Имеем два списка - один "белый", второй "черный"

1. берем начальную точку, добавляем ее в белый список.
2. мочим цикл по белому списку, пока он не исчезнет
3. оглядываем соседние 8 каждой точки белого с целью узнать, если ли какая-нибудь из них в черном списке. если нету - добавляем в белый.
4. текущую же точку убиваем из белого, и пихаем в черный.

ну, вродь корректно

Ответить

Номер ответа: 23
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #23
Добавлено: 16.02.09 18:51
С точки зрения расхода памяти удобнее иметь три списка: перебиравшихся на прошлом шаге; перебирающихся на этом; которые будут перебираться на следующем.

Ответить

Номер ответа: 24
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #24 Добавлено: 16.02.09 18:58
AgentFire Если я тебя правильно понял, то на более-менее небольшой картинке ты получишь переполнение стека.

http://www.codeproject.com/KB/GDI-plus/QuickFillNET.aspx
Вот тут говорят неплохая реализация, сам правда бегло смотрел

Ответить

Страница: 1 | 2 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам