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