Проблема: Я хочу смешать два цвета в 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, но я надеюсь, что смогу сгенерировать что-то похожее на зеленый: )