Алгоритм расчета обратного цвета - PullRequest
26 голосов
/ 05 августа 2011

У меня есть цвет RGB в диапазоне от 0,0 до 1,0 для каждого фрагмента, мне нужен алгоритм для получения инверсии цвета, есть идеи, как мне это сделать?

Ответы [ 2 ]

35 голосов
/ 05 августа 2011
newR = 1.0 - r
newG = 1.0 - g
newB = 1.0 - b

Если цвет имеет предварительно умноженное значение альфа-канала, используйте альфа-канал вместо 1,0:

newR = a - r
newG = a - g
newB = a - b
9 голосов
/ 07 сентября 2017

Если вы используете значения RGB для 255, вы можете сделать что-то вроде этого:

newR = 255 - r;
newG = 255 - g;
newB = 255 - b;

Чтобы понять эту концепцию, представьте каждое значение в виде числовой линии, идущей от 0 до 255. Если вы отобразите число на этой числовой строке, то это число будет на расстоянии от начала числовой линии. Чтобы отрицать это, номер должен перейти на другой конец строки номера. Этот алгоритм в основном переворачивает числовую строку, не сдвигая ни начало, ни конец. Наша числовая строка от 0 до 255, поэтому, если число было 10 от начала (10), теперь оно будет 10 от конца (245), таким образом, отрицая цвет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...