Цветовой куб и цветовой компас

Цветовой куб и цветовой компас

Из курса Информатики средней школы известно, что всякий цвет можно получить смешением трёх основных цветов (красного (red), зелёного (green) и синего (blue) – отсюда аббревиатура RGB), взятых с разной интенсивностью. Сейчас существующая система RGB кодирует интенсивность основных цветов десятичным числом от 0 до 255. (или от 00 до FF в 16-ичной) В итоге можно отобразить 255^3=16581375 цветов (и это соответствует возможностям современных мониторов)
Понятно, что подсистема зрения человека не может воспринимать цвета с такой точностью. Этому соответствует и количество наименований цветов, которая, в зависимости от языка, насчитывает не более 200 наименований. Поэтому энтузиасты колористики придумали цветовой круг. (преимущесво которого в том, что на нём можно отображать любые цвета и оттенки) Причём каждый придумал свой, поэтому в интернете их ходит множество. Но вот незадача: 1)последовательность цветов на этих кругах разная и на многих из них она не соответствует классическому порядку цветов (а именно, поскольку основными цветами являются красный, зеленый и синий, то они должны образовывать равносторонний треугольник, то есть соответствовать центральным углам цветового круга 0, 120 и 240 градусов)
2)непонятно также, как интерпретировать удаление точки на цветовом круге от его центра. По идее, центр круга соответствует цвету (0,0,0), то есть черному. Но на цветовом круге Гетё в центре круга – белый цвет (а на периферии – черный)
Имеются на цветовом круге Гетё и другие несуразности. А именно, синяя и зеленая ветви его расположены смежно, тогда как известно, что смешение синего и зелёного цвета даёт солубой (cyan), То есть вестка голубого должна раполагаться точно посередине между зелёным и синим, но голубой почему-то появляется в ветке синего цвета.

Подумаем теперь, а логично ли отображать цвета на круге, да и вообще на плоскости, тогда как цвет – это точка в 3х-мерном пространстве? (ибо смешиваются 3 основных цвета) Поэтому логично отображать цвета на цветовом кубе. Причём в начале координат этого цветового пространства будет расположен черный цвет (0,0,0)(Bl), а в оппозитной ему вершине куба – белый (255,255,255)(W)
Кроме того сразу определимся, что ось Bl-R - это ось O-X (слева направо), Bl-G – O-Y (сзади-вперёд), Bl-B – O-Z (снизу-вверх) (ибо это требования правой декартовой системы координат)
Далее понятно, что на диагонали Bl-W цветового куба располагаются исключительно черно-белые цвета (полутона), то есть постепенные переходы от черного к белому цвету. Например, (127,127, 127)(напомню, что 127=[255/2])  – это идеально-серый цвет, и расположена эта точка точно в центре цветового куба.

Но почему идеально-серый, а не просто серый? Да потому что если взять на этой же диагонали (Bl-W) точку (63,63,63)(где 63=[127/2]), то мы получим черно-серый цвет (по-другому, четверь-серый, тогда идеально-серый логично назвать средне-серым), а точка же (191,191,191) – бело-серый цвет (или трёхчетвертной-серый. Хотя это, по большому счёту, неверно, т.к. в итоге мы приближаемся к белому, а не к серому (как следует из названия) Итак, корректируем названия:
1)Серый = черно-белый (то есть чёрный и белый 1:1),
2)черно-серый (изсера-чёрный) =чёрно-черно-белый (то есть чёрный и белый 3:1 )
3)бело-серый (изсера-белый) = бело-черно-белый (то есть чёрный и белый 1:3)
Названия цветов логичные, не правда ли?
Но увы, эти названия никто не употребляет.
Но самое интересное тут в чём? Что фактически-то мы получаем на всей этой диагонали серый цвет, т.к. цвет – это на самом деле пропорция интенсивностей основных цветов. А поэтому любой цвет, кодируемый как (а,а,а) (то есть все цвета смешаны в пропорции 1:1:1) – это фактически серый. Но почему серый? Ведь это же должен быть (и по праву будет) белый. Просто при уменьшении интенсивности смешиваемых цветов падает и интенсивность результирующего белого, а поэтому он постепенно угасает до … своего антипода … черного.
Как это свойство цвета (в данном случае белого) назвать? Пусть это будет яркость (lightness)

