На входе массив из 7 цветов радуги.
Как можно рассчитать пропорции смешения цветов чтобы получить заданный? Например, я хочу получить цвет #617730, нужно рассчитать какие из 7 цветов радуги и в каких пропорциях нужно смешать.
Очевидно что для решения этой задачи нужно знать сам алгоритм смешивания. Если взять физический уровень - то масляные краски и акварель смешиваются совершенно по разному. А еще есть цвет и свет - там свои нюансы. И вот зная этот алгоритм - как из цвета а и цвета б получается цвет с - можно уже пытаться решить обратную задачу.
А если смешать 2 цвета, то ничего не получим разве?
Вопрос в том, какое соотношение должно быть при смешивании цветов. Набор цветов состоит из 7 цветов радуги.
Простой пример - если смешать все 7 цветов в соотношении 1:1, то получим белый цвет.
если смешать 7 цветов на бумаге то вы получите серую грязь, но никак не белый.
попробдуйте погуглить "цветовая модель" и в частности:
RGB - аддитивная цветовая модель - исопльзуйтеся для получения цветов на монитрах (девайсы активно излучающие свет)
CMYK - субтрактивная цветовая модель (исопльзуется для печати, то есть для получения цветов которые будут видны в отраженном свете, с бумаги например)
Альфред: Поскольку результат вы хотите получить в трёхмерном пространстве (RGB), то базис этого пространства не может содержать менее трёх векторов. Исключение - частные случаи, когда значения каких-либо координат вектора в заданном базисе равны нулю, тогда случай из трёхмерного переводится в двух-, одно- или нульмерный.
Rsa97 : также на коэффициенты смешения необходимо наложить ограничения 0<=Ki<=1 и SUM(Ki)=1, исходя из физического смысла задачи, что делает поиск не настолько тривиальным, как просто решение СЛУ. Мне представляется, что наиболее часто искомый ответ будет достигаться смешением 4 цветов радуги.
Дѣаволъ: Очень даже понятно. Любая длинна волны видимого спектра имеет свой цвет и свой коэффициент преломления. По этому возможно разложить видимый свет на спектр (радугу) с бесконечным количеством цветов. Сейчас условно считается, что четко различаемых цветов в спектре 7, ранее их было от 3 до 6, причем в разных культурах по разному.
По указанной мной ссылке есть Диаграмма xyY CIE 1931, по которой белый цвет можно получить из 2-х цветов. Только разложить его на "цвета радуги" уже не получится. Сейчас индекс цветопередачи ТМ-30-15 получают из 99 цветовым оттенкам.
Дѣаволъ: Белый цвет всегда можно разложить на спектр иначе этот цвет не белый. На этом приципе раболтает спектроанализатор.
Модель RGB принята в связи с особенностями человеческого зрения. Всем известно, что глаз содержит чувствительные к свету нервные окончания: палочки чувствительны к яркости (черно белое зрение) и колбочки чувствительные к цвету. Но мало кто знает, что колбочки бывают двух видов: чувствительные к "красному" и чувствительные "к синему" (на самом деле цвета там другие). Информация о зеленом цвете в мозг не передается, а вычисляется
Дѣаволъ: Разумеется. Вы путает понятия "цвет" - источник цвета и "фильтр" препятствие цвета. Красный фильтр пропускает только красный цвет, разумеется после него синий фильтр ничего не пропустит т.к пропускает только синий которого нет.
Но если вы будите освещать белую поверхность красным и синим светом одновременно в итоге получите фиолетовый
Задача сформулирована слишком общо, нужно смотреть конкретику и подробности.
В зависимости от них там может получиться как элементарщина (по типу ответа Юрий ), так и очень сложные вещи, уходящие в науку по самую макушку.
R = R1 + (R2 - R1) * Blend / 255;
G = G1 + (G2 - G1) * Blend / 255;
B = B1 + (B2 - B1) * Blend / 255;
где Blend = 0..255 как значения перехода одного цвета в другой, 127 - смешаны пополам...