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

Другие вопросы по тегам