Цвета HSL для пигментации

Недавно я работал над приложением для выбора цвета, которое позволяет пользователю выбирать оттенок, насыщенность и яркость цвета. После того, как пользователь выбрал цвет, я даю ему различные цветовые схемы, соответствующие выбранному цвету. Некоторые из представленных цветовых схем являются дополнительными, дополнительными, тройными, аналогичными и т. Д.
Например: если пользователь выбирает красный в качестве цвета, hsl (0, 100%, 50%), чтобы определить дополнительный цвет, то к оттенку добавляются 180 градусов, в результате чего (180, 100%, 50 %), который будет голубым. По аналогичной схеме я прибавляю 30 и вычитаю 30, и так далее. Все работает отлично, пока я не понял, что это веб-цвета!
Я по-прежнему сохраню эту функциональность, но теперь я хочу создавать цветовые схемы, напоминающие пигментацию. Например, в реальной жизни дополнительный красный цвет будет зеленым, а не голубым, как в цветах света. Может ли кто-нибудь указать мне ресурсы о том, как преобразовать hsl в пигментацию? Как мне настроить оттенки так, чтобы зеленый был противоположностью красного?


person lomas09    schedule 07.09.2014    source источник
comment
Вычислить цвета с помощью RYB не так-то просто. Проверьте этот вопрос: http://stackoverflow.com/questions/4945457/conversion-between-rgb-and-ryb-color-spaces   -  person Derek 朕會功夫    schedule 07.09.2014


Ответы (1)


Я нашел в сети скрипт, который может конвертировать RYB в / из RGB. Вот ссылка на скрипт.

При этом очень легко вычислить дополнительные цвета, вычтя компоненты из 255:

var color = [255, 0, 0],     //red in RYB
    complement = color.map(function(n){ return 255 - n; });  //green in RYB

ryb2rgb(complement);         //[0, 169, 51], which is green in RGB

Демо: http://jsfiddle.net/DerekL/3m53wbsc/

С помощью RYB легко увидеть, что коричневый - единственный цвет, не имеющий дополнительных цветов. Чтобы преобразовать HSL в RGB, см. Этот ответ: https://stackoverflow.com/a/9493060/283863

person Derek 朕會功夫    schedule 07.09.2014