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