Но куда же подевались именно цвета? (а не чёрно-белости)
Для начала возьмём ребро куба Bl-R. И тут понятно, что движение по этой диагонали даёт всё более яркий красный цвет, начиная с абсолютно чёрного (и то же самое со всеми остальными основными цветами)
Далее, согласно классике, красный+зелёный (то есть 255,255, 0) – это идеально жёлтый цвет (yellow) (и его называют дополнительным к синему, т.к. Y+B=W. Отсюда понятно, что такое дополнительный цвет: Y=W-B) А значит, он будет расположен на вершине цветового куба, оппозитной точке Bl (0,0,0), но на диагонали уже грани (Bl,R,Y,G) Рассмотрим эту диагональ, Bl-Y. Что же она несёт на себе?
Да понятно, уже. Чисто жёлтый цвет, но разной яркости, от чёрного (0,0,0. Что, собственно, ничего общего не имеет с жёлтым. Но стоит только сделать (1,1,0), то вот уже и изжелта-черный) через тёмно-желтый (63,63,0)), средне-жёлтый (127,127,0) и ярко-жёлтый (чуть не написал бело-желтый, но это позже) (191,191,0) до идеально-жёлтого.
И яркость желтого здесь рассчитать предельно просто: L=63/255=0,25 для тёмно-желтого, 127/255=0,50 для средне-жёлтого, 191/255=0,75 для ярко-жёлтого.

Исходя из этого всё становится понятно и со всеми другими дополнительными цветами (пурпурным (magenta) и голубым (cyan)) Как и с цветами, расположенными на диагоналях дополнительных цветов.
Но вот какой цвет находится на пересечении, например, рёбер Bl-Y b и R-G (то есть в центре грани Bl-R-Y-G)
По идее, это (127, 127,0) - средне-жёлтый.
И  то же самое относится к центрам  граней Bl-R-M-B (средне-пурпурный) и Bl-G-C-B (средне-голубой)

Но что после этого можно сказать про центры граней R-Y-W-M, G-Y-W-C и B-M-W-C?
Да очень просто, координаты этих точек таковы:
1)255,127,127
2)127,255,127
2)127,127,255
Но как назвать такие цвета?
Помогут нам тут такие расчёты:
255,127,127=1*R+1/2*G+1/2*B  (перевод в десятичную систему) =
=1/2*(R+G+B)+1/4*R = ;*W+1/4*R
Как сиё понимать? Да так, что к чисто белому цвету подмешан, в данном случае, красный. Отсюда концентрация чисто красного по отношению к сумме = 1/4/(1/2+1/4)=1/3. И это – новое понятие в теории цветов. Назовём его насыщенностью (saturation) цвета. Таким образом, насыщенность цвета – это доля чистого цвета в его смеси с белым. И в данном случае это на 1/3 насыщенный красный цвет.
Легко также показать, что 127,255,127 – это на 1/3 насыщенный зелёный цвет, а 127,127,255  - на 1/3 насыщенный синий цвет, то есть смеси этих (чистых) цветов с белым цветом.
Отсюда понятно, что при движении по отрезку R-W происходит переход от 100%-но насыщенного красного цвета к 0%-но насыщеному (то есть идеально белому), а при движении по отрезкам G-W и B-W – то же самое, но соответственно для зелёного и синего цвета.

Но вот как получить разную насыщенность так называемых дополнительных цветов? Например, жёлтого? Да очень просто. Поскольку желтый – это смесь красного с зелёным (в пропорции 1:1), то возьмём такую смесь:
;*(1/2*R+1/2*G)+1/2*G
С одной стороны это жёлто-зелёный, ну а с другой это 1/4*W+1/4*G, то есть зелёно-белый.
Как бы навести порядок во всём этом хозяйстве? То есть в названиях цветов? Рассмотрим это чуть позже.

