На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! правила раздела Алгоритмы
1. Помните, что название темы должно хоть как-то отражать ее содержимое (не создавайте темы с заголовком ПОМОГИТЕ, HELP и т.д.). Злоупотребление заглавными буквами в заголовках тем ЗАПРЕЩЕНО.
2. При создании темы постарайтесь, как можно более точно описать проблему, а не ограничиваться общими понятиями и определениями.
3. Приводимые фрагменты исходного кода старайтесь выделять тегами code.../code
4. Помните, чем подробнее Вы опишете свою проблему, тем быстрее получите вразумительный совет
5. Запрещено поднимать неактуальные темы (ПРИМЕР: запрещено отвечать на вопрос из серии "срочно надо", заданный в 2003 году)
6. И не забывайте о кнопочках TRANSLIT и РУССКАЯ КЛАВИАТУРА, если не можете писать в русской раскладке :)
Модераторы: Akina, shadeofgray
  
> Получение градаций цвета по градациям серого
    Всем прива!

    Запутался я в этих формулах преобразований, прошу хэлп. Задача у меня вот какая:

    Пусть цвету ████ #DADADA соответствует ████ #90D12D, нужно найти соответствия оттенков зелёного для:

    ████ #E2E2E2=?
    ████ #FBFBFB=?
    ████ #FEFEFE=?

    На сколько я немного почитал, что простое увеличение на какую-то одну величину для R, G и B неправильно, ибо составляющие вносят разные вклады в результирующий цвет.
    По инету даже формула ходит ((0.2989 * R) + (0.5870 * G) + (0.1141 * B)), но это прямое преобразование цвета в градации серого.
    А мне по образцам серого нужно получить оттенки цвета - т.е. задача обратная. Как это посчитать?

    Туплю, хелп! :(
      Цитата Majestio @
      простое увеличение на какую-то одну величину для R, G и B неправильно, ибо составляющие вносят разные вклады в результирующий цвет.

      Нужно умножать, а не добавлять.
      Пусть новый серый - #8D8D8D, тогда #90D12D покомпонентно умножаешь на #8D и делишь на #DA.
        Пробуем:

        ████ #DADADA=████ #90D12D
        ████ #E2E2E2=████ #96D92F
        ████ #FBFBFB=████ #A6F134
        ████ #FEFEFE=████ #A8F434
        ████ #FFFFFF=████ #A8F435


        Нет, что-то не то, что хотелось :( Градация серого - начинается с черного, заканчивается белым, а внутри оттенки серого. С зеленым цветом должно быть так-же, начинаться с черного, заканчивается белым - внутри оттенки зеленого.

        Ну и в моем случае немного задача усложняется тем, что берется не чисто зеленый цвет, а где-то ближе к салатовому.

        ЗЫ: При расчетах я дроби округлял - меньше 0.5 к меньшему, соотв. больше - к большему целому.
          Цитата Majestio @
          заканчивается белым

          Это надо было сразу уточнить - это совсем не очевидно.
          Можно по предыдущей формуле считать тогда, когда серый темнее опорного, там так и уйдёт к чёрному. А когда светлее, считать как-то так:
          ExpandedWrap disabled
            RNew = 255 - (255 - r) * (255 - Gray) / (255 - #DA)

          Gray - это новое значение компоненты серого (вместо #DA).
          Это расчёт для красной компоненты, так сделать для каждой компоненты.
            Цитата
            Нет, что-то не то, что хотелось

            А чего, собственно, хотелось-то? Как задается отображение одного цвета на другой? По какой формуле можно определить, попали в цвет или не попали?
            Цитата
            С зеленым цветом должно быть так-же, начинаться с черного, заканчивается белым - внутри оттенки зеленого.

            Смутно подозреваю, что речь идет о цвете в модели HSL с фиксированной цветностью и насыщенностью и с переменной яркостью. Но тогда непонятно, почему #DADADA соответствует #90D12D, ведь у них яркости разные.
              Цитата AVA12 @
              Но тогда непонятно, почему #DADADA соответствует #90D12D, ведь у них яркости разные.

              Ну опишу предметное применение:

              Есть к примеру какой-то рисунок/узор в градациях серого. У меня есть какой то "опорный" цвет (пусть и не той яркости). Мне на рисунке нужно самому темному цвету сопоставить этот опорный цвет, и по всем более ярким цветам рисунка - сгенерировать оттенки "опорного". Или не совсем понятно? :-?

              Добавлено
              Цитата Mikle @
              Это расчёт для красной компоненты, так сделать для каждой компоненты.

              Пасип, буду пробовать ...
                Еще раз пробуем:

                ████ #DADADA=████ #90D12D
                ████ #E2E2E2=████ #A8DB5A
                ████ #F1F1F1=████ #D5EFB1
                ████ #FBFBFB=████ #F3FAE8
                ████ #FEFEFE=████ #FCFFF9
                ████ #FFFFFF=████ #FFFFFF

                Супер, то что нужно!!! :victory:
                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                0 пользователей:


                Рейтинг@Mail.ru
                [ Script execution time: 0,0347 ]   [ 15 queries used ]   [ Generated: 29.02.24, 03:59 GMT ]