Я считаю, что вопрос недостаточно ясен. AND, OR и т. Д. Являются логическими операторами. Многие языки также поддерживают побитовые версии. Итак, сначала вам нужно определить, что именно означает И-во или ИЛИ-два значения цвета. Что такое красный и зеленый? Это черный?
Если ответ на поставленный выше вопрос положительный, то вы, вероятно, захотите применить эти операторы в побитовом смысле к (целочисленному) RGB-представлению ваших цветов. В этом случае вам необходимо:
1. Преобразовать числа с плавающей точкой в (8-битное или другое разрешение) целые числа
2. Упакуйте 3 канала (или 4 с альфа-каналом) в одно слово (вероятно, 32-разрядное целое число)
3. Примените побитовый оператор
4. Распакуйте каналы и конвертируйте обратно в число с плавающей запятой.
Обратите внимание, что при преобразовании чисел с плавающей точкой вам нужно сначала умножить значение с плавающей запятой на MAX_COLOR (255 в вашем примере), а затем привести к приведению. В противном случае вы получите все каналы равными 0. Напротив, при обратном преобразовании в числа с плавающей запятой сначала приведите, а затем разделите на MAX_COLOR, чтобы нормализовать ваши значения.