Смешивание двух цветов «естественно» в JavaScript

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

Мы не найдем здесь ответа, пойдем дальше.

2: Добавление цветов (цветов) вместе, как краска (синий + желтый = зеленый и т. Д.)

Давайте попробуем работать со значениями CMYK, как предлагается в этом обсуждении. смешиваниеcyan с участиемyellow даетgreen:
http://jsbin.com/igaveg/1/edit
но смешиваниеblue с участиемyellow результаты вblack.
http://jsbin.com/igaveg/2/edit -> Не работает!

3: Как смешивать цвета "естественно" с C #?
Очень похожий вопрос. Наиболее одобренный ответ предлагает преобразовать цвета в LAB, и это решение кажется многообещающим.
Поэтому я преобразовал свои цвета в LAB. Алгоритм преобразования правильный, я его проверил!

http://jsbin.com/oxefox/1/edit

Теперь у меня есть два цвета в LAB, но как их смешать?

НОТА Я знаю, что, вероятно, я не найду алгоритм, который смешиваетblue с участиемyellow и даст идеальныйgreen, но я надеюсь, что смогу создать что-то похожее на зеленый :)

Ответы на вопрос(8)

Ваш ответ на вопрос