Интересно, а что происходит с цветом при движении по отрезкам Y-M, M-C, C-Y?
Напишем цветовые коды:Y=(255,255,0), M=(255,0,255), средняя точка этого отрезка, как мы установили выше – это (255,127,127), то есть на 1/3 насыщенный красный цвет. Таким образом, при движении по отрезку Y-M интенсивность зелёного падает от 255 до 0, а интенсивность синего  возрастает от 0 до 255. При этом мы переходим через красный цвет, но ненасыщенный. Что, собственно, и следовало ожидать.
После этого нетрудно понять, что же происходит с цветом при движении по отрезкам М-С =(255,0,255)-(127,127,255)-(0,255,255) и C-Y =(0,255,255)-(127,255,127)-(255,255,0).

Определим теперь, где расположена на цветовом кубе точка, соответствующая смешению в пропорции 1:1 жёлтого и красного цвета? А жёлтого и зелёного?
Понятно, что 1-ый цвет – это ;*(1/2*R+1/2*G)+1/2*R=3/4*R+1/4*G=(191,63,0) и он лежит на отрезке R-G, в конце 1-ой четверти этого отрезка.
А 2-ой цвет  - это (63, 191,0) и он лежит тоже на отрезке R-G, в конце 3-ей четверти этого отрезка.
А как назвать эти цвета?
1-ый, по идее – это красно-жёлтый. Почему не жёлто-красный? Да потому что жёлтый – это и так уже смешанный цвет, а мы к нему подбавляем еще немного основного. (отсюда нетрудно понять, почему (255,127,127) – разумно назвать красно-белым, а не наоборот. И так, кстати, можно именовать любые ненасыщенные цвета. Указывая при этом еще и насыщенность.) В русском языке такой цвет называется оранжевым. (а почему не апельсиновым? Ведь orange – это апельсин.)
Логичное название 2-го цвета (в 16-ичный код это (3F,BF,00)  – зелёно-жёлтый. Но если мы загянём на официальную таблицу наименований цветов, то наиболее близкий к этому цвет (6B8E23) именуется … нежно-оливковый. Почему так? Надо бы с этим разобраться.

Теперь наступила очередь следующего вопроса: как же определить собственно цветовой тон (hue)?
На 1-ый взгляд - это свойство цвета, определяемое пропорцией R:G:B. Но пример с различием насыщенности (чистых) цветов показывает, что это неверно. А верно то, что цветовой тон – это  некоторое специфическое свойство 100%-но насыщенного цвета, то есть такого цвета, в котором интенсивность как минимум одного основного цвета равна 0. (ибо только в этом случае не получается примеси белого)
А цвета, соответствующие этим требованиям, как легко увидеть, расположены в вершинах цветового куба (за исключением вершин Bl и W)
Отсюда возникает гениальная идея: спроецировать цветовой куб на плоскость, перпендикулярную диагонали W-Bl (в направлении от Bl к W) Ибо тогда мы получим не куб, а равносторонний 6-угольник, в вершинах которого находятся (по часовой стрелке) эти самые R, Y, G, C, B, M.
(А в центре – одновременно W и Bl, причём Bl– спереди, а W – сзади.)
Назовём эту проекцию цветовой компас (почему не цветовой круг - станет понятно позже)
И вот что еще понятно: все чистые цвета – расположены на периферии цветового компаса. И не только основные и дополнительные. Вот почему на цветовом компасе удобно определять цветовой тон. А именно как азимут данного цвета на цветовом компасе.

Так как красный (255,0,0) – это 1-ый цвет в тройке основных цветов, то  примем, что на цветовом компасе ему соответствует угол 0 град. Соответственно зелёный тогда (2-ой в тройке основных) – это 120 град, а синий – 240 град. Тогда дополнительным цветам будут соответствовать следующие углы:
h(Y)= 0+120/2=60 град,
h(С)= 120+60=180 град,
h(М)= 240+60=300 град.
Отсюда понятно, что если мы возьмём насыщенный зелёно-жёлтый, причём в пропорции 1:1 (63, 191,0), то получим hue=(h(G)+h(Y))/2=(120+60)/2=90 град.
Если же мы возьмём насыщенный оранжевый, то есть красно-жёлтый, то получим
hue=(h(R)+h(Y))/2=(0+60)/2=30 град.
Ну и так далее.
Но и эти 100%-насыщенные цвета можно сделать ненасыщенными, достаточно лишь немного добавить недостающего основного цвета. Например, если к чисто оранжевому (191,63,0) добавить столько же синего, вот так:
1/2*(3/4*R+1/4*G)+1/2*B,
то получим
То есть красно-cине-белый или оранжево-белый. Причем насыщенность оранжевого тут определяется так: (3/8+1/4)/(3/8+1/4+1/8)=5/8/(6/8)=5/6.

Но как понять красно-cине-белый? Это пурпурно-белый, что ли? Но это совсем другое, согласитесь, чем оранжево-белый. В чём же ошибка?
Чтобы разобраться в этом, давайте определим цветовой тон "оранжево-белого":
h(A+W)=1/2*(h(A)+h(B))=(30+240)/2=135 град.
Получается, что цветовой тон данного цвета находится между чисто зелёным и зелёно-голубым, то есть это зелёно-зелёно-голубой (а значит, практически зелёный)
Что за чушь, - скажет тут любой. Из оранжевого, добавив синий, получили вдруг практически зелёный. Значит, и здесь ошибка.
Давайте обратим внимание на то, что верно не только h(B)=240, но и h(B)=-120 (минус здесь означает, что мы отмеряем величину угла не по часовой стрелке, а против неё) Тогда получается, что
h(A+W)=1/2*(h(A)+h(B))=(30-120)/2=-45 = -45+360=315 град.
А это уже совсем другой цвет, красно-пурпурный. И вот это уже больше похоже на истину: оранжевый, добавим синего (да с гаком!) мы превратили ... даже не в красно-пурпурный (h=330), а в красно-пурпурно-пурпурный (h=315, то есть ближе к пурпурному, чем к красному). А точнее, в пурпурно-пурпурно-белый. Т.к. насыщенность данного цвета меньше 1.(s(A+B)<1)
Каков же отсюда вывод? Что при смешении цветов цветовой тон следует вычислять по мЕньшему углу между цветовыми тонами исходных цветов.
А для этого цветовые тона исходных цветов (то есть азимуты их) нужно определять по меньшему по модулю значению. (но учитывая их знак)

Теперь давайте обратим внимание, что в проекции цветового куба на плоскость часть точек-цветов отображаются в одной точке. И первый пример этого – точка W, ибо она попала в ту же проекцию, что и точка Bl.
Но, раз так, то и центр грани M-B-C-W (127,127, 255) (на 1/3 насыщенный синий цвет) отобразится в точку (127-127,127-127, 255-127)(0,0,127)(средне-синий, по яркости) , а центр грани Y-W-C-G (127,255,127) (на 1/3 насыщенный зелёный цвет – в точку (127-127,255-127,127-127)=(0,127,0)(средне-зелёный, по яркости) , центр грани M-W-Y-R (255,127,127) (на 1/3 насыщенный красный цвет) – в точку (255-127,127-127,127-127)=(127,0,0)(средне-красный, по яркости).
А кроме этого, понятно, еще и много других точек цветового куба на цветовом компасе «попадают» в одну точку. (И этого до сих пор никто не замечал, мы первые!)
А отсюда вывод: в проекции цветового куба на плоскость (цветовой компас) разные цвета отображаются в одной точке. (и в 1-ую очередь белый и чёрный) Разве это правильно?
Понятно, что нет. Но что же делать?
Получается такая гипотеза: уменьшение насыщенности цвета при некоторых условиях (а именно, при движении вдоль вектора W-Bl) эквивалентно уменьшению яркости этого чистого цвета.
А значит, это наложение (в одной проекции) двух частей цветового куба не только логично, но и правильно. (то есть эти цвета действительно, а не кажимо, идентичны) Но как это доказать?

Да никак не доказать! Потому что проекция объёмной фигуры на плоскость - это всегда потеря информации, вот цвета и смешались. Приведу как аналогию замену понятия приращение величины на понятие изменение величины. Понятно, что в последнем скрыта (потеряна) информация о том, в какую сторону изменилась данная величина, увеличилась или уменьшилась. Т.к. изменение - это модуль приращения.
Отсюда вывод: идея проекции цветового куба на цветовую плоскость (с получением цветового компаса) годится только для определения цветового тона цвета.
Который, впрочем, можно определить и просто по координатам цвета. (И, как это сделать, описано выше.) Причём на это совсем не влияет насыщенность цвета.
А использование цветового куба для построения цветового компаса помогает построить его, компаса, корректный вариант.


Рецензии