Я пытаюсь смешать два исходных вектора RGB для создания одной трети "результирующий вектор", который является интуитивным соединением первых двух.
Идеально, я был бы в состоянии эмулировать "реальные характеристики смешивания краски", но для простоты, я пытаюсь найти метод, где результант смотрит интуитивно как то, что Вы получили бы от объединения двух исходных rgb's.
минимально, эти характеристики:
КРАСНЫЙ + ЧЕРНЫЙ = ТЕМНО-КРАСНЫЙ
КРАСНЫЙ + БЕЛЫЙ = СВЕТЛО-КРАСНЫЙ
оптимально, также с реальными характеристиками краски:
КРАСНЫЙ + СИНИЙ = ФИОЛЕТОВЫЙ
КРАСНЫЙ + ЖЕЛТЫЙ = ОРАНЖЕВЫЙ
(и т.д.)
--
Я в настоящее время делаю это "ленивый путь" путем добавления двух исходных векторов/255 RGB, затем нормализации (и умножения на 255). Так, использование этого: [Красный = <1,0,0> * 255] + [Синий = <0,0,1> * 255] дает Пурпурный = <1,0,1>/sqrt (2) * 255, хотя другие цвета менее интуитивны или даже видимы... Мне нужен лучший метод! Помогите:-),
То, что вы предложили, совпадает с средневзвешенным?
Average R = w1*R1 + w2*R2 + w3*R3 + ... + wn*Rn Average G = w1*G1 + w2*G2 + w3*G3 + ... + wn*Gn Average B = w1*B1 + w2*B2 + w3*B3 + ... + wn*Bn
w - это весовые дроби, а их сумма равна 1.
R1 - красный компонент первого цвета для смешивания, например.
Итак, если вы хотите равномерно смешать два цвета, это будет:
Average R = 0.5*R1 + 0.5*R2 Average G = 0.5*G1 + 0.5*G2 Average B = 0.5*B1 + 0.5*B2
Что касается сопоставления результирующего цвета с именованным цветом («темно-красный»), возможно, просто выполните таблицу поиска и выберите ближайший?
Проблема в том, что вы пытаетесь связать две разные теории цвета. RGB - это теория аддитивного цвета (цветной свет излучается источником). В этом случае, чем больше спектра вы добавляете к миксу, тем ближе вы подходите к белому.
Для «смешивания красок» вам необходимо эмулировать субтрактивную теорию цвета, которая определяет способ смешивания отраженных цветов. (например, отраженный свет, такой как краски, различные поверхности и т. д.) Вот обзор .
JavaScript на этой странице является ключом к тому, как вы могли бы преобразовать RGB в CMYK.
Я думаю, вам действительно стоит определить, что такое «+» в вашей цветовой схеме.
Исходя из ваших требований, я перевел их в приблизительные шестнадцатеричные цветовые коды (представление RGB можно легко вывести).
RED + BLACK = DARK RED #ff0000 + #000000 = #800000 RED + WHITE = LIGHT RED #ff0000 + #ffffff = #ff8080 optimally, also with real paint characteristics: RED + BLUE = PURPLE #ff0000 + #0000ff = #800080 RED + YELLOW = ORANGE #ff0000 + #ffff00 = #ff8000
Я не вижу определенного шаблона, по которому можно было бы разработать какие-то формулы для достижения этого.
Методы Джона и Нильса, вероятно, приблизятся к цветам, но, вероятно, не к точным значениям. Я предлагаю вам попробовать.
РЕДАКТИРОВАТЬ:
Обновлены неправильные цветовые коды. Что ж, теперь в этом больше смысла.