Проблема: Я хочу смешать два цвета в javascript и получить цвет результата. На SO есть много похожих вопросов, но я не нахожу ничего, что действительно работает правильно. Я знаю, что смешивание двух разных цветных красок (пигментов) и огней даст очень разные результаты (http://en.wikipedia.org/wiki/Color_mixing).
Вот вопросы и предлагаемые решения, которые я уже видел, и попытались реализовать:
1: Смешивание двух цветовых векторов RGB для получения результата
Итак, смешивая цвета в RGB. Я реализовал его, и в некоторых случаях он работает, в некоторых случаях это не так.
Рабочий пример: Смешивание red
с yellow
→ orange
. Отлично!
http://jsbin.com/afomim/1/edit
Не работает пример: Смешивание blue
с yellow
→ gray
. Не так здорово!:)
http://jsbin.com/afomim/5/edit
Я знаю, что при смешивании RGB blue
с yellow
никогда не будет green
, и я понимаю, почему.
Мы не найдем ответа здесь, отпустите вперед.
2: Добавление цветов (цветов) Вместе как Paint (синий + желтый = зеленый и т.д.)
Попробуйте работать с значениями CMYK, как это предлагается в этом обсуждении. Смешение cyan
с yellow
дает green
:
http://jsbin.com/igaveg/1/edit
, но перемещение blue
с yellow
приводит к black
.
http://jsbin.com/igaveg/2/edit → Не работает!
3: Как смешивать цвета и "естественно" с С#?
Очень похожий вопрос. Самый верный ответ предлагает преобразовать цвета в LAB, и это решение кажется многообещающим.
Поэтому я преобразовал свои цвета в LAB. Алгоритм преобразования правильный, я его протестировал!
http://jsbin.com/oxefox/1/edit
Теперь у меня есть два цвета в LAB, но как их смешивать?
ПРИМЕЧАНИЕ Я знаю, что, вероятно, я не найду алго, который смешивает blue
с yellow
и даст идеальный green
, но я надеюсь, что смогу сгенерировать что-то похожее на зеленый: )