Как лучше сделать многомерную зависимость цветов к предмету?
Добрый вечер всем. Вопрос наверное сформулировал не так корректно, как стоило бы, но лучше не придумал. Суть такая: есть предмет, который имеет какой-то цвет, и нужно подобрать другие предметы которые подходят по цвету. Т.е есть таблица цветов, и нужно как-то сделать привязку цветов, которые подходят к друг другу. Долго думал, пытался по-разному реализовать, но проблема в том что например белый может сочетаться с черным и зеленым, а зеленый с синим, к примеру. Пока в голове только один вариант, именно делать прямую привязка, т.е хранить какие цвета сочитаюся, 1,2,3 , 2,5,9, 20,5,4 . Но таких вариантов куча, и мне кажется что это не самый рациональный способ. Заранее благодарен за ответы.
У любого стиля есть своя формулировка, которая выражается математически при помощи цифр, которыми в цифровом мире и записываются цвета. По этому если Вы хотите сделать свою политру для подбора цвета, то прямиком отправляйтесь на форумы художников для дальнейшего цу. Если же у Вас уже есть некоторое количество заготовок цвета, как например ограниченный каталог футболок и штанов и Вы хотите предлагать гармоничную цветовую композицию, то тут два варианта - руками сидеть и писать зависимости в конфиге или придумать какой-то парсер, который бы делал всю ручную работу за Вас.
Ваша сочетаемость цветов - это обычный граф в чистом виде. Вершины - цвета, ребро - факт сочетаемости двух цветов. Как хранить этот граф - дело десятое. Как вносить его в систему - тоже отдельный вопрос, хотя забивать конечно это все придется вручную, т.к. сочетаемость - это на 80-90% субъективное восприятие.
Для подбора N предметов разного цвета (ну или просто N различных цветов для M >= N различных предметов) найдите подграф с нужным количеством вершин, где все вершины связаны друг другом, включающий некоторые заданные вершины. Например, подграф из 3-х вершин, содержащий вершину "зеленый", при этом каждая вершина подграфа связана с другой вершиной ребром (т.е. длина пути всегда равна 1). Это значит, что в комплекте у вас будут только совместимые друг с другом цвета, один из которых - зеленый.
Можно увеличить длину пути до 2-х, тогда, если белый будет совместим с черным, черный - с зеленым, но белый НЕ совместим с зеленым, то тем не менее такой набор цветов будет приемлемым.