![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Oct 2010
Сообщений: 4
|
Здравствуйте, уважаемые флешеры
![]() Суть проблемы в следующем.. Есть битмапДата, на которой нарисована какая то клякса (неважно какая, все остальное - прозрачное). Нужно создать круг с рандомными координатами (не находящимися в зоне кляксы) так, чтобы круг касался этой кляксы. Как же вычислить радиус круга?) |
|
|||||
|
блогер
Регистрация: Oct 2005
Адрес: Днепродзержинск - город Брежнева и других логопедов
Сообщений: 1,421
Записей в блоге: 4
|
Найти ближайший к центру круга непрозрачный пиксел кляксы. Расстояние от центра до пиксела - радиус.
Искать либо долго, либо сложно (и тоже может оказаться не быстро). Выбирайте =)
__________________
Бобры отвечают на вопросы не потому, что знают на них ответы; они отвечают потому, что их спрашивают. |
|
|||||
|
Регистрация: Oct 2010
Сообщений: 4
|
Вот вот) Тупое увеличение радиуса круга, пока он не упрется в кляксу (сканируя все пиксели по окружности с каждым новым радиусом), выдали Ахренеть какие медленные результаты. На создание 20 кругов ушло более 1000 мсек.. Неужели нет других алгоритмов применимых к этой задаче?
|
|
|||||
|
блогер
Регистрация: Oct 2005
Адрес: Днепродзержинск - город Брежнева и других логопедов
Сообщений: 1,421
Записей в блоге: 4
|
Для начала не увеличивайте радиус, а ищите минимальное расстояние до центра. Расстояние между точками знаете чему равно? Минимум знаете как искать? Вот этот минимум и будет вашим радиусом, без увеличений всяких.
Если надо много кругов, то можно сначала найти только внешние пикселы кляксы и искать расстояние только для них, но боюсь это уже слишком сложно =\
__________________
Бобры отвечают на вопросы не потому, что знают на них ответы; они отвечают потому, что их спрашивают. |
|
|||||
|
Регистрация: Oct 2010
Сообщений: 4
|
Цитата:
![]() Добавлено через 59 минут В общем, проблему решил, заменив битмапдату с кляксой (которая представляет собой на самом деле много пересекающихся окружностей) массивом спрайтов-окружностей. Нахожу дистанцию между каждым из них и создаваемой окружностью, выбираю минимальную. Получилось довольно шустро.. Но интересно было бы услышать от профессионалов как бы они решили первоначальную задачу ![]() |
|
|||||
|
[++]
|
Партизан дело грит - описать вначале внешнюю границу "кляксы". Это вроде не так уж сложно. Вначале найти один крайний пиксел, от него по 7 проверок на пиксел - ткнуться во все стороны, проверить какой из соседних пикселов тоже крайний. Все найденные крайние пикселы в массив. Дальше уже как тов. жаба написал - найти ближайший к центру круга непрозрачный пиксел кляксы и дело в шляпе))
Nicee, порпобуй ради интереса реализовать, какое быстродействие будет у этого варианта)) |
![]() |
![]() |
Часовой пояс GMT +4, время: 00:20. |
|
|
« Предыдущая тема | Следующая тема » |
|
|