![]() |
|
![]() ![]() ![]() |
|
_Y_ |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1651 Регистрация: 27.11.2006 Репутация: 8 Всего: 34 |
Имеем прямоугольное поле. Четыре угла соответствуют четырем цветам. Переход цветов плавный.
Как посчитать цвета промежуточных пикселей? Вот, вроде, такая схема предлагалость переводить в CMYK и смешивать там. Но я, что-то не нашел как в CMYK смешать четыре цвета. Спасибо. -------------------- Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:) |
|||
|
||||
Pavia |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 418 Регистрация: 6.12.2008 Репутация: 11 Всего: 12 |
Можно делать по разному.
Как билинейную интерполяцию. http://en.wikipedia.org/wiki/Bilinear_interpolation Или обратную средне взвешенное расстояние. http://en.wikipedia.org/wiki/Inverse_distance_weighting У билинейной есть тонкости. |
|||
|
||||
Pavia |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 418 Регистрация: 6.12.2008 Репутация: 11 Всего: 12 |
CMYK используется для моделирования смешивания цветов красок. А RGB для смешивания цветов как на мониторе.
|
|||
|
||||
ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 7 Всего: 386 |
_Y_, Вероятно, лучше пользоваться HSL - три независимых числовых параметра вместо 4-х, кроме того, что именно HSL обычно используется при манипуляциях с цветом.
Вот одно из решений, для того, чтобы понять его принцип - для каждой части "цвета" (для определенности возьмем H) строится 4 точки пространства, соответствующие координатам X,Y,H. Вообразим себе китайскую циновку - комплект тонких палочек, провязанных друг с другом, и "приложим" край циновки к одной паре точек, а другой - к противоположной и сильно его растянем, без провисаний. Циновка, вероятно, перекрутится и , местами, растянется ![]() Как вычислить значение H на одной из планок циновки? Достаточно вычислить значения H на концах и изменить, пропорционльно расстоянию от конца "планки". Как вычислить значения H на концах планок? Все концы планок располагаются на одной прямой и значения H изменяется равномерно. Значения Р в углах - известны. Выводить точные формулы мне не очень интересно ![]() -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! ![]() |
|||
|
||||
baldina |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 4 Всего: 101 |
_Y_, линейно интерполируйте
странно, как ему это поможет? задача была
это и будет линейная (билинейная) интерполяция а с провисаниями - кривые безье (которые суть функция от линейной интерполяции) какие? второе суть NURBS и при размерности 2 превращается в первое |
||||
|
|||||
_Y_ |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1651 Регистрация: 27.11.2006 Репутация: 8 Всего: 34 |
Папа, а с кем это ты разговариваешь?
ЗЫ: Спасибо. Есть с чего начать думать ![]() -------------------- Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:) |
|||
|
||||
Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 7 Всего: 183 |
Ну, возможно, имелось в виду, что RGB пространство нелинейное и расстояние между цветами там считать некорректно (соответственно, и перетекание). Т.е. некорректно с точки зрения перцепции, а если это не важно, то пофиг. А если важно, то лучше тогда использовать LAB или производные - там расстояние линейно почти. А интерполировать цвета, согласна, проще всего билинейной интерполяцией. Или проективным преобразованием. -------------------- ... |
|||
|
||||
baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 4 Всего: 101 |
||||
|
||||
Pavia |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 418 Регистрация: 6.12.2008 Репутация: 11 Всего: 12 |
Пространство RGB изначально было линейным и таким и остаётся.
|
|||
|
||||
_Y_ |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1651 Регистрация: 27.11.2006 Репутация: 8 Всего: 34 |
Подумал я над вашими ответами. Получилось, что от многой мудрости много печали. Взял и сделал вот так - линейнее некуда:
Разобрал угловые цвета на RGB компоненты. Потом для каждого объекта (в идеале - пикселя) линейно смешивал каждую компоненту по такой схеме
![]() Как видите, выглядит достойно. Что мне еще нужно? Спасибо, что подсказали - навели на мысли. ЗЫ: Все это сделано вот этим грязноватым Java кодом. Если запустите, нажимайте на угловые кнопки - откроются диалоги выбора цвета.
Это сообщение отредактировал(а) _Y_ - 15.8.2012, 23:32 -------------------- Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:) |
|||
|
||||
Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 7 Всего: 183 |
Я же написала, относительно восприятия человеческого. Т.е. одинаковая разность цветов в разных углах пространства воспринимается по-разному. А формула "субъективной" цветовой разницы многоэтажная. А вот пространства типа LAB специально строились для обеспечения большей равномерности цветовой разницы. -------------------- ... |
|||
|
||||
maxim1000 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 33 Всего: 110 |
что и является билинейной интерполяцией... -------------------- qqq |
|||
|
||||
_Y_ |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1651 Регистрация: 27.11.2006 Репутация: 8 Всего: 34 |
Спасибо. Очень люблю умные названия. К сожалению, сам я их почти сразу забываю
![]() -------------------- Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:) |
|||
|
||||
maxim1000 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 33 Всего: 110 |
да просто её посоветовали в первом же ответе, можно было бы время сэкономить -------------------- qqq |
|||
|
||||
_Y_ |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1651 Регистрация: 27.11.2006 Репутация: 8 Всего: 34 |
Спасибо. Но этот проект не критичный по времени у меня. Что-то среднее между хобби и самообразованием. -------------------- Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:) |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Алгоритмы" | |
|
Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Алгоритмы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |