Я ищу библиотеку / алгоритм / метод, чтобы взять 3 аддитивных или вычитающих цвета и определить, какая комбинация из двух приводит к некоторому цвету x
.
Это неправильный пример (так как я еще не очень разбираюсь в теории цвета), но я хочу проиллюстрировать суть дела. Допустим, у вас зеленовато-коричневый цвет #45512b
. Задача, которую необходимо решить, состоит в том, чтобы определить - для двух систем (аддитивной и вычитающей) - пару цветов, которые будут генерировать зеленовато-коричневый (данный цвет).
Итак, у вас есть значение "зеленовато-коричневый" #45512b
, и вы хотите знать, какие краски смешиваются вместе, чтобы сформировать этот цвет. Может быть, это #fff123
и #bbb456
, которые объединяются субтрактивно, образуя зеленовато-коричневый цвет (просто придумывая это). Затем для аддитивного смешивания, выяснение двух оттенков света из трех основных цветов света, используемых в вычислительных моделях, которые в сочетании образуют зеленовато-коричневый цвет.
В основном просто ищу это:
function additiveComponents(color) {
return [ a, b ]
}
function subtractiveComponents(color) {
return [ a, b ]
}
Цвет ввода не обязательно должен быть в шестнадцатеричном формате, подойдет любое из цветовых пространств. . Но в конце я хотел бы преобразовать два выходных значения обратно в шестнадцатеричное значение.
Я мог себе представить один наивный способ сделать это - использовать обратный алгоритм (алгоритм смешивания двух цветов в третий) и пробуйте каждую комбинацию цветов, пока не найдете нужную. Но это было бы супер неэффективно, гадая, есть ли лучший способ или стандартная техника.