![]() |
|
|
![]()
|
|
| mrgloom |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 829 Регистрация: 8.6.2011 Репутация: нет Всего: нет |
Допустим у нас есть 2 изображения красное и зеленое и мы их пересекаем, область пересечения получается прямоугольник и нам надо сделать на этом прямоугольнике плавный переход от одного цвета к другому.
при использовании простой формулы
получается ![]() но мне кажется обведенные участки не должны быть такими. |
|||
|
||||
| Silent |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 252 Регистрация: 3.10.2006 Репутация: 1 Всего: 9 |
у меня в одном проекте (на C#) было сделано так:
|
|||
|
||||
| mrgloom |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 829 Регистрация: 8.6.2011 Репутация: нет Всего: нет |
ну это как бы градиент по кругу, только как правильно его "вписать" в прямоугольник?
Добавлено @ 15:11 ну вроде лучше, но всё равно неправильно, т.к. самая верхняя линия должна быть зеленой. ![]() ![]() Это сообщение отредактировал(а) mrgloom - 22.2.2013, 15:25 |
|||
|
||||
| _Y_ |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1651 Регистрация: 27.11.2006 Репутация: 8 Всего: 34 |
Что-то я не понял зачем прямоугольник. Я бы пробовал строить градиент вдоль перпендикуляра к границе.
-------------------- Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:) |
|||
|
||||
| mrgloom |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 829 Регистрация: 8.6.2011 Репутация: нет Всего: нет |
ну и как задаётся граница? |
|||
|
||||
| _Y_ |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1651 Регистрация: 27.11.2006 Репутация: 8 Всего: 34 |
mrgloom, подозреваю, что граница задается кривой и (подозреваю, опять же), что ттребуется просто сделать зрительно плавный переход.
-------------------- Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:) |
|||
|
||||
| mrgloom |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 829 Регистрация: 8.6.2011 Репутация: нет Всего: нет |
ну допустим задаём какой либо кривой - это кривая уровня 0.5, что дальше? ну можно предположить, что надо по нормали к кривой во всех направлениях "испускать градиент разной силы" и что на границе прямоугольной области мы должны приходить к чистому цвету. но я не знаю как так поставить задачу. есть еще вариант взять точку и из точки пускать лучи на стенку области и в зависимости от длины луча по разному меняется градиент, альфа цвет меняется с 0.5 до 0. но не очень понятно как это потом всё интерполировать. |
|||
|
||||
| baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 4 Всего: 101 |
попробуй
|
|||
|
||||
| baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 4 Всего: 101 |
mrgloom, на чем сердце успокоилось?
|
|||
|
||||
| mrgloom |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 829 Регистрация: 8.6.2011 Репутация: нет Всего: нет |
да так и не понятно как правильно.
ну вроде неплохо получается, но кажется, что красного как то меньше, но может это что то связанное именно с цветами и их восприятием. ![]() Это сообщение отредактировал(а) mrgloom - 6.3.2013, 12:15 |
|||
|
||||
| baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 4 Всего: 101 |
||||
|
||||
| mrgloom |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 829 Регистрация: 8.6.2011 Репутация: нет Всего: нет |
остаётся вопрос как быть с вариантом, когда накладываются несколько изображений.
серая область там где пересекаются по 2, а зеленая там где 3 изображения. Это сообщение отредактировал(а) mrgloom - 6.3.2013, 16:07 |
|||
|
||||
| baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 4 Всего: 101 |
о! смотри как делается интерполяция по двум точкам, трем и более (квадратичные кривые и т.д.)
вывод формулы любого порядка делается просто: если линейная интерполяция lerp(p0,p1,t):=p0*(1-t)+p1*t то 2го порядка lerp2(p0,p1,p2,t):=lerp(lerp(p0,p1,t),lerp(p1,p2,t),t) и т.д. Добавлено через 1 минуту и 51 секунду хотя может тебе не это требуется, а просто усреднение значений в пересекающихся областях (смешивание)? |
|||
|
||||
| mrgloom |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 829 Регистрация: 8.6.2011 Репутация: нет Всего: нет |
я не понял как тут использовать сплайны.
мне требуется смешивание(плавный переход по границе) только тут получается случай более сложный, т.к. есть области где смешивается по 2 изображения и есть где 3.По идее еще не должно быть перепада между зеленой и серыми областями, как и между серыми и белыми. |
|||
|
||||
| baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 4 Всего: 101 |
давай для начала рассмотрим наложение двух областей.
итак, когда область одна, но заданы разные цвета в углах, мы эти цвета интерполировать умеем (твоя последняя красно-зеленая картинка) теперь переходим к наложению двух прямоугольников. что должно происходить? Добавлено через 52 секунды т.е. для начала я хочу на интуитивном уровне понять, что должно получиться в результате наложения Добавлено через 6 минут и 28 секунд еще раз прочитал первый пост, и понял что задача не в том, о чем думал сначала. появился дополнительный вопрос: откуда возьмется плавный переход на пересечение двух областей? |
|||
|
||||
![]()
|
| Правила форума "Алгоритмы" | |
|
|
Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Алгоритмы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |