эта женщина намазана вареньем!
Доброго времени суток! поделитесь , пожалуйста, знаниями =)

необходимо создать градиентную заливочку замкнутой области. я использую рекурсивный алгоритм на основе серий пикселов(т.е. линиями заливаю). он отлично работает для выпуклых фигур, а если в фигуре имеется "дырка" (в смысле, как в сыре, а не в контуре) или если фигура изогнута как синусоида то результат вот так выглядит:


как мне его можно изменить ?

@темы: Работа

Комментарии
03.02.2009 в 14:08

Люди никогда не достигнут совершенства, пока будут оставаться людьми...
Ну первый вариант, который приходит в голову, это найти, ну например выпуклую оболочку фигуры, залить её, потом ненужное откинуть.
03.02.2009 в 14:12

эта женщина намазана вареньем!
ну а ненужное как найти?)) не... эт не попрет (((((
03.02.2009 в 18:10

Что бы увидеть радугу нужно пережить дождь
уга-буга, почему нельзя для ненужной посмотреть ее по принадлежности.у тебя же есть какая-то формула, которая задает фигуру... вот просто обратить эту формулу и все.
03.02.2009 в 18:14

WAAAAAAAAAGH!!!!!!1111ONEONE
griffonya когда кто-то рисует в паинте фигуру, она не обязана описываться математически ;) Не, ну конечно, можно выразить формулой любой кошмар, но не уверен, что сейчас именно такая задача.

К автору: а что мешает в "крайних" точках запустить алгоритм ещё раз? Естественно с указанием центра градиента для определения цвета.
03.02.2009 в 18:56

Люди никогда не достигнут совершенства, пока будут оставаться людьми...
Vj_o-oy, на сколько я понимаю проблема именно в этом.

Вообще смотря о каких размерах идёт речь. Если нам не очень важна производительность, можно найти ограничивающий прямоугольник, залить его, а потом по нему бегать и смотреть что скопировать на итоговую картинку, а что -- нет. Это может использоваться, как промежуточное решение данной проблемы. Если же производительность не особо важна, и не будут заливаться фигуры по несколько мегапикселей, то на нормальном компе это всё за секунду сработает...
03.02.2009 в 19:12

а маски здесь применить никак нельзя? так чтоб вне фигуры сделать все прозрачным
03.02.2009 в 20:08

Что бы увидеть радугу нужно пережить дождь
Vj_o-oy, я имела ввиду формулу не в смысле математическую написанную. я имею ввиду, что если можно определить лежит ли точка внутри, то можно просто обратным преобразованием определить лежит ли точка снаружи.
04.02.2009 в 09:31

эта женщина намазана вареньем!
griffonya когда фигура дырявая ничего не определить человеческими методами...
Vj_o-oy что значит в крайних точках запустить?? алгоритм идет от одной точки.... вверх и вниз...я немного не поняла что ты имел ввиду...
[revolver] я наверное так и сделаю если ничего толкового не придумаю... буду "бегать" по выпуклой оболочке....


всем большое спасибо! )) первый раз тут пишу пост ... и мне понравилось )

кому интересно, можно еще сделать так
04.02.2009 в 10:00

WAAAAAAAAAGH!!!!!!1111ONEONE
уга-буга я имею ввиду, что если его запустить повторно в одной из отмеченных точек, то фигура может оказаться заполненной полностью.