Алгоритмы заливки векторной графики?

Я работаю над простым приложением для рисования, и мне нужен алгоритм для заливки заливкой.
Рабочий процесс пользователя будет выглядеть так (аналогично Flash CS, только проще):

  1. пользователь рисует прямых линий в рабочем пространстве. Они рассматриваются как векторы, и их можно выбирать и перемещать после их рисования.
  2. Пользователь выбирает инструмент заливки и щелкает по области рисования. Если область окружена линиями во всех направлениях, к области применяется заливка.

Если линии перемещаются после применения заливки, область заливки изменяется соответствующим образом.

У любого есть хорошая идея, как реализовать такой алгоритм? Основная задача состоит в том, чтобы определить отрезки линии, окружающие точку. (и сохраняя эту информацию каким-либо образом, если строки перемещаются)

EDIT: поясняющее изображение: (на холсте, конечно, могут быть другие строки, которые не имеют значения для алгоритма заполнения)

enter image description here

EDIT2: более сложная ситуация:

enter image description here

РЕДАКТИРОВАТЬ3: Я нашел способ заполнить полигоны дырами http://alienryderflex.com/polygon_fill/ , теперь главный вопрос: как мне найти свои многоугольники?

13
задан sydd 5 May 2011 в 00:59
поделиться