![]() |
|
|
![]()
|
|
| mrgloom |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 829 Регистрация: 8.6.2011 Репутация: нет Всего: нет |
ну так картинки выше это и есть область пересечения красного и зеленого прямоугольников.
всмысле? |
|||
|
||||
| baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 4 Всего: 101 |
картинки выше это интерполяция от красного угла к зеленому углу, а не пересечение прямоугольников.
можно сделать как угодно, я прост хочу понять твои ожидания. например, если просто смешивать цвета (типа прозрачность), то граница будет резкой. если граница должна быть плавной, нужен некий критерий, некая точка, которая является "центром притяжения цвета" можно например вычислять центры масс каждого прямоугольника и интерполировать относительно них |
|||
|
||||
| mrgloom |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 829 Регистрация: 8.6.2011 Репутация: нет Всего: нет |
ну я взял красный и зеленый прямоугольники, наложил, в области пересечения сделал смешивание, потом эту область вырезал и выложил сюда как картинку.
вот это уже ближе к теме,ну допустим для прямоугольника центр масс w/2 h/2 , как считать дальше? Это сообщение отредактировал(а) mrgloom - 7.3.2013, 13:22 |
||||
|
|||||
| mrgloom |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 829 Регистрация: 8.6.2011 Репутация: нет Всего: нет |
теперь задача немного изменилась, но тоже тесно относится к вышеперечисленному.
надо получить области пересечения прямоугольников и их кол-во в этой области. ![]() получаются полигоны, впринципе есть http://sourceforge.net/projects/polyclipping/ но там общий случай и будут найдены пересечения-полигоны. у меня же мои полигоны можно разложить на сумму прямоугольников и отрисовывать их так легче (не знаю можно ли вообще в mfc рисовать полигоны с картинкой) Добавлено через 6 минут и 33 секунды точнее вопрос сводится к тому, что надо из прямоугольника вычесть прямоугольник и потом получившеюся фигуру побить на прямоугольники. |
|||
|
||||
| mrgloom |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 829 Регистрация: 8.6.2011 Репутация: нет Всего: нет |
может быть это что то типа heat equation?
![]() т.е. у нас есть полигон, стороны-отрезки, которые имеют свой цвет и "испускают" внутрь области этот цвет, где он внутри полигона смешивается в какой то пропорции. и у нас есть краевое условие, что на границе-отрезке у нас чистый цвет. |
|||
|
||||
| baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 4 Всего: 101 |
как он может быть чистый? у вас только два независимых параметра я так и не понял откуда возьмется плавный переход, если это результат наложения прямоугольников |
|||
|
||||
| mrgloom |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 829 Регистрация: 8.6.2011 Репутация: нет Всего: нет |
ну на границе цвет чистый и переход идет от одного чистого до другого чистого,а по середине смешивание, всё плавно и без шва.
вообщем это походу называется Discrete Poisson equation типа такого http://www.ctralie.com/Teaching/PoissonImageEditing/ единственное пока непонятно как поставить задачу для полигона у которого есть разные типы границ. |
|||
|
||||
| baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 4 Всего: 101 |
здесь не просто переход цвета от одного к другому, а смешивание с изменением прозрачности от центра к границе.
вычисляется пересечение прямоугольников, затем производится интерполяция прозрачности для каждого прямоугольника от 0 до 1 по удалению от центра, затем смешивается. думаю, так: для каждой вершины прямоугольника результата пересечения вычисляется цвет (это цвет _другого_, прямоугольника, в который попадает вершина). дальше просто делается интерполяция цвета. если центр прямоугольника попадает в пересечение (один прямоугольник в другом), то добавляется точка центра с оригинальным цветом. |
|||
|
||||
| mrgloom |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 829 Регистрация: 8.6.2011 Репутация: нет Всего: нет |
это то понятно, только неплохо было бы если бы развернули что значит "дальше просто делается интерполяция цвета" и опять же как быть, если у нас пересечение полигон будет, а не прямоугольник? вот например задача одна граница красная, другая зеленая и условие, что цвет на границе должен быть "чистый", а внутри области мы должны как то произвести смешивание. |
|||
|
||||
| mrgloom |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 829 Регистрация: 8.6.2011 Репутация: нет Всего: нет |
кстати я подумал, в такой постановке ведь у задачи может быть любое решение лишь бы граница была одноцветной(т.е. без разницы как мы заполним внутренность), т.е. кроме граничных условий надо задавать какие то еще условия (наверно на изменение градиента в области). т.е. от геометрии полигона должно зависеть направление и сила градиента. п.с. всё таки это как то сильно похоже на какую нибудь физическую задачку о распространении тепла или магнитных полях. |
|||
|
||||
| baldina |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 4 Всего: 101 |
билинейная интерполяция
полигон можно разбить на прямоугольники. если последовательно вычислять результат - сначала два прямоугольника, потом к результату добавляем третий (пересекаем с предыдущим пересечением, потом с первым прямоугольником, потом со вторым) и т.д., то на каждом шаге придется иметь дело лишь с одним прямоугольником |
||||
|
|||||
| mrgloom |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 829 Регистрация: 8.6.2011 Репутация: нет Всего: нет |
что то я всё равно ваш алгоритм не понял.
тут предлагают сначала проводить триангуляцию http://mathematica.stackexchange.com/quest...playing-polygon |
|||
|
||||
![]()
|
| Правила форума "Алгоритмы" | |
|
|
Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Алгоритмы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |