Поскольку я искал лучший способ сделать это, я наткнулся на руководство по Adobe Illustrator, в котором упоминается, как они создают дополнительные цвета. Они говорят:
Complement Изменяет каждый компонент цвета на новое значение на основе суммы самых высоких и самых низких значений RGB в выбранном цвете. Illustrator добавляет самые низкие и самые высокие значения RGB текущего цвета, а затем вычитает значение каждого компонента из этого числа, чтобы создать новые значения RGB. Например, предположим, что вы выбрали цвет со значением RGB 102 для красного, 153 для зеленого и 51 для синего. Illustrator добавляет высокие (153) и низкие (51) значения, чтобы получить новое значение (204). Каждое из значений RGB в существующем цвете вычитается из нового значения для создания новых дополнительных значений RGB: 204 - 102 (текущее значение красного) = 102 для нового значения красного, 204 - 153 (текущее значение зеленого) = 51 для нового значения зеленого и 204 - 51 (текущее значение синего) = 153 для нового значения синего.
Было бы не сложно сделать это программно и подумать, что на этот раз это может действительно сработать для того, что вы пытаетесь сделать.
Удачи!