Я работаю над простым приложением рисования, и мне нужен алгоритм для заливки наводнений.
Рабочий процесс пользователя будет выглядеть следующим образом (аналогично Flash CS, проще):
- пользователь рисует строки прямые в рабочей области. Они рассматриваются как векторы и могут быть выбраны и перемещены после их рисования.
- пользователь выбирает инструмент заполнения и нажимает на область рисования. Если область окружена линиями в каждом направлении, в область будет применена заливка.
если линии перемещаются после применения заливки, соответственно изменяется область заполнения.
У кого-то есть хорошая идея, как реализовать такой алгоритм? Основная задача состоит в том, чтобы определить сегменты линий, окружающие точку. (и каким-то образом сохранить эту информацию, если строки перемещены)
EDIT: пояснительное изображение: (могут быть другие строки, конечно, на холсте, которые не имеют значения для алгоритма заполнения)
EDIT2: более сложная ситуация:
EDIT3: я нашел способ заполнить многоугольники дырками http://alienryderflex.com/polygon_fill/, теперь главный вопрос: как найти мои полигоны