|
|
|||||
Регистрация: Nov 2007
Адрес: Moscow
Сообщений: 566
|
Заливка произвольных фигур цветом
У нас есть произвольное количество примых и кривых, при пересечении они образуют между собой закрытые области:
[IMG]http://data0.***********/getfile.aspx?guid=96469aa6-3b71-4c99-bf5f-6889ad85dedf[/IMG] Для отрезков известны точки начала и конца, для кривых — точки начала, конца и «контрольная» точка. Точки пересечений линий тоже известны. Задача состоит в том, чтобы при тыке на «закрытую» область, залить ее нужным цветом. По сути, на выходе нужно получить примерно то-же, что и в векторных редакторах. Собственно, не могу придумать, как это реализовать. Подскажите ;-) Последний раз редактировалось Obi; 07.10.2008 в 18:11. |
|
|||||
BitmapData.floodFill()
|
|
|||||
Регистрация: Nov 2007
Адрес: Moscow
Сообщений: 566
|
А как математически описать эту область, чтобы потом с ней можно было работать, например отрисовать эту область в векторе?
Последний раз редактировалось Obi; 07.10.2008 в 18:30. |
|
|||||
разделить на примитивы... в вашем случае это пожалуй линии, а линии описываются, функциями и точками, у вас я как понял все есть, держайте)
|
|
|||||
Регистрация: Nov 2007
Адрес: Moscow
Сообщений: 566
|
Я имел ввиду, как именно разделить эту кишащую линиями массу на красивенькие аккуратненькие закрытые области, чтобы в последствие, при тыке на какой-нибудь из них, мы точно знали, что мы вот в этой закрытой области. Тогда и в векторе залить ее цветом проблем не составит.
|
|
|||||
Найди пересечения всех твоих прямых и кривых. Побей прямые и кривые в этих точках на две части. После этого проходи по всем вершинам через отрезки и ищи те, которые совпадают. если с вершиной ничего не совпадает - замкнутой области нет, если она совпадает с начальной вершиной - область замыкается, добавляем ее в массивчик с результатами, берем вершину следующего отрезка.
У тебя получится в результате набор всех замкнутых областей(многоугольников). Из них нужно убрать те, которые являются суммой двух соседних областей. Или сделать обход по вершинам так, чтобы таких областей не было в результате. По поводу того - находится ли точка внутри многоугольника - нужно провести от точки луч в какую-нибудь сторону и посчитать, сколько раз точка пересекает отрезки многоугольника. Нечетное количество - внутри, четное - снаружи. |
Часовой пояс GMT +4, время: 13:19. |
|
« Предыдущая тема | Следующая тема » |
|
|